Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Dec 2016 02:12:51 +0000 (UTC)
From:      Ngie Cooper <ngie@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r309865 - vendor/libarchive/dist/libarchive/test
Message-ID:  <201612120212.uBC2CpTL065735@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ngie
Date: Mon Dec 12 02:12:51 2016
New Revision: 309865
URL: https://svnweb.freebsd.org/changeset/base/309865

Log:
  Merge PR to address libarchive/test coverity issues
  
  Obtained from:	libarchive (f9e3de49fb294901374e0c8c6c2ceaeea7b6d6c0)

Modified:
  vendor/libarchive/dist/libarchive/test/read_open_memory.c
  vendor/libarchive/dist/libarchive/test/test_fuzz.c
  vendor/libarchive/dist/libarchive/test/test_read_disk_directory_traversals.c
  vendor/libarchive/dist/libarchive/test/test_read_set_format.c

Modified: vendor/libarchive/dist/libarchive/test/read_open_memory.c
==============================================================================
--- vendor/libarchive/dist/libarchive/test/read_open_memory.c	Mon Dec 12 02:11:30 2016	(r309864)
+++ vendor/libarchive/dist/libarchive/test/read_open_memory.c	Mon Dec 12 02:12:51 2016	(r309865)
@@ -86,21 +86,7 @@ static int
 read_open_memory_internal(struct archive *a, const void *buff,
     size_t size, size_t read_size, int level)
 {
-	struct read_memory_data *mine;
-
-	mine = (struct read_memory_data *)malloc(sizeof(*mine));
-	if (mine == NULL) {
-		archive_set_error(a, ENOMEM, "No memory");
-		return (ARCHIVE_FATAL);
-	}
-	memset(mine, 0, sizeof(*mine));
-	mine->start = mine->p = (const unsigned char *)buff;
-	mine->end = mine->start + size;
-	mine->read_size = read_size;
-	mine->copy_buff_offset = 32;
-	mine->copy_buff_size = read_size + mine->copy_buff_offset * 2;
-	mine->copy_buff = malloc(mine->copy_buff_size);
-	memset(mine->copy_buff, 0xA5, mine->copy_buff_size);
+	struct read_memory_data *mine = NULL;
 
 	switch (level) {
 	case 3:
@@ -109,6 +95,20 @@ read_open_memory_internal(struct archive
 		archive_read_set_open_callback(a, memory_read_open);
 		archive_read_set_skip_callback(a, memory_read_skip);
 	case 1:
+		mine = malloc(sizeof(*mine));
+		if (mine == NULL) {
+			archive_set_error(a, ENOMEM, "No memory");
+			return (ARCHIVE_FATAL);
+		}
+		memset(mine, 0, sizeof(*mine));
+		mine->start = mine->p = (const unsigned char *)buff;
+		mine->end = mine->start + size;
+		mine->read_size = read_size;
+		mine->copy_buff_offset = 32;
+		mine->copy_buff_size = read_size + mine->copy_buff_offset * 2;
+		mine->copy_buff = malloc(mine->copy_buff_size);
+		memset(mine->copy_buff, 0xA5, mine->copy_buff_size);
+
 		archive_read_set_read_callback(a, memory_read);
 		archive_read_set_close_callback(a, memory_read_close);
 		archive_read_set_callback_data(a, mine);
@@ -213,7 +213,8 @@ memory_read_close(struct archive *a, voi
 {
 	struct read_memory_data *mine = (struct read_memory_data *)client_data;
 	(void)a; /* UNUSED */
-	free(mine->copy_buff);
+	if (mine != NULL)
+		free(mine->copy_buff);
 	free(mine);
 	return (ARCHIVE_OK);
 }

Modified: vendor/libarchive/dist/libarchive/test/test_fuzz.c
==============================================================================
--- vendor/libarchive/dist/libarchive/test/test_fuzz.c	Mon Dec 12 02:11:30 2016	(r309864)
+++ vendor/libarchive/dist/libarchive/test/test_fuzz.c	Mon Dec 12 02:12:51 2016	(r309865)
@@ -104,16 +104,19 @@ test_fuzz(const struct files *filesets)
 			}
 			if (!assert(size < buffsize)) {
 				free(rawimage);
+				rawimage = NULL;
 				continue;
 			}
 		} else {
 			for (i = 0; filesets[n].names[i] != NULL; ++i)
 			{
 				tmp = slurpfile(&size, filesets[n].names[i]);
-				char *newraw = (char *)realloc(rawimage, oldsize + size);
+				char *newraw = realloc(rawimage, oldsize + size);
 				if (!assert(newraw != NULL))
 				{
 					free(rawimage);
+					rawimage = NULL;
+					free(tmp);
 					continue;
 				}
 				rawimage = newraw;
@@ -123,14 +126,21 @@ test_fuzz(const struct files *filesets)
 				free(tmp);
 			}
 		}
-		if (size == 0)
+		if (size == 0) {
+			free(rawimage);
+			rawimage = NULL;
 			continue;
+		}
 		image = malloc(size);
 		assert(image != NULL);
 		if (image == NULL) {
 			free(rawimage);
+			rawimage = NULL;
 			return;
 		}
+
+		assert(rawimage != NULL);
+
 		srand((unsigned)time(NULL));
 
 		for (i = 0; i < 1000; ++i) {
@@ -162,6 +172,7 @@ test_fuzz(const struct files *filesets)
 				Sleep(100);
 #endif
 			}
+			assert(f != NULL);
 			assertEqualInt((size_t)size, fwrite(image, 1, (size_t)size, f));
 			fclose(f);
 
@@ -195,7 +206,7 @@ test_fuzz(const struct files *filesets)
 				archive_read_close(a);
 			}
 			archive_read_free(a);
-}
+		}
 		free(image);
 		free(rawimage);
 	}

