From owner-p4-projects@FreeBSD.ORG Wed Aug 1 14:59:59 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E8111106566C; Wed, 1 Aug 2012 14:59:58 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93038106564A for ; Wed, 1 Aug 2012 14:59:58 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 7BEEC8FC0C for ; Wed, 1 Aug 2012 14:59:58 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q71ExwSO012614 for ; Wed, 1 Aug 2012 14:59:58 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q71ExwVd012607 for perforce@freebsd.org; Wed, 1 Aug 2012 14:59:58 GMT (envelope-from brooks@freebsd.org) Date: Wed, 1 Aug 2012 14:59:58 GMT Message-Id: <201208011459.q71ExwVd012607@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 215229 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Aug 2012 15:00:00 -0000 http://p4web.freebsd.org/@@215229?ac=10 Change 215229 by brooks@brooks_ecr_current on 2012/08/01 14:59:27 Don't leak memory and fd's on a variety of errors. Reported by: rpaulo Affected files ... .. //depot/projects/ctsrd/beribsd/src/ctsrd/pictview/pictview.c#16 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/ctsrd/pictview/pictview.c#16 (text+ko) ==== @@ -491,21 +491,18 @@ char *kbuilder, *kconfig, *kdate, *kversion, *kvp; char *version_string; size_t len; - - image = malloc(sizeof(u_int32_t) * fb_width * fb_height); - if (image == NULL) - err(1, "show_about() malloc"); - fb_save(image); + ssize_t rlen; if ((fd = open("/dev/berirom", O_RDONLY)) == -1) { warn("Unable to open /dev/berirom"); return; } - if (read(fd, rombuf, sizeof(rombuf)) != sizeof(rombuf)) { - warn("Unable to read from /dev/berirom"); + rlen = read(fd, rombuf, sizeof(rombuf)); + close(fd); + if (rlen != sizeof(rombuf)) { + warnx("Unable to read from /dev/berirom"); return; } - close(fd); /* * bdate is the build date in BCD MMDDYYYY * i.e. 0x08302012 is August 30th, 2012 @@ -605,6 +602,16 @@ " Config: %s", /* No terminating new-line */ year, month, day, hour, minute, second, svnrev, kversion, kdate, kbuilder, kconfig); + if (version_string == NULL) { + warnx("asprintf"); + return; + } + + image = malloc(sizeof(u_int32_t) * fb_width * fb_height); + if (image == NULL) + err(1, "show_about() malloc"); + fb_save(image); + fb_dialog(FBDT_WEST2CLOSE, fb_colour(0, 0, 0), fb_colour(0, 0, 255), fb_colour(0, 0, 0), "About the CHERI Demo", version_string); @@ -612,6 +619,7 @@ free(version_string); fb_post(image); + free(image); }