diff --git a/src/ChangeLog b/src/ChangeLog index eccdebb2..c0dd819f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2005-04-17 Hrvoje Niksic + + * http.c (request_set_header): Free NAME when VALUE is NULL and + freeing the header name is requested. + 2005-04-17 Hrvoje Niksic * snprintf.c (fmtstr): Declare VALUE as const char *. diff --git a/src/http.c b/src/http.c index fd7ff440..c54eadf4 100644 --- a/src/http.c +++ b/src/http.c @@ -234,7 +234,13 @@ request_set_header (struct request *req, char *name, char *value, struct request_header *hdr; int i; if (!value) - return; + { + /* A NULL value is a no-op; if freeing the name is requested, + free it now to avoid leaks. */ + if (release_policy == rel_name || release_policy == rel_both) + xfree (name); + return; + } for (i = 0; i < req->hcount; i++) { hdr = &req->headers[i];