svn commit: r309865 - vendor/libarchive/dist/libarchive/test
Ngie Cooper
ngie at FreeBSD.org
Mon Dec 12 02:12:53 UTC 2016
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
}
More information about the svn-src-all
mailing list