Fix some issues reported by Coverity Scan (#846)
authorStefan Weil <sw@weilnetz.de>
Wed, 21 Sep 2016 19:15:25 +0000 (21:15 +0200)
committerMatthieu Darbois <mayeut@users.noreply.github.com>
Wed, 21 Sep 2016 19:15:25 +0000 (21:15 +0200)
* test_tile_decoder: Fix potential buffer overflow (coverity)

CID 1190155 (#1 of 1): Unbounded source buffer (STRING_SIZE)

Using a pointer instead of buffer of fixed size avoids the limit
for the length of the input file name.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
* test_tile_encoder: Fix potential buffer overflow (coverity)

CID 1190154 (#1 of 1): Unbounded source buffer (STRING_SIZE)

Using a pointer instead of buffer of fixed size avoids the limit
for the length of the output file name. This implies that the length
can exceed 255, so the data type for variable len had to be fixed, too.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
* openjpip: Initialize data before returning it

This fixes an error reported by Coverity:

CID 1190143 (#1 of 1): Uninitialized scalar variable (UNINIT)

Signed-off-by: Stefan Weil <sw@weilnetz.de>
src/lib/openjpip/j2kheader_manager.c
tests/test_tile_decoder.c
tests/test_tile_encoder.c

index 1e96451654dcadf7f5077505c07027c522abd0dc..519a47b55888cbb81495243b43e1ef983136dc81 100644 (file)
@@ -117,6 +117,7 @@ CODmarker_param_t get_CODmkrdata_from_j2kstream( Byte_t *CODstream)
 
   if( *CODstream++ != 0xff || *CODstream++ != 0x52){
     fprintf( FCGI_stderr, "Error, COD marker not found in the reconstructed j2kstream\n");
+    memset(&COD, 0, sizeof(COD));
     return COD;
   }
   
index 26d3a16c856f6193d98d1470bdc8b635a0eebd8d..e5b851e8fde1bdb3ac8afa614b65bf19f469e18d 100644 (file)
@@ -178,7 +178,7 @@ int main (int argc, char *argv[])
         int da_y0=0;
         int da_x1=1000;
         int da_y1=1000;
-        char input_file[64];
+        const char *input_file;
 
         /* should be test_tile_decoder 0 0 1000 1000 tte1.j2k */
         if( argc == 6 )
@@ -187,7 +187,7 @@ int main (int argc, char *argv[])
                 da_y0=atoi(argv[2]);
                 da_x1=atoi(argv[3]);
                 da_y1=atoi(argv[4]);
-                strcpy(input_file,argv[5]);
+                input_file = argv[5];
 
         }
         else
@@ -196,7 +196,7 @@ int main (int argc, char *argv[])
                 da_y0=0;
                 da_x1=1000;
                 da_y1=1000;
-                strcpy(input_file,"test.j2k");
+                input_file = "test.j2k";
         }
 
         if (! l_data) {
index d01a7e5245b4da50dd3cd2b1e9ed1b1d1c5121cd..bd3fe351aecec1313eb543fcd367021faf19f40f 100644 (file)
@@ -69,7 +69,7 @@ int main (int argc, char *argv[])
        opj_stream_t * l_stream;
        OPJ_UINT32 l_nb_tiles;
        OPJ_UINT32 l_data_size;
-       unsigned char len;
+       size_t len;
 
 #ifdef USING_MCT
        const OPJ_FLOAT32 l_mct [] =
@@ -96,7 +96,7 @@ int main (int argc, char *argv[])
   int tile_height;
   int comp_prec;
   int irreversible;
-  char output_file[64];
+  const char *output_file;
 
   /* should be test_tile_encoder 3 2000 2000 1000 1000 8 tte1.j2k */
   if( argc == 9 )
@@ -108,7 +108,7 @@ int main (int argc, char *argv[])
     tile_height = atoi( argv[5] );
     comp_prec = atoi( argv[6] );
     irreversible = atoi( argv[7] );
-    strcpy(output_file, argv[8] );
+    output_file = argv[8];
     }
   else
     {
@@ -119,7 +119,7 @@ int main (int argc, char *argv[])
     tile_height = 1000;
     comp_prec = 8;
     irreversible = 1;
-    strcpy(output_file, "test.j2k" );
+    output_file = "test.j2k";
     }
   if( num_comps > NUM_COMPS_MAX )
     {
@@ -228,7 +228,7 @@ int main (int argc, char *argv[])
        }
 
   /* should we do j2k or jp2 ?*/
-  len = (unsigned char)strlen( output_file );
+  len = strlen( output_file );
   if( strcmp( output_file + len - 4, ".jp2" ) == 0 )
     {
     l_codec = opj_create_compress(OPJ_CODEC_JP2);