[PATCH] don't deref NULL on dfopen failure; plug a FILE-sized leak
Jeff Darcy
jdarcy at redhat.com
Tue Sep 28 00:32:08 UTC 2010
On 09/27/2010 12:04 PM, Jim Meyering wrote:
> > From c058a6ee160dafffd612c1efde0399f18a8b0995 Mon Sep 17 00:00:00 2001
> From: Jim Meyering<meyering at redhat.com>
> Date: Mon, 27 Sep 2010 16:57:57 +0200
> Subject: [PATCH] don't deref NULL on dfopen failure; plug a FILE-sized leak
>
> * proxy.c (proxy_repl_cons, proxy_repl_prod): Handle fdopen failure
> and don't leak a FILE buffer.
>
ACK.
> ---
> proxy.c | 14 ++++++++++++--
> 1 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/proxy.c b/proxy.c
> index ba34b8e..385e9d4 100644
> --- a/proxy.c
> +++ b/proxy.c
> @@ -329,6 +329,11 @@ proxy_repl_prod (void *ctx)
> char *myurl;
> int chars;
>
> + if (fp == NULL) {
> + error(0, errno, "%s: fdopen failed", __func__);
> + return NULL;
> + }
> +
> chars = snprintf(addr,ADDR_SIZE,
> "http://%s:%u/%s",proxy_host,proxy_port,item->path);
> if (chars>= ADDR_SIZE) {
> @@ -369,7 +374,7 @@ proxy_repl_prod (void *ctx)
> done:
> DPRINTF("%s returning\n",__func__);
> /* Closing should signal to the consumer that we're finished. */
> - close(item->pipes[1]);
> + fclose(fp);
> return NULL;
> }
>
> @@ -495,6 +500,11 @@ proxy_repl_cons (void *ctx)
> char *myurl;
> int chars;
>
> + if (fp == NULL) {
> + error(0, errno, "%s: fdopen failed", __func__);
> + return THREAD_FAILED;
> + }
> +
> server = json_array_get(config,item->server);
> s_host = json_string_value(json_object_get(server,"host"));
> s_port = json_integer_value(json_object_get(server,"port"));
> @@ -588,7 +598,7 @@ proxy_repl_cons (void *ctx)
> }
>
> DPRINTF("%s returning\n",__func__);
> - close(item->pipes[0]);
> + fclose(fp);
> meta_got_copy(bucket,key,s_name);
> free(myurl);
> return NULL;
> --
> 1.7.3.264.g8bb1
>
More information about the iwhd-devel
mailing list