Skip site navigation (1)Skip section navigation (2)
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>