Modified: vendor/libarchive/dist/libarchive/test/test_read_disk_directory_traversals.c
==============================================================================
--- vendor/libarchive/dist/libarchive/test/test_read_disk_directory_traversals.c	Mon Dec 12 02:11:30 2016	(r309864)
+++ vendor/libarchive/dist/libarchive/test/test_read_disk_directory_traversals.c	Mon Dec 12 02:12:51 2016	(r309865)
@@ -1327,6 +1327,7 @@ test_callbacks(void)
 	if (assert((m = archive_match_new()) != NULL)) {
 		archive_entry_free(ae);
 		archive_read_free(a);
+		archive_match_free(m);
 		return;
 	}
 

Modified: vendor/libarchive/dist/libarchive/test/test_read_set_format.c
==============================================================================
--- vendor/libarchive/dist/libarchive/test/test_read_set_format.c	Mon Dec 12 02:11:30 2016	(r309864)
+++ vendor/libarchive/dist/libarchive/test/test_read_set_format.c	Mon Dec 12 02:12:51 2016	(r309865)
@@ -219,8 +219,8 @@ DEFINE_TEST(test_read_append_filter_wron
   /* bunzip2 will write to stderr, redirect it to a file */
   fflush(stderr);
   fgetpos(stderr, &pos);
-  fd = dup(fileno(stderr));
-  fp = freopen("stderr1", "w", stderr); 
+  assert((fd = dup(fileno(stderr))) != -1);
+  fp = freopen("stderr1", "w", stderr);
 #endif
 
   assert((a = archive_read_new()) != NULL);
@@ -238,10 +238,10 @@ DEFINE_TEST(test_read_append_filter_wron
   if (fp != NULL) {
     fflush(stderr);
     dup2(fd, fileno(stderr));
-    close(fd);
     clearerr(stderr);
-    fsetpos(stderr, &pos);
+    (void)fsetpos(stderr, &pos);
   }
+  close(fd);
   assertTextFileContents("bunzip2: (stdin) is not a bzip2 file.\n", "stderr1");
 #endif
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612120212.uBC2CpTL065735>