summaryrefslogtreecommitdiff
path: root/src/bin
diff options
context:
space:
mode:
authorEduardo Barretto <edusbarretto@gmail.com>2020-04-16 19:09:40 -0300
committerGitHub <noreply@github.com>2020-04-17 00:09:40 +0200
commit040e142288e90c9c2d46d25d0a27f828f968bb93 (patch)
tree48d747bb1bcdfa12c4b1cc3105e136e0fbfdb868 /src/bin
parent221a801a97a3ea968a311f7905c18a1eb7f034c4 (diff)
jp3d/jpwl/mj2/jpip: Fix resource leaks (#1226)
This issues were found by cppcheck and coverity.
Diffstat (limited to 'src/bin')
-rw-r--r--src/bin/jp3d/convert.c9
-rw-r--r--src/bin/jpip/opj_jpip_transcode.c4
-rw-r--r--src/bin/jpwl/convert.c10
-rw-r--r--src/bin/jpwl/opj_jpwl_compress.c15
-rw-r--r--src/bin/jpwl/opj_jpwl_decompress.c9
-rw-r--r--src/bin/mj2/mj2_to_metadata.c1
-rw-r--r--src/bin/mj2/opj_mj2_compress.c1
-rw-r--r--src/bin/mj2/opj_mj2_decompress.c4
8 files changed, 45 insertions, 8 deletions
diff --git a/src/bin/jp3d/convert.c b/src/bin/jp3d/convert.c
index acad8f82..4e4bea9c 100644
--- a/src/bin/jp3d/convert.c
+++ b/src/bin/jp3d/convert.c
@@ -280,6 +280,7 @@ opj_volume_t* pgxtovolume(char *relpath, opj_cparameters_t *parameters)
if (!sliceno) {
fprintf(stdout,
"[ERROR] No slices with this pattern founded !! Please check input volume name\n");
+ closedir(dirp);
return NULL;
}
/*if ( maxslice != sliceno) {
@@ -317,6 +318,7 @@ opj_volume_t* pgxtovolume(char *relpath, opj_cparameters_t *parameters)
} else {
fprintf(stdout, "[ERROR] Bad pgx header, please check input file\n");
fclose(f);
+ closedir(dirp);
return NULL;
}
@@ -396,9 +398,7 @@ opj_volume_t* pgxtovolume(char *relpath, opj_cparameters_t *parameters)
fclose(f);
} /* for s --> sliceno*/
comp->bpp = int_floorlog2(maxvalue) + 1;
- if (sliceno != 1) {
- closedir(dirp);
- }
+ closedir(dirp);
/*dump_volume(stdout, volume);*/
return volume;
}
@@ -581,6 +581,7 @@ opj_volume_t* bintovolume(char *filename, char *fileimg,
f = fopen(filename, "rb");
if (!f) {
fprintf(stdout, "[ERROR] Failed to open %s for reading !!\n", filename);
+ opj_free(volume);
return 0;
}
@@ -918,7 +919,7 @@ opj_volume_t* imgtovolume(char *fileimg, opj_cparameters_t *parameters)
f = fopen(filename, "rb");
if (!f) {
fprintf(stderr, "[ERROR] Failed to open %s for reading !!\n", filename);
- fclose(f);
+ opj_free(volume);
return 0;
}
diff --git a/src/bin/jpip/opj_jpip_transcode.c b/src/bin/jpip/opj_jpip_transcode.c
index 6cd2604d..bedd5cf9 100644
--- a/src/bin/jpip/opj_jpip_transcode.c
+++ b/src/bin/jpip/opj_jpip_transcode.c
@@ -49,12 +49,14 @@ static int jpip_to_jp2(char *argv[])
dec = init_jpipdecoder(OPJ_TRUE);
if (!(fread_jpip(argv[1], dec))) {
+ destroy_jpipdecoder(&dec);
return 1;
}
decode_jpip(dec);
if (!(fwrite_jp2k(argv[2], dec))) {
+ destroy_jpipdecoder(&dec);
return 1;
}
@@ -83,12 +85,14 @@ static int jpip_to_j2k(char *argv[])
dec = init_jpipdecoder(OPJ_FALSE);
if (!(fread_jpip(argv[1], dec))) {
+ destroy_jpipdecoder(&dec);
return 1;
}
decode_jpip(dec);
if (!(fwrite_jp2k(argv[2], dec))) {
+ destroy_jpipdecoder(&dec);
return 1;
}
diff --git a/src/bin/jpwl/convert.c b/src/bin/jpwl/convert.c
index e6feea50..b7fb5b5c 100644
--- a/src/bin/jpwl/convert.c
+++ b/src/bin/jpwl/convert.c
@@ -465,6 +465,7 @@ int imagetotga(opj_image_t * image, const char *outfile)
|| (image->comps[0].prec != image->comps[i + 1].prec)) {
fprintf(stderr,
"Unable to create a tga file with such J2K image charateristics.");
+ fclose(fdest);
return 1;
}
}
@@ -478,6 +479,7 @@ int imagetotga(opj_image_t * image, const char *outfile)
/* Write TGA header */
bpp = write_alpha ? 32 : 24;
if (!tga_writeheader(fdest, bpp, width, height, OPJ_TRUE)) {
+ fclose(fdest);
return 1;
}
@@ -510,6 +512,7 @@ int imagetotga(opj_image_t * image, const char *outfile)
res = fwrite(&value, 1, 1, fdest);
if (res < 1) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
+ fclose(fdest);
return 1;
}
@@ -517,6 +520,7 @@ int imagetotga(opj_image_t * image, const char *outfile)
res = fwrite(&value, 1, 1, fdest);
if (res < 1) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
+ fclose(fdest);
return 1;
}
@@ -524,6 +528,7 @@ int imagetotga(opj_image_t * image, const char *outfile)
res = fwrite(&value, 1, 1, fdest);
if (res < 1) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
+ fclose(fdest);
return 1;
}
@@ -533,12 +538,15 @@ int imagetotga(opj_image_t * image, const char *outfile)
res = fwrite(&value, 1, 1, fdest);
if (res < 1) {
fprintf(stderr, "failed to write 1 byte for %s\n", outfile);
+ fclose(fdest);
return 1;
}
}
}
}
+ fclose(fdest);
+
return 0;
}
@@ -832,6 +840,7 @@ opj_image_t* bmptoimage(const char *filename, opj_cparameters_t *parameters)
RGB = (unsigned char *) malloc(W * H * sizeof(unsigned char));
if (fread(RGB, sizeof(unsigned char), W * H, IN) != W * H) {
+ fclose(IN);
free(table_R);
free(table_G);
free(table_B);
@@ -1505,6 +1514,7 @@ int imagetopgx(opj_image_t * image, const char *outfile)
fdest = fopen(name, "wb");
if (!fdest) {
fprintf(stderr, "ERROR -> failed to open %s for writing\n", name);
+ free(name);
return 1;
}
/* don't need name anymore */
diff --git a/src/bin/jpwl/opj_jpwl_compress.c b/src/bin/jpwl/opj_jpwl_compress.c
index c17486a0..ccf03615 100644
--- a/src/bin/jpwl/opj_jpwl_compress.c
+++ b/src/bin/jpwl/opj_jpwl_compress.c
@@ -1681,8 +1681,15 @@ int main(int argc, char **argv)
if (dirptr) {
dirptr->filename_buf = (char*)malloc(num_images * OPJ_PATH_LEN * sizeof(
char)); /* Stores at max 10 image file names*/
- dirptr->filename = (char**) malloc(num_images * sizeof(char*));
if (!dirptr->filename_buf) {
+ free(parameters.cp_comment);
+ free(dirptr);
+ return 0;
+ }
+ dirptr->filename = (char**) malloc(num_images * sizeof(char*));
+ if (!dirptr->filename) {
+ free(parameters.cp_comment);
+ free(dirptr);
return 0;
}
for (i = 0; i < num_images; i++) {
@@ -1690,9 +1697,13 @@ int main(int argc, char **argv)
}
}
if (load_images(dirptr, img_fol.imgdirpath) == 1) {
+ free(parameters.cp_comment);
+ free(dirptr);
return 0;
}
if (num_images == 0) {
+ free(parameters.cp_comment);
+ free(dirptr);
fprintf(stdout, "Folder is empty\n");
return 0;
}
@@ -1850,6 +1861,7 @@ int main(int argc, char **argv)
if (res < (size_t)codestream_length) { /* FIXME */
fprintf(stderr, "failed to write %d (%s)\n", codestream_length,
parameters.outfile);
+ fclose(f);
return 1;
}
fclose(f);
@@ -1914,6 +1926,7 @@ int main(int argc, char **argv)
if (res < (size_t)codestream_length) { /* FIXME */
fprintf(stderr, "failed to write %d (%s)\n", codestream_length,
parameters.outfile);
+ fclose(f);
return 1;
}
fclose(f);
diff --git a/src/bin/jpwl/opj_jpwl_decompress.c b/src/bin/jpwl/opj_jpwl_decompress.c
index ffe84e54..a73be1c3 100644
--- a/src/bin/jpwl/opj_jpwl_decompress.c
+++ b/src/bin/jpwl/opj_jpwl_decompress.c
@@ -597,11 +597,16 @@ int main(int argc, char **argv)
if (dirptr) {
dirptr->filename_buf = (char*)malloc(num_images * OPJ_PATH_LEN * sizeof(
char)); /* Stores at max 10 image file names*/
- dirptr->filename = (char**) malloc(num_images * sizeof(char*));
-
if (!dirptr->filename_buf) {
+ free(dirptr);
+ return 1;
+ }
+ dirptr->filename = (char**) malloc(num_images * sizeof(char*));
+ if (!dirptr->filename) {
+ free(dirptr);
return 1;
}
+
for (i = 0; i < num_images; i++) {
dirptr->filename[i] = dirptr->filename_buf + i * OPJ_PATH_LEN;
}
diff --git a/src/bin/mj2/mj2_to_metadata.c b/src/bin/mj2/mj2_to_metadata.c
index 44858c86..27f164d7 100644
--- a/src/bin/mj2/mj2_to_metadata.c
+++ b/src/bin/mj2/mj2_to_metadata.c
@@ -304,6 +304,7 @@ int main(int argc, char *argv[])
xmlout = fopen(outfile, "w"); /* was: argv[2] */
if (!xmlout) {
fprintf(stderr, "Failed to open %s for writing.\n", outfile); /* was: argv[2] */
+ fclose(file);
return 1;
}
// Leave it open
diff --git a/src/bin/mj2/opj_mj2_compress.c b/src/bin/mj2/opj_mj2_compress.c
index c61b4c92..8386ba0e 100644
--- a/src/bin/mj2/opj_mj2_compress.c
+++ b/src/bin/mj2/opj_mj2_compress.c
@@ -708,6 +708,7 @@ int main(int argc, char **argv)
yuv_num_frames(&movie->tk[0], mj2_parameters.infile);
if (movie->tk[0].num_samples == 0) {
+ fclose(mj2file);
return 1;
}
diff --git a/src/bin/mj2/opj_mj2_decompress.c b/src/bin/mj2/opj_mj2_decompress.c
index 6b26d563..6d1a9616 100644
--- a/src/bin/mj2/opj_mj2_decompress.c
+++ b/src/bin/mj2/opj_mj2_decompress.c
@@ -99,8 +99,9 @@ int main(int argc, char *argv[])
/* Checking output file */
outfile = fopen(argv[2], "w");
- if (!file) {
+ if (!outfile) {
fprintf(stderr, "failed to open %s for writing\n", argv[2]);
+ fclose(file);
return 1;
}
fclose(outfile);
@@ -169,6 +170,7 @@ int main(int argc, char *argv[])
if ((frame_codestream = (unsigned char*)
realloc(frame_codestream, max_codstrm_size)) == NULL) {
printf("Error reallocation memory\n");
+ free(frame_codestream);
return 1;
};
}