PERFORCE change 215229 for review

Brooks Davis brooks at FreeBSD.org
Wed Aug 1 15:00:00 UTC 2012


http://p4web.freebsd.org/@@215229?ac=10

Change 215229 by brooks at 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);
 }
 
 


More information about the p4-projects mailing list