PERFORCE change 178286 for review

Garrett Cooper gcooper at FreeBSD.org
Sat May 15 05:00:06 UTC 2010


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

Change 178286 by gcooper at 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 *);
 


More information about the p4-projects mailing list