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