The following reply was made to PR mod_auth-any/4827; it has been noted by 
GNATS.

From: "Ralf S. Engelschall" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc:  Subject: Re: mod_auth-any/4827: A small memory leak in mod_auth_db.
Date: Sun, 28 Nov 1999 13:38:05 +0100

 In article <[EMAIL PROTECTED]> you wrote:
  
 >>Number:         4827
 >>Category:       mod_auth-any
 >>Synopsis:       A small memory leak in mod_auth_db.
 >>Confidential:   no
 >>Severity:       non-critical
 >>Priority:       medium
 >>Responsible:    apache
 >>State:          open
 >>Class:          sw-bug
 >>Submitter-Id:   apache
 >>Arrival-Date:   Thu Aug  5 22:10:02 PDT 1999
 >>Last-Modified:
 >>Originator:     [EMAIL PROTECTED]
 >>Organization:
 > apache
 >>Release:        1.2.x, 1.3.x
 >>Environment:
 > All platforms that support mod_auth_db.
 >>Description:
 > mod_auth_db.c contains the following code. The memory 
 > pointed to by d.data is malloc()'ed in the berkeley db
 > routines and is never free()'ed.
 > 
 > #ifdef DB2
 >     if (!((f->get) (f, NULL, &q, &d, 0))) {
 > #else
 >     if (!((f->get) (f, &q, &d, 0))) {
 > #endif
 >         pw = ap_palloc(r->pool, d.size + 1);
 >         strncpy(pw, d.data, d.size);
 >         pw[d.size] = '\0';      /* Terminate the string */
 >     }
 > 
 > this can be fixed with
 > 
 > #ifdef DB2
 >     if (!((f->get) (f, NULL, &q, &d, 0))) {
 > #else
 >     if (!((f->get) (f, &q, &d, 0))) {
 > #endif
 >         pw = ap_palloc(r->pool, d.size + 1);
 >         strncpy(pw, d.data, d.size);
 >         pw[d.size] = '\0';      /* Terminate the string */
 >         free( d.data );         /* Plug the leak --pm */
 >     }
 > 
 > No this isn't a critical problem. But it is untidy. ;-) 
 > 10000 hits per child with 150 children. It starts to add up.
 
 Hmm.... I've looked at DB 1.85 and DB 2.7.5 but I was still unable to see
 where it malloc()'s the data pointer.  I don't want to add the free() to
 mod_auth_db.c before I was able to verify this behaviour in Berkeley-DB, of
 course.  Also the man pages to not document this AFAIK. Can you give me more
 insights where it malloc()'s the stuff in Berkeley-DB and whether it is really
 _always_ malloc()'ed. I'd only a quick look at the DB code, but to me it
 looked that it at least doesn't _always_ malloc...
 
                                        Ralf S. Engelschall
                                        [EMAIL PROTECTED]
                                        www.engelschall.com

Reply via email to