I was checking a test app in valgrind and much to my surprise it was complaining about a memleak in libmicrohttpd.

In check_argument_match() a buffer is allocated using strdup() but freed nowhere.

I wouldn't have noticed this leak if it wasn't for valgrind because if a URI is requested without any arguments (my usual case)
the buffer that gets allocated has 'only' a length of 1 byte, thus memory usage will build up very slowly over time.

The patch attached fixes it.
Btw. the indentation of that file is a mess, tabs and spaces are mixed :-|

Regards,
Andreas
This commit is contained in:
Christian Grothoff
2015-06-04 11:37:05 +00:00
parent 31d84d44a3
commit e5e5034111
2 changed files with 14 additions and 2 deletions
+3
View File
@@ -1,3 +1,6 @@
Thu Jun 4 13:37:05 CEST 2015
Fixing memory leak in digest authentication. -AW
Wed Jun 03 21:23:47 CEST 2015
Add deprecation compiler messages for deprecated functions
and macros. -EG
+11 -2
View File
@@ -508,7 +508,10 @@ check_argument_match (struct MHD_Connection *connection,
connection,
argp);
if (MHD_YES != test_header (connection, argp, NULL))
return MHD_NO;
{
free(argb);
return MHD_NO;
}
num_headers++;
break;
}
@@ -527,10 +530,16 @@ check_argument_match (struct MHD_Connection *connection,
connection,
equals);
if (! test_header (connection, argp, equals))
return MHD_NO;
{
free(argb);
return MHD_NO;
}
num_headers++;
argp = amper;
}
free(argb);
/* also check that the number of headers matches */
for (pos = connection->headers_received; NULL != pos; pos = pos->next)