Merge pull request #178 from MisterDA/fixes
Fixes for issues reported by PVS-Studio
diff --git a/lib/zip_dirent.c b/lib/zip_dirent.c
index 91ff3c2..1691071 100644
--- a/lib/zip_dirent.c
+++ b/lib/zip_dirent.c
@@ -596,7 +596,7 @@
zde->extra_fields = _zip_ef_remove_internal(zde->extra_fields);
- return (zip_int64_t)(size + variable_size);
+ return (zip_int64_t)size + (zip_int64_t)variable_size;
}
diff --git a/lib/zip_source_file_stdio_named.c b/lib/zip_source_file_stdio_named.c
index 84f57a4..36fee45 100644
--- a/lib/zip_source_file_stdio_named.c
+++ b/lib/zip_source_file_stdio_named.c
@@ -206,6 +206,7 @@
if (fstat(fileno(ctx->f), &st) < 0) {
zip_error_set(&ctx->error, ZIP_ER_TMPOPEN, errno);
+ free(temp);
return -1;
}
diff --git a/lib/zip_string.c b/lib/zip_string.c
index a6edbc5..374bc3f 100644
--- a/lib/zip_string.c
+++ b/lib/zip_string.c
@@ -145,7 +145,7 @@
return NULL;
}
- if ((s->raw = (zip_uint8_t *)malloc((size_t)(length + 1))) == NULL) {
+ if ((s->raw = (zip_uint8_t *)malloc((size_t)length + 1)) == NULL) {
free(s);
return NULL;
}
diff --git a/regress/ziptool_regress.c b/regress/ziptool_regress.c
index cb48471..ce51fbd 100644
--- a/regress/ziptool_regress.c
+++ b/regress/ziptool_regress.c
@@ -110,7 +110,7 @@
idx = strtoull(argv[0], NULL, 10);
if (idx >= z_in_count) {
- fprintf(stderr, "invalid argument '%" PRIu64 "', only %d zip sources open\n", idx, z_in_count);
+ fprintf(stderr, "invalid argument '%" PRIu64 "', only %u zip sources open\n", idx, z_in_count);
return -1;
}
if (zip_close(z_in[idx]) < 0) {
diff --git a/src/zipcmp.c b/src/zipcmp.c
index a79c650..83b70fd 100644
--- a/src/zipcmp.c
+++ b/src/zipcmp.c
@@ -642,9 +642,9 @@
header_done = 1;
}
printf("--- %s ", e1->name);
- printf("comment %d\n", e1->comment_length);
+ printf("comment %" PRIu32 "\n", e1->comment_length);
printf("+++ %s ", e1->name);
- printf("comment %d\n", e2->comment_length);
+ printf("comment %" PRIu32 "\n", e2->comment_length);
}
ret = 1;
}
diff --git a/src/ziptool.c b/src/ziptool.c
index cb3d27f..cdcecc7 100644
--- a/src/ziptool.c
+++ b/src/ziptool.c
@@ -396,7 +396,7 @@
static void
progress_callback(zip_t *archive, double percentage, void *ud) {
- printf("%.1lf%% done\n", percentage * 100);
+ printf("%.1f%% done\n", percentage * 100);
progress_userdata.percentage = percentage;
}
@@ -480,7 +480,7 @@
method = get_compression_method(argv[1]);
flags = (zip_uint32_t)strtoull(argv[2], NULL, 10);
if (zip_set_file_compression(za, idx, method, flags) < 0) {
- fprintf(stderr, "can't set file compression method at index '%" PRIu64 "' to '%s', flags '%d': %s\n", idx, argv[1], flags, zip_strerror(za));
+ fprintf(stderr, "can't set file compression method at index '%" PRIu64 "' to '%s', flags '%" PRIu32 "': %s\n", idx, argv[1], flags, zip_strerror(za));
return -1;
}
return 0;