From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tobias Klauser Date: Tue, 17 Jun 2008 22:47:33 +0000 Subject: [PATCH] Check realloc return value in udev collect utility Message-Id: <20080617224733.GA23091@distanz.ch> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-hotplug@vger.kernel.org Hi, In extras/collect/collect.c a recent commit introduced reallocation of a buffer. Though the return value of realloc() is not checked. The attached patch fixes this and also changes the data type of bufsize to size_t which makes more sense and silences a GCC warning about comparing unsigned and signed integers. Cheers, Tobias diff --git a/extras/collect/collect.c b/extras/collect/collect.c index feb0e75..9fb6737 100644 --- a/extras/collect/collect.c +++ b/extras/collect/collect.c @@ -53,7 +53,7 @@ static LIST_HEAD(bunch); static int debug; /* This can increase dynamically */ -static int bufsize = BUFSIZE; +static size_t bufsize = BUFSIZE; static void sig_alrm(int signo) { @@ -272,8 +272,15 @@ static int missing(int fd) ret++; } else { while (strlen(him->name)+1 >= bufsize) { + char *tmpbuf; + bufsize = bufsize << 1; - buf = realloc(buf, bufsize); + tmpbuf = realloc(buf, bufsize); + if (!tmpbuf) { + free(buf); + return -1; + } + buf = tmpbuf; } snprintf(buf, strlen(him->name)+2, "%s ", him->name); write(fd, buf, strlen(buf));