apache
File descriptor leak ("dbg") with DEBUG_CGI.
Return statement occurs before freeing the "dbg" pointer, so we have a leak.
Bug fixed by commit 4945115b2e7
| Type | FileDescriptorLeak |
| Config | DEBUG_CGI (1st degree) |
| Fix-in | code |
| Location | modules/generators/ |
#include <stdio.h>
#include <stdlib.h>
void run_cgi_child()
{
#ifdef DEBUG_CGI
#ifdef OS2
FILE *dbg = fopen("con", "w");
#else
FILE *dbg = fopen("/dev/tty", "w");
#endif
#endif
#ifdef DEBUG_CGI
fprintf(dbg, "Environment\n");
#endif
if(rand() % 2)
return; // ERROR: dbg is leaked
#ifdef DEBUG_CGI
fclose(dbg);
#endif
return;
}
void cgi_handler()
{
run_cgi_child();
}
int main(void)
{
cgi_handler();
return 0;
}
. call modules/generators/mod_cgi.c:743:cgi_handler()
. 826: run_cgi_child()
.. call modules/generators/mod_cgi.c:371:run_cgi_child()
.. // if DEBUG_CGI and OS2 are enabled
.. 395: FILE *dbg = fopen("con", "w");
.. ERROR 467: return APR_EBADF;