From owner-freebsd-bugs@FreeBSD.ORG Tue Jul 12 18:40:16 2005 Return-Path: X-Original-To: freebsd-bugs@hub.freebsd.org Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 29C0B16A41C for ; Tue, 12 Jul 2005 18:40:16 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id DD95543D5C for ; Tue, 12 Jul 2005 18:40:15 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.3/8.13.3) with ESMTP id j6CIeFd3070089 for ; Tue, 12 Jul 2005 18:40:15 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.3/8.13.1/Submit) id j6CIeFsd070088; Tue, 12 Jul 2005 18:40:15 GMT (envelope-from gnats) Date: Tue, 12 Jul 2005 18:40:15 GMT Message-Id: <200507121840.j6CIeFsd070088@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: Dan Lukes Cc: Subject: Re: bin/83338: [ PATCH ] libc's getent() don't check for malloc failure X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Dan Lukes List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jul 2005 18:40:16 -0000 The following reply was made to PR bin/83338; it has been noted by GNATS. From: Dan Lukes To: bug-followup@FreeBSD.org Cc: Subject: Re: bin/83338: [ PATCH ] libc's getent() don't check for malloc failure Date: Tue, 12 Jul 2005 20:35:15 +0200 This is a multi-part message in MIME format. --------------070009010608060701060504 Content-Type: text/plain; charset=ISO-8859-2; format=flowed Content-Transfer-Encoding: 7bit I'm sorry, the incorrect patch file has been attached. The correct one follows. Dan -- Dan Lukes SISAL MFF UK AKA: dan@obluda.cz, dan@freebsd.cz,dan@kolej.mff.cuni.cz --------------070009010608060701060504 Content-Type: text/plain; name="x" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="x" --- lib/libc/gen/getcap.c.ORIG Thu Jan 2 20:26:24 2003 +++ lib/libc/gen/getcap.c Tue Jul 12 20:30:53 2005 @@ -193,7 +193,7 @@ { DB *capdbp; char *r_end, *rp, **db_p; - int myfd, eof, foundit, retval, clen; + int myfd, eof, foundit, retval; char *record, *cbuf; int tc_not_resolved; char pbuf[_POSIX_PATH_MAX]; @@ -255,14 +255,16 @@ return (retval); } /* save the data; close frees it */ - clen = strlen(record); - cbuf = malloc(clen + 1); - memcpy(cbuf, record, clen + 1); + if ((cbuf = strdup(record)) == NULL) { + capdbp->close(capdbp); + errno = ENOMEM; + return (-2); + } if (capdbp->close(capdbp) < 0) { free(cbuf); return (-2); } - *len = clen; + *len = strlen(cbuf); *cap = cbuf; return (retval); } else { --------------070009010608060701060504--