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
 }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to