Date: Sat, 15 May 2010 05:00:03 GMT From: Garrett Cooper <gcooper@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 178286 for review Message-ID: <201005150500.o4F503i3035213@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@178286?ac=10 Change 178286 by gcooper@starr-bastion on 2010/05/15 04:59:21 1. Fix the prototype mismatch for unpack_to_buffer function. 2. Nuke all of the user-specifiable data as I'm almost positive that the user specified buffer never be large enough to fit, and whether or not the user was specifying heap or stack based buffers would be problematic to determine. Affected files ... .. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/file.c#10 edit .. //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/pkg.h#5 edit Differences ... ==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/file.c#10 (text+ko) ==== @@ -354,11 +354,11 @@ * returns NULL on failure. */ char* -unpack_to_buffer(char *buffer, const char *pkg, const char *file) +unpack_to_buffer(const char *pkg, const char *file) { FILE *fd = NULL; - char *buf = buffer; + char *buf = NULL; struct stat sb; if ((fd = unpack_to_fd(pkg, file)) != NULL) { @@ -370,22 +370,12 @@ * to malloc on the fly and let the user deal with it * later. */ - if (buf != NULL) - buf = malloc(sb.st_size); + buf = malloc(sb.st_size); if (buf != NULL) { - if (fread(buf, sb.st_size, 1, fd) != sb.st_size) { - - /* - * Don't try to free user specified - * memory. - */ - if (buffer == NULL) - free(buf); - + free(buf); } - } } ==== //depot/projects/soc2007/gcooper-pkg_install-enhancements-simplified/lib/libpkg/pkg.h#5 (text+ko) ==== @@ -189,8 +189,7 @@ void copy_hierarchy(const char *, const char *, Boolean); int delete_hierarchy(const char *, Boolean, Boolean); int unpack(const char *, const char *); -char* unpack_to_buffer(struct archive *archive, const char *, - const char *); +char* unpack_to_buffer(const char *, const char *); FILE* unpack_to_fd(const char *, const char *); void format_cmd(char *, int, const char *, const char *, const char *);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005150500.o4F503i3035213>
