diff --git a/NEWS b/NEWS index 10f871cd..3f2233e9 100644 --- a/NEWS +++ b/NEWS @@ -62,6 +62,7 @@ NEWS * fix splitting of auth-ldap filter * workaround ldap connection leak if a ldap connection failed (restarting ldap) * fix auth.backend.ldap.bind-dn/pw problems (only read from global context for temporary ldap reconnects, thx ruskie) + * fix memleak in request header parsing (#1774, thx qhy) - 1.4.19 - 2008-03-10 diff --git a/src/request.c b/src/request.c index 42988732..5a02aea8 100644 --- a/src/request.c +++ b/src/request.c @@ -825,6 +825,7 @@ int http_request_parse(server *srv, connection *con) { "request-header:\n", con->request.request); } + array_insert_unique(con->request.headers, (data_unset *)ds); return 0; } @@ -874,6 +875,7 @@ int http_request_parse(server *srv, connection *con) { "request-header:\n", con->request.request); } + array_insert_unique(con->request.headers, (data_unset *)ds); return 0; } } else if (cmp > 0 && 0 == (cmp = buffer_caseless_compare(CONST_BUF_LEN(ds->key), CONST_STR_LEN("Expect")))) { @@ -911,6 +913,7 @@ int http_request_parse(server *srv, connection *con) { "request-header:\n", con->request.request); } + array_insert_unique(con->request.headers, (data_unset *)ds); return 0; } } else if (cmp > 0 && 0 == (cmp = buffer_caseless_compare(CONST_BUF_LEN(ds->key), CONST_STR_LEN("If-Modified-Since")))) { @@ -936,6 +939,7 @@ int http_request_parse(server *srv, connection *con) { "request-header:\n", con->request.request); } + array_insert_unique(con->request.headers, (data_unset *)ds); return 0; } } else if (cmp > 0 && 0 == (cmp = buffer_caseless_compare(CONST_BUF_LEN(ds->key), CONST_STR_LEN("If-None-Match")))) { @@ -953,6 +957,7 @@ int http_request_parse(server *srv, connection *con) { "request-header:\n", con->request.request); } + array_insert_unique(con->request.headers, (data_unset *)ds); return 0; } } else if (cmp > 0 && 0 == (cmp = buffer_caseless_compare(CONST_BUF_LEN(ds->key), CONST_STR_LEN("Range")))) { @@ -976,6 +981,7 @@ int http_request_parse(server *srv, connection *con) { "request-header:\n", con->request.request); } + array_insert_unique(con->request.headers, (data_unset *)ds); return 0; } }