[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