[trunk] remove all api with invalid FILE* parameters which could leads to issues...
[openjpeg.git] / src / lib / openjpip / jpipstream_manager.c
index 3227af755a4292fdb9614c9785dac760c77c32b8..6649129ce7b757db398e7873e9f18f63cc83cfa4 100644 (file)
@@ -76,19 +76,34 @@ Byte_t * jpipstream_to_pnm( Byte_t *jpipstream, msgqueue_param_t *msgqueue, Byte
   Byte_t *pnmstream;
   Byte_t *j2kstream; /* j2k or jp2 codestream */
   Byte8_t j2klen;
+  size_t retlen;
   FILE *fp;
   const char j2kfname[] = "tmp.j2k";
 
+  fp = fopen( j2kfname, "w+b");
+  if( !fp )
+    {
+    return NULL;
+    }
   j2kstream = recons_j2k( msgqueue, jpipstream, csn, fw, fh, &j2klen); 
+  if( !j2kstream )
+    {
+    fclose(fp);
+    remove( j2kfname);
+    return NULL;
+    }
 
-  fp = fopen( j2kfname, "w+b");
-  fwrite( j2kstream, j2klen, 1, fp);
+  retlen = fwrite( j2kstream, 1, j2klen, fp);
   opj_free( j2kstream);
-  fseek( fp, 0, SEEK_SET);
+  fclose(fp);
+  if( retlen != j2klen )
+    {
+    remove( j2kfname);
+    return NULL;
+    }
 
-  pnmstream = j2k_to_pnm( fp, ihdrbox);
+  pnmstream = j2k_to_pnm( j2kfname, ihdrbox);
 
-  fclose( fp);
   remove( j2kfname);
 
   return pnmstream;