cppcheck fix for openjpip

This commit is contained in:
szukw000 2016-04-20 17:06:37 +02:00 committed by Julien Malik
parent e1a93d9e59
commit f2d4883be4
33 changed files with 527 additions and 197 deletions

View File

@ -59,7 +59,7 @@ int main(int argc, char *argv[]){
dec_server_record_t *server_record; dec_server_record_t *server_record;
client_t client; client_t client;
int port = 50000; int port = 50000;
int erreur; int erreur = 0;
(void)erreur; (void)erreur;
if( argc > 1) if( argc > 1)

View File

@ -121,6 +121,11 @@ FILE * open_jp2file( const char filename[])
} }
data = (char *)malloc( 12); /* size of header */ data = (char *)malloc( 12); /* size of header */
if(data == NULL){
fprintf(stderr,"open_jp2file: memory out\n");
fclose(fp);
return NULL;
}
if( fread( data, 12, 1, fp) != 1){ if( fread( data, 12, 1, fp) != 1){
free( data); free( data);
fclose(fp); fclose(fp);
@ -170,7 +175,11 @@ char * read_xmlfile( const char filename[], long *fsize)
} }
data = (char *)malloc( (size_t)*fsize); data = (char *)malloc( (size_t)*fsize);
if(data == NULL){
fprintf(stderr, "read_xmlfile: memory out\n");
fclose(fp);
return NULL;
}
if( fread( data, (size_t)*fsize, 1, fp) != 1){ if( fread( data, (size_t)*fsize, 1, fp) != 1){
fprintf( stderr, "XML file %s broken (read error)\n", filename); fprintf( stderr, "XML file %s broken (read error)\n", filename);
free( data); free( data);

View File

@ -29,6 +29,7 @@
*/ */
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include "openjpip.h" #include "openjpip.h"
/*! \file /*! \file

View File

@ -80,7 +80,7 @@ install(TARGETS openjpip
if(BUILD_JPIP_SERVER) if(BUILD_JPIP_SERVER)
add_library(openjpip_server STATIC ${OPENJPIP_SRCS} ${SERVER_SRCS}) add_library(openjpip_server STATIC ${OPENJPIP_SRCS} ${SERVER_SRCS})
target_link_libraries(openjpip_server ${FCGI_LIBRARIES} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) target_link_libraries(openjpip_server ${FCGI_LIBRARIES} ${CURL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${OPENJPEG_LIBRARY_NAME})
set_target_properties(openjpip_server set_target_properties(openjpip_server
PROPERTIES COMPILE_FLAGS "-DSERVER") PROPERTIES COMPILE_FLAGS "-DSERVER")
install(TARGETS openjpip_server install(TARGETS openjpip_server

View File

@ -49,7 +49,8 @@ boxlist_param_t * gene_boxlist(void)
{ {
boxlist_param_t *boxlist; boxlist_param_t *boxlist;
boxlist = (boxlist_param_t *)malloc( sizeof(boxlist_param_t)); boxlist = (boxlist_param_t *)opj_malloc( sizeof(boxlist_param_t));
if(boxlist == NULL) return NULL;
boxlist->first = NULL; boxlist->first = NULL;
boxlist->last = NULL; boxlist->last = NULL;
@ -73,8 +74,10 @@ boxlist_param_t * get_boxstructure( int fd, OPJ_OFF_T offset, OPJ_SIZE_T length)
assert( (OPJ_OFF_T)box->length >= 0); assert( (OPJ_OFF_T)box->length >= 0);
pos += (OPJ_OFF_T)box->length; pos += (OPJ_OFF_T)box->length;
if( !boxlist) if( !boxlist){
boxlist = gene_boxlist(); boxlist = gene_boxlist();
if(boxlist == NULL) break;
}
insert_box_into_list( box, boxlist); insert_box_into_list( box, boxlist);
}while( pos < offset+(OPJ_OFF_T)length); }while( pos < offset+(OPJ_OFF_T)length);
@ -103,7 +106,7 @@ box_param_t * gene_boxbyOffset( int fd, OPJ_OFF_T offset)
if( !isalpha(boxtype[0]) || !isalpha(boxtype[1]) || if( !isalpha(boxtype[0]) || !isalpha(boxtype[1]) ||
(!isalnum(boxtype[2])&&!isspace(boxtype[2])) || (!isalnum(boxtype[2])&&!isspace(boxtype[2])) ||
(!isalpha(boxtype[3])&&!isspace(boxtype[3]))){ (!isalpha(boxtype[3])&&!isspace(boxtype[3]))){
free( data); opj_free( data);
return NULL; return NULL;
} }
@ -113,22 +116,26 @@ box_param_t * gene_boxbyOffset( int fd, OPJ_OFF_T offset)
/* read XLBox*/ /* read XLBox*/
if((data2 = fetch_bytes( fd, offset+8, 8))){ if((data2 = fetch_bytes( fd, offset+8, 8))){
boxlen = big8(data2); boxlen = big8(data2);
free(data2); opj_free(data2);
} }
else{ else{
fprintf( FCGI_stderr, "Error: error in gene_boxbyOffset( %d, %" PRId64 ")\n", fd, offset); fprintf( FCGI_stderr, "Error: error in gene_boxbyOffset( %d, %" PRId64 ")\n", fd, offset);
free( data); opj_free( data);
return NULL; return NULL;
} }
} }
box = (box_param_t *)malloc( sizeof( box_param_t)); box = (box_param_t *)opj_malloc( sizeof( box_param_t));
if(box == NULL){
opj_free(data);
return NULL;
}
box->fd = fd; box->fd = fd;
box->offset = offset; box->offset = offset;
box->headlen = headlen; box->headlen = headlen;
box->length = boxlen; box->length = boxlen;
strncpy( box->type, boxtype, 4); strncpy( box->type, boxtype, 4);
box->next = NULL; box->next = NULL;
free( data); opj_free( data);
return box; return box;
} }
@ -155,7 +162,9 @@ box_param_t * gene_boxbyOffinStream( Byte_t *stream, OPJ_OFF_T offset)
headlen = 16; headlen = 16;
boxlen = big8( stream+8); /* read XLBox*/ boxlen = big8( stream+8); /* read XLBox*/
} }
box = (box_param_t *)malloc( sizeof( box_param_t)); box = (box_param_t *)opj_malloc( sizeof( box_param_t));
if(box == NULL) return NULL;
box->fd = -1; box->fd = -1;
box->offset = offset; box->offset = offset;
box->headlen = headlen; box->headlen = headlen;
@ -202,7 +211,7 @@ box_param_t * gene_boxbyType( int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const
/* read XLBox*/ /* read XLBox*/
if((data2 = fetch_bytes( fd, pos+8, 8))){ if((data2 = fetch_bytes( fd, pos+8, 8))){
boxlen = big8(data2); boxlen = big8(data2);
free(data2); opj_free(data2);
} }
else{ else{
fprintf( FCGI_stderr, "Error: error in gene_boxbyType( %d, %" PRId64 ", %" PRId64 ", %s)\n", fd, offset, length, TBox); fprintf( FCGI_stderr, "Error: error in gene_boxbyType( %d, %" PRId64 ", %" PRId64 ", %s)\n", fd, offset, length, TBox);
@ -210,17 +219,21 @@ box_param_t * gene_boxbyType( int fd, OPJ_OFF_T offset, OPJ_SIZE_T length, const
} }
} }
if( strncmp ( boxtype, TBox, 4) == 0){ if( strncmp ( boxtype, TBox, 4) == 0){
foundbox = (box_param_t *)malloc( sizeof( box_param_t)); foundbox = (box_param_t *)opj_malloc( sizeof( box_param_t));
if(foundbox == NULL){
opj_free(data);
return NULL;
}
foundbox->fd = fd; foundbox->fd = fd;
foundbox->offset = pos; foundbox->offset = pos;
foundbox->headlen = headlen; foundbox->headlen = headlen;
foundbox->length = boxlen; foundbox->length = boxlen;
strncpy( foundbox->type, TBox, 4); strncpy( foundbox->type, TBox, 4);
foundbox->next = NULL; foundbox->next = NULL;
free( data); opj_free( data);
return foundbox; return foundbox;
} }
free( data); opj_free( data);
} }
else{ else{
fprintf( FCGI_stderr, "Error: error in gene_boxbyType( %d, %" PRId64 ", %" PRId64 ", %s)\n", fd, offset, length, TBox); fprintf( FCGI_stderr, "Error: error in gene_boxbyType( %d, %" PRId64 ", %" PRId64 ", %s)\n", fd, offset, length, TBox);
@ -261,7 +274,9 @@ box_param_t * gene_boxbyTypeinStream( Byte_t *stream, OPJ_OFF_T offset, OPJ_SIZE
} }
if( strncmp ( boxtype, TBox, 4) == 0){ if( strncmp ( boxtype, TBox, 4) == 0){
foundbox = (box_param_t *)malloc( sizeof( box_param_t)); foundbox = (box_param_t *)opj_malloc( sizeof( box_param_t));
if(foundbox == NULL) return NULL;
foundbox->fd = -1; foundbox->fd = -1;
foundbox->offset = pos; foundbox->offset = pos;
foundbox->headlen = headlen; foundbox->headlen = headlen;
@ -397,7 +412,7 @@ void delete_box_in_list( box_param_t **box, boxlist_param_t *boxlist)
if( *box == boxlist->last) if( *box == boxlist->last)
boxlist->last = ptr; boxlist->last = ptr;
} }
free( *box); opj_free( *box);
} }
void delete_box_in_list_by_type( const char type[], boxlist_param_t *boxlist) void delete_box_in_list_by_type( const char type[], boxlist_param_t *boxlist)
@ -418,10 +433,10 @@ void delete_boxlist( boxlist_param_t **boxlist)
boxPtr = (*boxlist)->first; boxPtr = (*boxlist)->first;
while( boxPtr != NULL){ while( boxPtr != NULL){
boxNext=boxPtr->next; boxNext=boxPtr->next;
free( boxPtr); opj_free( boxPtr);
boxPtr=boxNext; boxPtr=boxNext;
} }
free( *boxlist); opj_free( *boxlist);
} }
void insert_box_into_list( box_param_t *box, boxlist_param_t *boxlist) void insert_box_into_list( box_param_t *box, boxlist_param_t *boxlist)

View File

@ -31,6 +31,7 @@
#ifndef BOX_MANAGER_H_ #ifndef BOX_MANAGER_H_
# define BOX_MANAGER_H_ # define BOX_MANAGER_H_
#include "opj_includes.h"
#include "byte_manager.h" #include "byte_manager.h"
/** box parameters*/ /** box parameters*/

View File

@ -61,13 +61,15 @@ boxheader_param_t * gene_boxheader( int fd, OPJ_OFF_T offset)
headlen = 16; headlen = 16;
} }
boxheader = (boxheader_param_t *)malloc( sizeof( boxheader_param_t)); boxheader = (boxheader_param_t *)opj_malloc( sizeof( boxheader_param_t));
if(boxheader == NULL) return NULL;
boxheader->headlen = headlen; boxheader->headlen = headlen;
boxheader->length = boxlen; boxheader->length = boxlen;
strncpy( boxheader->type, boxtype, 4); strncpy( boxheader->type, boxtype, 4);
boxheader->next = NULL; boxheader->next = NULL;
free( boxtype); opj_free( boxtype);
return boxheader; return boxheader;
} }

View File

@ -31,6 +31,7 @@
#ifndef BOXHEADER_MANAGER_H_ #ifndef BOXHEADER_MANAGER_H_
# define BOXHEADER_MANAGER_H_ # define BOXHEADER_MANAGER_H_
#include "opj_includes.h"
#include "openjpeg.h" #include "openjpeg.h"
#include "byte_manager.h" #include "byte_manager.h"
#include "box_manager.h" #include "box_manager.h"

View File

@ -59,10 +59,11 @@ Byte_t * fetch_bytes( int fd, OPJ_OFF_T offset, OPJ_SIZE_T size)
return NULL; return NULL;
} }
data = (Byte_t *)malloc( size); data = (Byte_t *)opj_malloc( size);
if(data == NULL) return NULL;
if( (OPJ_SIZE_T)read( fd, data, size) != size){ if( (OPJ_SIZE_T)read( fd, data, size) != size){
free( data); opj_free( data);
fprintf( FCGI_stdout, "Reason: Target broken (read error)\r\n"); fprintf( FCGI_stdout, "Reason: Target broken (read error)\r\n");
fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld, %lu)\n", fd, offset, size); fprintf( FCGI_stderr, "Error: error in fetch_bytes( %d, %ld, %lu)\n", fd, offset, size);
return NULL; return NULL;
@ -98,7 +99,7 @@ Byte2_t fetch_2bytebigendian( int fd, OPJ_OFF_T offset)
return 0; return 0;
} }
code = big2(data); code = big2(data);
free( data); opj_free( data);
return code; return code;
} }
@ -113,7 +114,7 @@ Byte4_t fetch_4bytebigendian( int fd, OPJ_OFF_T offset)
return 0; return 0;
} }
code = big4(data); code = big4(data);
free( data); opj_free( data);
return code; return code;
} }
@ -128,7 +129,7 @@ Byte8_t fetch_8bytebigendian( int fd, OPJ_OFF_T offset)
return 0; return 0;
} }
code = big8(data); code = big8(data);
free( data); opj_free( data);
return code; return code;
} }

View File

@ -32,6 +32,7 @@
#define BYTE_MANAGER_H_ #define BYTE_MANAGER_H_
#include <stddef.h> #include <stddef.h>
#include "opj_includes.h"
#include "openjpeg.h" #include "openjpeg.h"
#include "opj_stdint.h" #include "opj_stdint.h"
typedef uint8_t Byte_t; typedef uint8_t Byte_t;

View File

@ -37,7 +37,8 @@ cachelist_param_t * gene_cachelist(void)
{ {
cachelist_param_t *cachelist; cachelist_param_t *cachelist;
cachelist = (cachelist_param_t *)malloc( sizeof(cachelist_param_t)); cachelist = (cachelist_param_t *)opj_malloc( sizeof(cachelist_param_t));
if(cachelist == NULL) return NULL;
cachelist->first = NULL; cachelist->first = NULL;
cachelist->last = NULL; cachelist->last = NULL;
@ -55,19 +56,29 @@ void delete_cachelist(cachelist_param_t **cachelist)
delete_cache( &cachePtr); delete_cache( &cachePtr);
cachePtr=cacheNext; cachePtr=cacheNext;
} }
free( *cachelist); opj_free( *cachelist);
} }
cache_param_t * gene_cache( const char *targetname, int csn, char *tid, char *cid) cache_param_t * gene_cache( const char *targetname, int csn, char *tid, char *cid)
{ {
cache_param_t *cache; cache_param_t *cache;
cache = (cache_param_t *)malloc( sizeof(cache_param_t)); cache = (cache_param_t *)opj_malloc( sizeof(cache_param_t));
if(cache == NULL) return NULL;
cache->filename = strdup( targetname); cache->filename = strdup( targetname);
if(cache->filename == NULL) goto fails;
cache->tid = strdup( tid); cache->tid = strdup( tid);
if(cache->tid == NULL) goto fails;
cache->csn = csn; cache->csn = csn;
cache->cid = (char **)malloc( sizeof(char *)); cache->cid = (char **)opj_malloc( sizeof(char *));
if(cache->cid == NULL) goto fails;
*cache->cid = strdup( cid); *cache->cid = strdup( cid);
if(*cache->cid == NULL) goto fails;
cache->numOfcid = 1; cache->numOfcid = 1;
#if 1 #if 1
cache->metadatalist = NULL; cache->metadatalist = NULL;
@ -78,23 +89,29 @@ cache_param_t * gene_cache( const char *targetname, int csn, char *tid, char *ci
cache->next = NULL; cache->next = NULL;
return cache; return cache;
fails:
delete_cache(&cache);
return NULL;
} }
void delete_cache( cache_param_t **cache) void delete_cache( cache_param_t **cache)
{ {
int i; int i;
free( (*cache)->filename); if((*cache)->filename) opj_free( (*cache)->filename);
free( (*cache)->tid); if((*cache)->tid) opj_free( (*cache)->tid);
delete_metadatalist( &(*cache)->metadatalist); delete_metadatalist( &(*cache)->metadatalist);
if((*cache)->ihdrbox) if((*cache)->ihdrbox)
free((*cache)->ihdrbox); opj_free((*cache)->ihdrbox);
if((*cache)->cid){
for( i=0; i<(*cache)->numOfcid; i++) for( i=0; i<(*cache)->numOfcid; i++)
free( (*cache)->cid[i]); opj_free( (*cache)->cid[i]);
free( (*cache)->cid); opj_free( (*cache)->cid);
free( *cache); }
opj_free( *cache);
} }
void insert_cache_into_list( cache_param_t *cache, cachelist_param_t *cachelist) void insert_cache_into_list( cache_param_t *cache, cachelist_param_t *cachelist)
@ -180,12 +197,14 @@ void add_cachecid( const char *cid, cache_param_t *cache)
{ {
if( !cid) if( !cid)
return; return;
{
char **cid = cache->cid;
if( (cache->cid = realloc( cache->cid, (OPJ_SIZE_T)(cache->numOfcid+1)*sizeof(char *))) == NULL){ if( (cache->cid = opj_realloc( cid, (OPJ_SIZE_T)(cache->numOfcid+1)*sizeof(char *))) == NULL){
fprintf( stderr, "failed to add new cid to cache table in add_cachecid()\n"); fprintf( stderr, "failed to add new cid to cache table in add_cachecid()\n");
return; return;
} }
}
cache->cid[ cache->numOfcid] = strdup( cid); cache->cid[ cache->numOfcid] = strdup( cid);
cache->numOfcid ++; cache->numOfcid ++;
@ -198,7 +217,7 @@ void update_cachetid( const char *tid, cache_param_t *cache)
if( tid[0] != '0' && strcmp( tid, cache->tid) !=0){ if( tid[0] != '0' && strcmp( tid, cache->tid) !=0){
fprintf( stderr, "tid is updated to %s for %s\n", tid, cache->filename); fprintf( stderr, "tid is updated to %s for %s\n", tid, cache->filename);
free( cache->tid); opj_free( cache->tid);
cache->tid = strdup( tid); cache->tid = strdup( tid);
} }
} }
@ -232,16 +251,19 @@ void remove_cidInCache( const char *cid, cache_param_t *cache)
tmp = cache->cid; tmp = cache->cid;
cache->cid = (char **)malloc( (OPJ_SIZE_T)(cache->numOfcid-1)*sizeof(char *)); cache->cid = (char **)opj_malloc( (OPJ_SIZE_T)(cache->numOfcid-1)*sizeof(char *));
if(cache->cid == NULL){
fprintf( stderr, "cid: memory out\n");
return;
}
for( i=0, j=0; i<cache->numOfcid; i++){ for( i=0, j=0; i<cache->numOfcid; i++){
if( i != idx){ if( i != idx){
cache->cid[j] = strdup( tmp[i]); cache->cid[j] = strdup( tmp[i]);
j++; j++;
} }
free( tmp[i]); opj_free( tmp[i]);
} }
free( tmp); opj_free( tmp);
cache->numOfcid --; cache->numOfcid --;
} }

View File

@ -49,6 +49,7 @@ cachemodellist_param_t * gene_cachemodellist(void)
cachemodellist_param_t *cachemodellist; cachemodellist_param_t *cachemodellist;
cachemodellist = (cachemodellist_param_t *)opj_malloc( sizeof(cachemodellist_param_t)); cachemodellist = (cachemodellist_param_t *)opj_malloc( sizeof(cachemodellist_param_t));
if(cachemodellist == NULL) return NULL;
cachemodellist->first = NULL; cachemodellist->first = NULL;
cachemodellist->last = NULL; cachemodellist->last = NULL;
@ -66,6 +67,7 @@ cachemodel_param_t * gene_cachemodel( cachemodellist_param_t *cachemodellist, ta
int i; int i;
cachemodel = (cachemodel_param_t *)opj_malloc( sizeof(cachemodel_param_t)); cachemodel = (cachemodel_param_t *)opj_malloc( sizeof(cachemodel_param_t));
if(cachemodel == NULL) return NULL;
refer_target( target, &cachemodel->target); refer_target( target, &cachemodel->target);
@ -87,8 +89,20 @@ cachemodel_param_t * gene_cachemodel( cachemodellist_param_t *cachemodellist, ta
numOftiles = get_m( tilepart); numOftiles = get_m( tilepart);
numOfelem = get_nmax( tilepart)*numOftiles; numOfelem = get_nmax( tilepart)*numOftiles;
cachemodel->tp_model = (OPJ_BOOL *)opj_calloc( 1, numOfelem*sizeof(OPJ_BOOL)); cachemodel->tp_model = (OPJ_BOOL *)opj_calloc( 1, numOfelem*sizeof(OPJ_BOOL));
if(cachemodel->tp_model == NULL){
delete_cachemodel(&cachemodel);
return NULL;
}
cachemodel->th_model = (OPJ_BOOL *)opj_calloc( 1, numOftiles*sizeof(OPJ_BOOL)); cachemodel->th_model = (OPJ_BOOL *)opj_calloc( 1, numOftiles*sizeof(OPJ_BOOL));
if(cachemodel->th_model == NULL){
delete_cachemodel(&cachemodel);
return NULL;
}
cachemodel->pp_model = (OPJ_BOOL **)opj_malloc( target->codeidx->SIZ.Csiz*sizeof(OPJ_BOOL *)); cachemodel->pp_model = (OPJ_BOOL **)opj_malloc( target->codeidx->SIZ.Csiz*sizeof(OPJ_BOOL *));
if(cachemodel->pp_model == NULL){
delete_cachemodel(&cachemodel);
return NULL;
}
for( i=0; i<target->codeidx->SIZ.Csiz; i++){ for( i=0; i<target->codeidx->SIZ.Csiz; i++){
precpacket = target->codeidx->precpacket[i]; precpacket = target->codeidx->precpacket[i];
cachemodel->pp_model[i] = (OPJ_BOOL *)opj_calloc( 1, get_nmax(precpacket)*get_m(precpacket)*sizeof(OPJ_BOOL)); cachemodel->pp_model[i] = (OPJ_BOOL *)opj_calloc( 1, get_nmax(precpacket)*get_m(precpacket)*sizeof(OPJ_BOOL));

View File

@ -50,6 +50,7 @@ channellist_param_t * gene_channellist(void)
channellist_param_t *channellist; channellist_param_t *channellist;
channellist = (channellist_param_t *)opj_malloc( sizeof(channellist_param_t)); channellist = (channellist_param_t *)opj_malloc( sizeof(channellist_param_t));
if(channellist == NULL) return NULL;
channellist->first = NULL; channellist->first = NULL;
channellist->last = NULL; channellist->last = NULL;
@ -69,6 +70,8 @@ channel_param_t * gene_channel( query_param_t query_param, auxtrans_param_t auxt
} }
channel = (channel_param_t *)opj_malloc( sizeof(channel_param_t)); channel = (channel_param_t *)opj_malloc( sizeof(channel_param_t));
if(channel == NULL) return NULL;
channel->cachemodel = cachemodel; channel->cachemodel = cachemodel;
/* set channel ID and get present time */ /* set channel ID and get present time */

View File

@ -58,6 +58,12 @@ void handle_JPIPstreamMSG( SOCKET connected_socket, cachelist_param_t *cachelist
opj_free( newjpipstream); opj_free( newjpipstream);
metadatalist = gene_metadatalist(); metadatalist = gene_metadatalist();
if(metadatalist == NULL){
if( target) opj_free( target);
if( tid) opj_free( tid);
if( cid) opj_free( cid);
return;
}
parse_metamsg( msgqueue, *jpipstream, *streamlen, metadatalist); parse_metamsg( msgqueue, *jpipstream, *streamlen, metadatalist);
assert( msgqueue->last ); assert( msgqueue->last );
@ -143,6 +149,8 @@ void handle_XMLreqMSG( SOCKET connected_socket, Byte_t *jpipstream, cachelist_pa
boxcontents = cache->metadatalist->last->boxcontents; boxcontents = cache->metadatalist->last->boxcontents;
xmlstream = (Byte_t *)opj_malloc( boxcontents->length); xmlstream = (Byte_t *)opj_malloc( boxcontents->length);
if(xmlstream == NULL) return;
memcpy( xmlstream, jpipstream+boxcontents->offset, boxcontents->length); memcpy( xmlstream, jpipstream+boxcontents->offset, boxcontents->length);
send_XMLstream( connected_socket, xmlstream, boxcontents->length); send_XMLstream( connected_socket, xmlstream, boxcontents->length);
opj_free( xmlstream); opj_free( xmlstream);
@ -220,8 +228,11 @@ void handle_SIZreqMSG( SOCKET connected_socket, Byte_t *jpipstream, msgqueue_par
width = height = 0; width = height = 0;
if( cache){ if( cache){
assert( cache->csn >= 0); assert( cache->csn >= 0);
if( !cache->ihdrbox) if( !cache->ihdrbox){
cache->ihdrbox = get_SIZ_from_jpipstream( jpipstream, msgqueue, (Byte8_t)cache->csn); cache->ihdrbox = get_SIZ_from_jpipstream( jpipstream, msgqueue, (Byte8_t)cache->csn);
if(cache->ihdrbox == NULL) return;
}
width = cache->ihdrbox->width; width = cache->ihdrbox->width;
height = cache->ihdrbox->height; height = cache->ihdrbox->height;
} }

View File

@ -48,21 +48,24 @@ faixbox_param_t * gene_faixbox( box_param_t *box)
size_t numOfelem; size_t numOfelem;
long pos = 0; long pos = 0;
faix = ( faixbox_param_t *)malloc( sizeof(faixbox_param_t)); faix = ( faixbox_param_t *)opj_malloc( sizeof(faixbox_param_t));
if(faix == NULL) return NULL;
faix->version = fetch_DBox1byte( box, (pos+=1)-1); faix->version = fetch_DBox1byte( box, (pos+=1)-1);
if( 3< faix->version){ if( 3< faix->version){
fprintf( FCGI_stderr, "Error: version %d in faix box is reserved for ISO use.\n", faix->version); fprintf( FCGI_stderr, "Error: version %d in faix box is reserved for ISO use.\n", faix->version);
free(faix); goto fails;
return NULL;
} }
if( faix->version%2){ if( faix->version%2){
subfaixbox8_param_t *subfaixbox; subfaixbox8_param_t *subfaixbox;
size_t i; size_t i;
faix->subfaixbox.byte8_params = (subfaixbox8_param_t *)malloc( sizeof(subfaixbox8_param_t)); faix->subfaixbox.byte8_params = (subfaixbox8_param_t *)opj_malloc( sizeof(subfaixbox8_param_t));
if(faix->subfaixbox.byte8_params == NULL){
goto fails;
}
subfaixbox = faix->subfaixbox.byte8_params; subfaixbox = faix->subfaixbox.byte8_params;
subfaixbox->nmax = fetch_DBox8bytebigendian( box, (pos+=8)-8); subfaixbox->nmax = fetch_DBox8bytebigendian( box, (pos+=8)-8);
@ -70,11 +73,17 @@ faixbox_param_t * gene_faixbox( box_param_t *box)
numOfelem = subfaixbox->nmax*subfaixbox->m; numOfelem = subfaixbox->nmax*subfaixbox->m;
subfaixbox->elem = ( faixelem8_param_t *)malloc( numOfelem*sizeof(faixelem8_param_t)); subfaixbox->elem = ( faixelem8_param_t *)opj_malloc( numOfelem*sizeof(faixelem8_param_t));
if(subfaixbox->elem == NULL){
if( faix->version == 3) goto fails;
subfaixbox->aux = ( Byte4_t *)malloc( numOfelem*sizeof(Byte4_t)); }
if( faix->version == 3){
subfaixbox->aux = ( Byte4_t *)opj_malloc( numOfelem*sizeof(Byte4_t));
if(subfaixbox->aux == NULL){
goto fails;
}
}
for( i=0; i<numOfelem; i++){ for( i=0; i<numOfelem; i++){
subfaixbox->elem[i].off = fetch_DBox8bytebigendian( box, (pos+=8)-8); subfaixbox->elem[i].off = fetch_DBox8bytebigendian( box, (pos+=8)-8);
subfaixbox->elem[i].len = fetch_DBox8bytebigendian( box, (pos+=8)-8); subfaixbox->elem[i].len = fetch_DBox8bytebigendian( box, (pos+=8)-8);
@ -86,19 +95,26 @@ faixbox_param_t * gene_faixbox( box_param_t *box)
subfaixbox4_param_t *subfaixbox; subfaixbox4_param_t *subfaixbox;
size_t i; size_t i;
faix->subfaixbox.byte4_params = (subfaixbox4_param_t *)malloc( sizeof(subfaixbox4_param_t)); faix->subfaixbox.byte4_params = (subfaixbox4_param_t *)opj_malloc( sizeof(subfaixbox4_param_t));
if(faix->subfaixbox.byte4_params == NULL){
goto fails;
}
subfaixbox = faix->subfaixbox.byte4_params; subfaixbox = faix->subfaixbox.byte4_params;
subfaixbox->nmax = fetch_DBox4bytebigendian( box, (pos+=4)-4); subfaixbox->nmax = fetch_DBox4bytebigendian( box, (pos+=4)-4);
subfaixbox->m = fetch_DBox4bytebigendian( box, (pos+=4)-4); subfaixbox->m = fetch_DBox4bytebigendian( box, (pos+=4)-4);
numOfelem = subfaixbox->nmax*subfaixbox->m; numOfelem = subfaixbox->nmax*subfaixbox->m;
subfaixbox->elem = ( faixelem4_param_t *)malloc( numOfelem*sizeof(faixelem4_param_t)); subfaixbox->elem = ( faixelem4_param_t *)opj_malloc( numOfelem*sizeof(faixelem4_param_t));
if(subfaixbox->elem == NULL){
if( faix->version == 2) goto fails;
subfaixbox->aux = ( Byte4_t *)malloc( numOfelem*sizeof(Byte4_t)); }
if( faix->version == 2){
subfaixbox->aux = ( Byte4_t *)opj_malloc( numOfelem*sizeof(Byte4_t));
if(subfaixbox->aux == NULL){
goto fails;
}
}
for( i=0; i<numOfelem; i++){ for( i=0; i<numOfelem; i++){
subfaixbox->elem[i].off = fetch_DBox4bytebigendian( box, (pos+=4)-4); subfaixbox->elem[i].off = fetch_DBox4bytebigendian( box, (pos+=4)-4);
subfaixbox->elem[i].len = fetch_DBox4bytebigendian( box, (pos+=4)-4); subfaixbox->elem[i].len = fetch_DBox4bytebigendian( box, (pos+=4)-4);
@ -107,6 +123,10 @@ faixbox_param_t * gene_faixbox( box_param_t *box)
} }
} }
return faix; return faix;
fails:
delete_faixbox(&faix);
return NULL;
} }
void print_faixbox( faixbox_param_t *faix) void print_faixbox( faixbox_param_t *faix)
@ -133,18 +153,18 @@ void print_faixbox( faixbox_param_t *faix)
void delete_faixbox( faixbox_param_t **faix) void delete_faixbox( faixbox_param_t **faix)
{ {
if((*faix)->version%2){ if((*faix)->version%2){
free((*faix)->subfaixbox.byte8_params->elem); opj_free((*faix)->subfaixbox.byte8_params->elem);
if( (*faix)->version == 3) if( (*faix)->version == 3)
free((*faix)->subfaixbox.byte8_params->aux); opj_free((*faix)->subfaixbox.byte8_params->aux);
free((*faix)->subfaixbox.byte8_params); opj_free((*faix)->subfaixbox.byte8_params);
} }
else{ else{
free((*faix)->subfaixbox.byte4_params->elem); opj_free((*faix)->subfaixbox.byte4_params->elem);
if( (*faix)->version == 2) if( (*faix)->version == 2)
free((*faix)->subfaixbox.byte4_params->aux); opj_free((*faix)->subfaixbox.byte4_params->aux);
free((*faix)->subfaixbox.byte4_params); opj_free((*faix)->subfaixbox.byte4_params);
} }
free( *faix); opj_free( *faix);
} }
Byte8_t get_nmax( faixbox_param_t *faix) Byte8_t get_nmax( faixbox_param_t *faix)

View File

@ -62,7 +62,8 @@ ihdrbox_param_t * gene_ihdrbox( metadatalist_param_t *metadatalist, Byte_t *jpip
return NULL; return NULL;
} }
ihdrbox = (ihdrbox_param_t *)malloc( sizeof(ihdrbox_param_t)); ihdrbox = (ihdrbox_param_t *)opj_malloc( sizeof(ihdrbox_param_t));
if(ihdrbox == NULL) return NULL;
ihdrbox->height = big4( jpipstream+get_DBoxoff(ihdr)); ihdrbox->height = big4( jpipstream+get_DBoxoff(ihdr));
ihdrbox->width = big4( jpipstream+get_DBoxoff(ihdr)+4); ihdrbox->width = big4( jpipstream+get_DBoxoff(ihdr)+4);
@ -71,7 +72,7 @@ ihdrbox_param_t * gene_ihdrbox( metadatalist_param_t *metadatalist, Byte_t *jpip
assert( bpc_val >= 0 && bpc_val <= 255 ); assert( bpc_val >= 0 && bpc_val <= 255 );
ihdrbox->bpc = (Byte_t)bpc_val; ihdrbox->bpc = (Byte_t)bpc_val;
free( ihdr); opj_free( ihdr);
return ihdrbox; return ihdrbox;
} }

View File

@ -99,6 +99,7 @@ index_param_t * parse_jp2file( int fd)
} }
jp2idx = (index_param_t *)opj_malloc( sizeof(index_param_t)); jp2idx = (index_param_t *)opj_malloc( sizeof(index_param_t));
if(jp2idx == NULL) return NULL;
if( !set_cidxdata( cidx, jp2idx)){ if( !set_cidxdata( cidx, jp2idx)){
fprintf( FCGI_stderr, "Error: Not correctl format in cidx box\n"); fprintf( FCGI_stderr, "Error: Not correctl format in cidx box\n");
@ -493,12 +494,22 @@ OPJ_BOOL set_thixdata( box_param_t *cidx_box, index_param_t *jp2idx)
} }
manf = gene_manfbox( manf_box); manf = gene_manfbox( manf_box);
if(manf == NULL){
opj_free(manf_box);
opj_free( thix_box);
return OPJ_FALSE;
}
ptr = manf->first; ptr = manf->first;
mhixseqoff = manf_box->offset+(OPJ_OFF_T)manf_box->length; mhixseqoff = manf_box->offset+(OPJ_OFF_T)manf_box->length;
pos = 0; pos = 0;
tile_no = 0; tile_no = 0;
jp2idx->tileheader = (mhixbox_param_t **)opj_malloc( jp2idx->SIZ.XTnum*jp2idx->SIZ.YTnum*sizeof(mhixbox_param_t *)); jp2idx->tileheader = (mhixbox_param_t **)opj_malloc( jp2idx->SIZ.XTnum*jp2idx->SIZ.YTnum*sizeof(mhixbox_param_t *));
if(jp2idx->tileheader == NULL){
delete_manfbox(&manf);
opj_free(manf);
opj_free(thix_box);
return OPJ_FALSE;
}
while( ptr){ while( ptr){
if( !(mhix_box = gene_boxbyType( thix_box->fd, mhixseqoff+(OPJ_OFF_T)pos, get_DBoxlen( thix_box)-manf_box->length-pos, "mhix"))){ if( !(mhix_box = gene_boxbyType( thix_box->fd, mhixseqoff+(OPJ_OFF_T)pos, get_DBoxlen( thix_box)-manf_box->length-pos, "mhix"))){
fprintf( FCGI_stderr, "Error: mhix box not present in thix box\n"); fprintf( FCGI_stderr, "Error: mhix box not present in thix box\n");
@ -547,25 +558,38 @@ OPJ_BOOL set_ppixdata( box_param_t *cidx_box, index_param_t *jp2idx)
opj_free( ppix_box); opj_free( ppix_box);
manf = gene_manfbox( manf_box); manf = gene_manfbox( manf_box);
if(manf == NULL){
return OPJ_FALSE;
}
bh = search_boxheader( "faix", manf); bh = search_boxheader( "faix", manf);
inbox_offset = manf_box->offset + (OPJ_OFF_T)manf_box->length; inbox_offset = manf_box->offset + (OPJ_OFF_T)manf_box->length;
opj_free( manf_box); opj_free( manf_box);
jp2idx->precpacket = (faixbox_param_t **)opj_malloc( jp2idx->SIZ.Csiz*sizeof(faixbox_param_t *)); jp2idx->precpacket = (faixbox_param_t **)opj_malloc( jp2idx->SIZ.Csiz*sizeof(faixbox_param_t *));
if(jp2idx->precpacket == NULL){
delete_manfbox( &manf);
return OPJ_FALSE;
}
for( comp_idx=0; bh!=NULL; bh=bh->next, comp_idx++){ for( comp_idx=0; bh!=NULL; bh=bh->next, comp_idx++){
if( jp2idx->SIZ.Csiz <= comp_idx ){ if( jp2idx->SIZ.Csiz <= comp_idx ){
fprintf( FCGI_stderr, "Error: num of faix boxes is not identical to num of components in ppix box\n"); fprintf( FCGI_stderr, "Error: num of faix boxes is not identical to num of components in ppix box\n");
delete_manfbox( &manf);
return OPJ_FALSE; return OPJ_FALSE;
} }
if( !(faix_box = gene_boxbyOffset( cidx_box->fd, inbox_offset))){ if( !(faix_box = gene_boxbyOffset( cidx_box->fd, inbox_offset))){
fprintf( FCGI_stderr, "Error: faix box not present in ppix box\n"); fprintf( FCGI_stderr, "Error: faix box not present in ppix box\n");
delete_manfbox( &manf);
return OPJ_FALSE; return OPJ_FALSE;
} }
faix = gene_faixbox( faix_box); faix = gene_faixbox( faix_box);
if(faix == NULL){
delete_manfbox( &manf);
opj_free( faix_box);
return OPJ_FALSE;
}
jp2idx->precpacket[comp_idx] = faix; jp2idx->precpacket[comp_idx] = faix;
inbox_offset = faix_box->offset + (OPJ_OFF_T)faix_box->length; inbox_offset = faix_box->offset + (OPJ_OFF_T)faix_box->length;
@ -634,8 +658,13 @@ OPJ_BOOL set_CODmkrdata( markeridx_param_t *codmkidx, codestream_param_t codestr
if(COD->Scod & 0x01){ if(COD->Scod & 0x01){
COD->XPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD->numOfdecomp+1)*sizeof(Byte4_t)); COD->XPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD->numOfdecomp+1)*sizeof(Byte4_t));
COD->YPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD->numOfdecomp+1)*sizeof(Byte4_t)); if(COD->XPsiz == NULL) return OPJ_FALSE;
COD->YPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD->numOfdecomp+1)*sizeof(Byte4_t));
if(COD->YPsiz == NULL){
opj_free(COD->XPsiz); COD->XPsiz = NULL;
return OPJ_FALSE;
}
for( i=0; i<=COD->numOfdecomp; i++){ for( i=0; i<=COD->numOfdecomp; i++){
/*precinct size*/ /*precinct size*/
COD->XPsiz[i] = (Byte2_t)pow( 2, fetch_marker1byte( codmkr, 12+i) & 0x0F); COD->XPsiz[i] = (Byte2_t)pow( 2, fetch_marker1byte( codmkr, 12+i) & 0x0F);
@ -644,8 +673,13 @@ OPJ_BOOL set_CODmkrdata( markeridx_param_t *codmkidx, codestream_param_t codestr
} }
else{ else{
COD->XPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t)); COD->XPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t));
COD->YPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t)); if(COD->XPsiz == NULL) return OPJ_FALSE;
COD->YPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t));
if(COD->YPsiz == NULL){
opj_free(COD->XPsiz); COD->XPsiz = NULL;
return OPJ_FALSE;
}
COD->XPsiz[0] = COD->YPsiz[0] = 1 << 15; /* pow(2,15); */ COD->XPsiz[0] = COD->YPsiz[0] = 1 << 15; /* pow(2,15); */
} }
return OPJ_TRUE; return OPJ_TRUE;

View File

@ -117,6 +117,7 @@ CODmarker_param_t get_CODmkrdata_from_j2kstream( Byte_t *CODstream)
if( *CODstream++ != 0xff || *CODstream++ != 0x52){ if( *CODstream++ != 0xff || *CODstream++ != 0x52){
fprintf( FCGI_stderr, "Error, COD marker not found in the reconstructed j2kstream\n"); fprintf( FCGI_stderr, "Error, COD marker not found in the reconstructed j2kstream\n");
memset(&COD, 0, sizeof(CODmarker_param_t));
return COD; return COD;
} }
@ -128,8 +129,13 @@ CODmarker_param_t get_CODmkrdata_from_j2kstream( Byte_t *CODstream)
if(COD.Scod & 0x01){ if(COD.Scod & 0x01){
COD.XPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD.numOfdecomp+1)*sizeof(Byte4_t)); COD.XPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD.numOfdecomp+1)*sizeof(Byte4_t));
COD.YPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD.numOfdecomp+1)*sizeof(Byte4_t)); if(COD.XPsiz == NULL) return COD;/* FIXME szukw000 */
COD.YPsiz = (Byte4_t *)opj_malloc( (OPJ_SIZE_T)(COD.numOfdecomp+1)*sizeof(Byte4_t));
if(COD.YPsiz == NULL){
opj_free(COD.XPsiz); COD.XPsiz = NULL;
return COD;/* FIXME szukw000 */
}
for( i=0; i<=COD.numOfdecomp; i++){ for( i=0; i<=COD.numOfdecomp; i++){
/*precinct size */ /*precinct size */
COD.XPsiz[i] = (Byte4_t)pow( 2, *( CODstream+12+i) & 0x0F); COD.XPsiz[i] = (Byte4_t)pow( 2, *( CODstream+12+i) & 0x0F);
@ -138,7 +144,13 @@ CODmarker_param_t get_CODmkrdata_from_j2kstream( Byte_t *CODstream)
} }
else{ else{
COD.XPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t)); COD.XPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t));
if(COD.XPsiz == NULL) return COD; /* FIXME szukw000 */
COD.YPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t)); COD.YPsiz = (Byte4_t *)opj_malloc( sizeof(Byte4_t));
if(COD.YPsiz == NULL){
opj_free(COD.XPsiz); COD.XPsiz = NULL;
return COD;
}
COD.XPsiz[0] = COD.YPsiz[0] = 1<<15; /*pow(2,15)*/ COD.XPsiz[0] = COD.YPsiz[0] = 1<<15; /*pow(2,15)*/
} }
return COD; return COD;
@ -208,7 +220,7 @@ Byte2_t modify_CODmkrstream( CODmarker_param_t COD, int numOfdecomp, Byte_t *COD
{ {
Byte2_t newLcod; Byte2_t newLcod;
assert( numOfdecomp >= 0 || numOfdecomp <= 255 ); assert( numOfdecomp >= 0 && numOfdecomp <= 255 );
if( *CODstream++ != 0xff || *CODstream++ != 0x52){ if( *CODstream++ != 0xff || *CODstream++ != 0x52){
fprintf( FCGI_stderr, "Error, COD marker not found in the reconstructed j2kstream\n"); fprintf( FCGI_stderr, "Error, COD marker not found in the reconstructed j2kstream\n");
return 0; return 0;

View File

@ -174,7 +174,9 @@ static Byte_t * imagetopnm(opj_image_t *image, ihdrbox_param_t **ihdrbox)
fprintf( stderr, "Exception: bits per component not identical, codestream: %d, ihdrbox: %d\n", image->comps[0].prec, (*ihdrbox)->bpc); fprintf( stderr, "Exception: bits per component not identical, codestream: %d, ihdrbox: %d\n", image->comps[0].prec, (*ihdrbox)->bpc);
} }
else{ else{
*ihdrbox = (ihdrbox_param_t *)malloc( sizeof(ihdrbox_param_t)); *ihdrbox = (ihdrbox_param_t *)opj_malloc( sizeof(ihdrbox_param_t));
if(*ihdrbox == NULL) return NULL;
(*ihdrbox)->width = image->comps[0].w; (*ihdrbox)->width = image->comps[0].w;
(*ihdrbox)->height = image->comps[0].h; (*ihdrbox)->height = image->comps[0].h;
assert( image->comps[0].prec < 256 ); assert( image->comps[0].prec < 256 );
@ -208,7 +210,12 @@ static Byte_t * imagetopnm(opj_image_t *image, ihdrbox_param_t **ihdrbox)
adjustB = 0; adjustB = 0;
} }
pix = (Byte_t *)malloc( datasize); pix = (Byte_t *)opj_malloc( datasize);
if(pix == NULL){
opj_free(*ihdrbox);
*ihdrbox = NULL;
return NULL;
}
ptr = pix; ptr = pix;
for( i = 0; i < image->comps[0].w * image->comps[0].h; i++){ for( i = 0; i < image->comps[0].w * image->comps[0].h; i++){

View File

@ -108,12 +108,21 @@ Byte_t * recons_jp2( msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte8_t csn
if( strncmp( (char *)ptr->phld->OrigBH+4, "jp2c", 4) == 0){ if( strncmp( (char *)ptr->phld->OrigBH+4, "jp2c", 4) == 0){
jp2cDBoxOffset = *jp2len + ptr->phld->OrigBHlen; jp2cDBoxOffset = *jp2len + ptr->phld->OrigBHlen;
jp2stream = add_emptyboxstream( ptr->phld, jp2stream, jp2len); /* header only */ jp2stream = add_emptyboxstream( ptr->phld, jp2stream, jp2len); /* header only */
if(jp2stream == NULL){
return NULL;
}
jp2cDBoxlen = *jp2len - jp2cDBoxOffset; jp2cDBoxlen = *jp2len - jp2cDBoxOffset;
} }
else else
jp2stream = add_emptyboxstream( ptr->phld, jp2stream, jp2len); /* header only */ jp2stream = add_emptyboxstream( ptr->phld, jp2stream, jp2len); /* header only */
if(jp2stream == NULL){
return NULL;
}
} }
jp2stream = add_msgstream( ptr, jpipstream, jp2stream, jp2len); jp2stream = add_msgstream( ptr, jpipstream, jp2stream, jp2len);
if(jp2stream == NULL){
return NULL;
}
ptr = ptr->next; ptr = ptr->next;
} }
@ -179,7 +188,9 @@ Byte_t * recons_codestream_from_JPTstream( msgqueue_param_t *msgqueue, Byte_t *j
*j2klen = 0; *j2klen = 0;
j2kstream = add_mainhead_msgstream( msgqueue, jpipstream, j2kstream, csn, j2klen); j2kstream = add_mainhead_msgstream( msgqueue, jpipstream, j2kstream, csn, j2klen);
if(j2kstream == NULL){
return NULL;
}
if( !get_mainheader_from_j2kstream( j2kstream, &SIZ, NULL)) if( !get_mainheader_from_j2kstream( j2kstream, &SIZ, NULL))
return j2kstream; return j2kstream;
@ -199,6 +210,9 @@ Byte_t * recons_codestream_from_JPTstream( msgqueue_param_t *msgqueue, Byte_t *j
if( ptr->bin_offset == binOffset){ if( ptr->bin_offset == binOffset){
found = OPJ_TRUE; found = OPJ_TRUE;
j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen); j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
binOffset += ptr->length; binOffset += ptr->length;
} }
ptr = ptr->next; ptr = ptr->next;
@ -209,13 +223,20 @@ Byte_t * recons_codestream_from_JPTstream( msgqueue_param_t *msgqueue, Byte_t *j
if( ptr->bin_offset == binOffset){ if( ptr->bin_offset == binOffset){
found = OPJ_TRUE; found = OPJ_TRUE;
j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen); j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
binOffset += ptr->length; binOffset += ptr->length;
} }
} }
ptr = ptr->next; ptr = ptr->next;
} }
if(!found) if(!found){
j2kstream = add_emptytilestream( tileID, j2kstream, j2klen); j2kstream = add_emptytilestream( tileID, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
}
} }
j2kstream = add_EOC( j2kstream, j2klen); j2kstream = add_EOC( j2kstream, j2klen);
@ -243,7 +264,9 @@ Byte_t * recons_codestream_from_JPPstream( msgqueue_param_t *msgqueue, Byte_t *j
*j2klen = 0; *j2klen = 0;
j2kstream = add_mainhead_msgstream( msgqueue, jpipstream, j2kstream, csn, j2klen); j2kstream = add_mainhead_msgstream( msgqueue, jpipstream, j2kstream, csn, j2klen);
if(j2kstream == NULL){
return NULL;
}
if( !get_mainheader_from_j2kstream( j2kstream, &SIZ, &COD)) if( !get_mainheader_from_j2kstream( j2kstream, &SIZ, &COD))
return j2kstream; return j2kstream;
@ -264,7 +287,13 @@ Byte_t * recons_codestream_from_JPPstream( msgqueue_param_t *msgqueue, Byte_t *j
while(( ptr = search_message( TILE_HEADER_MSG, tileID, csn, ptr))!=NULL){ while(( ptr = search_message( TILE_HEADER_MSG, tileID, csn, ptr))!=NULL){
if( ptr->bin_offset == binOffset){ if( ptr->bin_offset == binOffset){
j2kstream = add_SOTmkr( j2kstream, j2klen); j2kstream = add_SOTmkr( j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen); j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
foundTH = OPJ_TRUE; foundTH = OPJ_TRUE;
binOffset += ptr->length; binOffset += ptr->length;
} }
@ -275,8 +304,12 @@ Byte_t * recons_codestream_from_JPPstream( msgqueue_param_t *msgqueue, Byte_t *j
j2kstream = recons_bitstream( msgqueue, jpipstream, j2kstream, csn, tileID, SIZ, COD, mindeclev, &max_reslev, j2klen); j2kstream = recons_bitstream( msgqueue, jpipstream, j2kstream, csn, tileID, SIZ, COD, mindeclev, &max_reslev, j2klen);
modify_tileheader( j2kstream, SOToffset, (max_reslev<COD.numOfdecomp ? max_reslev : -1), SIZ.Csiz, j2klen); modify_tileheader( j2kstream, SOToffset, (max_reslev<COD.numOfdecomp ? max_reslev : -1), SIZ.Csiz, j2klen);
} }
else else{
j2kstream = add_emptytilestream( tileID, j2kstream, j2klen); j2kstream = add_emptytilestream( tileID, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
}
} }
if( max_reslev < COD.numOfdecomp) if( max_reslev < COD.numOfdecomp)
@ -302,6 +335,9 @@ Byte_t * add_mainhead_msgstream( msgqueue_param_t *msgqueue, Byte_t *origstream,
while(( ptr = search_message( MAINHEADER_MSG, (Byte8_t)-1, csn, ptr))!=NULL){ while(( ptr = search_message( MAINHEADER_MSG, (Byte8_t)-1, csn, ptr))!=NULL){
if( ptr->bin_offset == binOffset){ if( ptr->bin_offset == binOffset){
j2kstream = add_msgstream( ptr, origstream, j2kstream, j2klen); j2kstream = add_msgstream( ptr, origstream, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
binOffset += ptr->length; binOffset += ptr->length;
} }
ptr = ptr->next; ptr = ptr->next;
@ -316,12 +352,13 @@ Byte_t * add_SOTmkr( Byte_t *j2kstream, Byte8_t *j2klen)
buf = (Byte_t *)opj_malloc(( *j2klen)+2); buf = (Byte_t *)opj_malloc(( *j2klen)+2);
if(buf){
memcpy( buf, j2kstream, *j2klen); memcpy( buf, j2kstream, *j2klen);
memcpy( buf+(*j2klen), &SOT, 2); memcpy( buf+(*j2klen), &SOT, 2);
*j2klen += 2; *j2klen += 2;
}
if(j2kstream) opj_free(j2kstream); opj_free(j2kstream);
return buf; return buf;
} }
@ -387,9 +424,14 @@ Byte_t * recons_LRCPbitstream( msgqueue_param_t *msgqueue, Byte_t *jpipstream, B
else else
numOfprcts = 1; numOfprcts = 1;
for( c=0; c<SIZ.Csiz; c++) for( c=0; c<SIZ.Csiz; c++){
for( p=0; p<numOfprcts; p++) for( p=0; p<numOfprcts; p++){
j2kstream = recons_packet( msgqueue, jpipstream, j2kstream, csn, tileID, SIZ, COD, max_reslev, c, r, p, l, j2klen); j2kstream = recons_packet( msgqueue, jpipstream, j2kstream, csn, tileID, SIZ, COD, max_reslev, c, r, p, l, j2klen);
if(j2kstream == NULL){
return NULL;
}
}
}
} }
return j2kstream; return j2kstream;
@ -407,10 +449,16 @@ Byte_t * recons_RLCPbitstream( msgqueue_param_t *msgqueue, Byte_t *jpipstream, B
else else
numOfprcts = 1; numOfprcts = 1;
for( l=0; l<COD.numOflayers; l++) for( l=0; l<COD.numOflayers; l++){
for( c=0; c<SIZ.Csiz; c++) for( c=0; c<SIZ.Csiz; c++){
for( p=0; p<numOfprcts; p++) for( p=0; p<numOfprcts; p++){
j2kstream = recons_packet( msgqueue, jpipstream, j2kstream, csn, tileID, SIZ, COD, max_reslev, c, r, p, l, j2klen); j2kstream = recons_packet( msgqueue, jpipstream, j2kstream, csn, tileID, SIZ, COD, max_reslev, c, r, p, l, j2klen);
if(j2kstream == NULL){
return NULL;
}
}
}
}
} }
return j2kstream; return j2kstream;
@ -541,6 +589,9 @@ Byte_t * recons_packet( msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t *
if( ptr->bin_offset == binOffset){ if( ptr->bin_offset == binOffset){
if( lay_idx == l){ if( lay_idx == l){
j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen); j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
foundPrec = OPJ_TRUE; foundPrec = OPJ_TRUE;
if( *max_reslev < res_idx) if( *max_reslev < res_idx)
*max_reslev = res_idx; *max_reslev = res_idx;
@ -576,7 +627,9 @@ Byte_t * recons_precinct( msgqueue_param_t *msgqueue, Byte_t *jpipstream, Byte_t
while(( ptr = search_message( PRECINCT_MSG, precID, csn, ptr))!=NULL){ while(( ptr = search_message( PRECINCT_MSG, precID, csn, ptr))!=NULL){
if( ptr->bin_offset == binOffset){ if( ptr->bin_offset == binOffset){
j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen); j2kstream = add_msgstream( ptr, jpipstream, j2kstream, j2klen);
if(j2kstream == NULL){
return NULL;
}
foundPrec = OPJ_TRUE; foundPrec = OPJ_TRUE;
binOffset += ptr->length; binOffset += ptr->length;
if( *max_reslev < res_idx) if( *max_reslev < res_idx)
@ -659,16 +712,19 @@ Byte_t * add_msgstream( message_param_t *message, Byte_t *origstream, Byte_t *j2
return NULL; return NULL;
newstream = gene_msgstream( message, origstream, &newlen); newstream = gene_msgstream( message, origstream, &newlen);
if(newstream == NULL){
return NULL;
}
buf = (Byte_t *)opj_malloc(( *j2klen)+newlen); buf = (Byte_t *)opj_malloc(( *j2klen)+newlen);
if(buf){
memcpy( buf, j2kstream, *j2klen); memcpy( buf, j2kstream, *j2klen);
memcpy( buf+(*j2klen), newstream, newlen); memcpy( buf+(*j2klen), newstream, newlen);
*j2klen += newlen; *j2klen += newlen;
}
opj_free( newstream); opj_free( newstream);
if(j2kstream) opj_free(j2kstream); opj_free(j2kstream);
return buf; return buf;
} }
@ -678,7 +734,7 @@ Byte_t * add_emptyboxstream( placeholder_param_t *phld, Byte_t *jp2stream, Byte8
{ {
Byte_t *newstream; Byte_t *newstream;
Byte8_t newlen; Byte8_t newlen;
Byte_t *buf; Byte_t *buf = NULL;
if( phld->OrigBHlen == 8) if( phld->OrigBHlen == 8)
newlen = big4(phld->OrigBH); newlen = big4(phld->OrigBH);
@ -686,18 +742,22 @@ Byte_t * add_emptyboxstream( placeholder_param_t *phld, Byte_t *jp2stream, Byte8
newlen = big8(phld->OrigBH+8); newlen = big8(phld->OrigBH+8);
newstream = (Byte_t *)opj_malloc( newlen); newstream = (Byte_t *)opj_malloc( newlen);
if(newstream){
memset( newstream, 0, newlen); memset( newstream, 0, newlen);
memcpy( newstream, phld->OrigBH, phld->OrigBHlen); memcpy( newstream, phld->OrigBH, phld->OrigBHlen);
buf = (Byte_t *)opj_malloc(( *jp2len)+newlen); buf = (Byte_t *)opj_malloc(( *jp2len)+newlen);
if(buf){
memcpy( buf, jp2stream, *jp2len); memcpy( buf, jp2stream, *jp2len);
memcpy( buf+(*jp2len), newstream, newlen); memcpy( buf+(*jp2len), newstream, newlen);
*jp2len += newlen; *jp2len += newlen;
}
opj_free( newstream); opj_free( newstream);
if(jp2stream) opj_free(jp2stream); }
opj_free(jp2stream);
return buf; return buf;
} }
@ -706,19 +766,22 @@ Byte_t * add_emptytilestream( const Byte8_t tileID, Byte_t *j2kstream, Byte8_t *
{ {
Byte_t *newstream; Byte_t *newstream;
Byte8_t newlen; Byte8_t newlen;
Byte_t *buf; Byte_t *buf = NULL;
newstream = gene_emptytilestream( tileID, &newlen); newstream = gene_emptytilestream( tileID, &newlen);
if(newstream){
buf = (Byte_t *)opj_malloc(( *j2klen)+newlen); buf = (Byte_t *)opj_malloc(( *j2klen)+newlen);
if(buf){
memcpy( buf, j2kstream, *j2klen); memcpy( buf, j2kstream, *j2klen);
memcpy( buf+(*j2klen), newstream, newlen); memcpy( buf+(*j2klen), newstream, newlen);
*j2klen += newlen; *j2klen += newlen;
}
opj_free( newstream); opj_free( newstream);
if(j2kstream) opj_free(j2kstream); }
opj_free(j2kstream);
return buf; return buf;
} }
@ -729,12 +792,13 @@ Byte_t * add_padding( Byte8_t padding, Byte_t *j2kstream, Byte8_t *j2klen)
buf = (Byte_t *)opj_malloc(( *j2klen)+padding); buf = (Byte_t *)opj_malloc(( *j2klen)+padding);
if(buf){
memcpy( buf, j2kstream, *j2klen); memcpy( buf, j2kstream, *j2klen);
memset( buf+(*j2klen), 0, padding); memset( buf+(*j2klen), 0, padding);
*j2klen += padding; *j2klen += padding;
}
if(j2kstream) opj_free(j2kstream); opj_free(j2kstream);
return buf; return buf;
} }
@ -747,12 +811,13 @@ Byte_t * add_EOC( Byte_t *j2kstream, Byte8_t *j2klen)
buf = (Byte_t *)opj_malloc(( *j2klen)+2); buf = (Byte_t *)opj_malloc(( *j2klen)+2);
if(buf){
memcpy( buf, j2kstream, *j2klen); memcpy( buf, j2kstream, *j2klen);
memcpy( buf+(*j2klen), &EOC, 2); memcpy( buf+(*j2klen), &EOC, 2);
*j2klen += 2; *j2klen += 2;
}
if(j2kstream) opj_free(j2kstream); opj_free(j2kstream);
return buf; return buf;
} }
@ -766,8 +831,10 @@ Byte_t * gene_msgstream( message_param_t *message, Byte_t *stream, Byte8_t *leng
*length = message->length; *length = message->length;
buf = (Byte_t *)opj_malloc( *length); buf = (Byte_t *)opj_malloc( *length);
memcpy( buf, stream+message->res_offset, *length);
if(buf){
memcpy( buf, stream+message->res_offset, *length);
}
return buf; return buf;
} }
@ -784,6 +851,7 @@ Byte_t * gene_emptytilestream( const Byte8_t tileID, Byte8_t *length)
*length = 14; *length = 14;
buf = (Byte_t *)opj_malloc(*length); buf = (Byte_t *)opj_malloc(*length);
if(buf){
Isot = (Byte2_t)((((Byte2_t)tileID) << 8) | ((((Byte2_t)tileID) & 0xf0) >> 8)); Isot = (Byte2_t)((((Byte2_t)tileID) << 8) | ((((Byte2_t)tileID) & 0xf0) >> 8));
memcpy( buf, &SOT, 2); memcpy( buf, &SOT, 2);
@ -793,7 +861,7 @@ Byte_t * gene_emptytilestream( const Byte8_t tileID, Byte8_t *length)
memcpy( buf+10, &TPsot, 1); memcpy( buf+10, &TPsot, 1);
memcpy( buf+11, &TNsot, 1); memcpy( buf+11, &TNsot, 1);
memcpy( buf+12, &SOD, 2); memcpy( buf+12, &SOD, 2);
}
return buf; return buf;
} }

View File

@ -103,8 +103,10 @@ OPJ_BOOL open_channel( query_param_t query_param,
cachemodel_param_t *cachemodel = NULL; cachemodel_param_t *cachemodel = NULL;
if( target){ if( target){
if( !(*cursession)) if( !(*cursession)){
*cursession = gene_session( sessionlist); *cursession = gene_session( sessionlist);
if(*cursession == NULL) return OPJ_FALSE;
}
if( !( cachemodel = search_cachemodel( target, (*cursession)->cachemodellist))) if( !( cachemodel = search_cachemodel( target, (*cursession)->cachemodellist)))
if( !(cachemodel = gene_cachemodel( (*cursession)->cachemodellist, target, query_param.return_type==JPPstream))) if( !(cachemodel = gene_cachemodel( (*cursession)->cachemodellist, target, query_param.return_type==JPPstream)))
return OPJ_FALSE; return OPJ_FALSE;
@ -438,7 +440,7 @@ void enqueue_allprecincts( int tile_id, int level, int lastcomp, OPJ_BOOL *comps
OPJ_BOOL enqueue_metabins( query_param_t query_param, metadatalist_param_t *metadatalist, msgqueue_param_t *msgqueue) OPJ_BOOL enqueue_metabins( query_param_t query_param, metadatalist_param_t *metadatalist, msgqueue_param_t *msgqueue)
{ {
int i; int i;
for( i=0; query_param.box_type[i][0]!=0 && i<MAX_NUMOFBOX; i++){ for( i=0; i<MAX_NUMOFBOX && query_param.box_type[i][0]!=0; i++){
if( query_param.box_type[i][0] == '*'){ if( query_param.box_type[i][0] == '*'){
fprintf( FCGI_stdout, "Status: 501\r\n"); fprintf( FCGI_stdout, "Status: 501\r\n");
fprintf( FCGI_stdout, "Reason: metareq with all box-property * not implemented\r\n"); fprintf( FCGI_stdout, "Reason: metareq with all box-property * not implemented\r\n");

View File

@ -41,6 +41,8 @@
Byte_t * update_JPIPstream( Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen) Byte_t * update_JPIPstream( Byte_t *newstream, OPJ_SIZE_T newstreamlen, Byte_t *cache_stream, OPJ_SIZE_T *streamlen)
{ {
Byte_t *stream = (Byte_t *)opj_malloc( (*streamlen)+newstreamlen); Byte_t *stream = (Byte_t *)opj_malloc( (*streamlen)+newstreamlen);
if(stream == NULL) return NULL;
if( *streamlen > 0) if( *streamlen > 0)
memcpy( stream, cache_stream, *streamlen); memcpy( stream, cache_stream, *streamlen);
memcpy( stream+(*streamlen), newstream, newstreamlen); memcpy( stream+(*streamlen), newstream, newstreamlen);
@ -123,7 +125,10 @@ ihdrbox_param_t * get_SIZ_from_jpipstream( Byte_t *jpipstream, msgqueue_param_t
} }
ihdrbox = (ihdrbox_param_t *)opj_malloc( sizeof(ihdrbox_param_t)); ihdrbox = (ihdrbox_param_t *)opj_malloc( sizeof(ihdrbox_param_t));
if(ihdrbox == NULL){
opj_free( j2kstream);
return NULL;
}
ihdrbox->width = SIZ.Xsiz; ihdrbox->width = SIZ.Xsiz;
ihdrbox->height = SIZ.Ysiz; ihdrbox->height = SIZ.Ysiz;
ihdrbox->nc = SIZ.Csiz; ihdrbox->nc = SIZ.Csiz;

View File

@ -49,7 +49,8 @@ manfbox_param_t * gene_manfbox( box_param_t *box)
boxheader_param_t *last; /* last boxheader pointer of the list */ boxheader_param_t *last; /* last boxheader pointer of the list */
OPJ_OFF_T pos; /* current position in manf_box contents; */ OPJ_OFF_T pos; /* current position in manf_box contents; */
manf = ( manfbox_param_t *)malloc( sizeof( manfbox_param_t)); manf = ( manfbox_param_t *)opj_malloc( sizeof( manfbox_param_t));
if(manf == NULL) return NULL;
pos = 0; pos = 0;
manf->first = last = NULL; manf->first = last = NULL;
@ -79,10 +80,10 @@ void delete_manfbox( manfbox_param_t **manf)
#ifndef SERVER #ifndef SERVER
/* fprintf( logstream, "local log: boxheader %.4s deleted!\n", bhPtr->type); */ /* fprintf( logstream, "local log: boxheader %.4s deleted!\n", bhPtr->type); */
#endif #endif
free(bhPtr); opj_free(bhPtr);
bhPtr = bhNext; bhPtr = bhNext;
} }
free( *manf); opj_free( *manf);
} }
void print_manfbox( manfbox_param_t *manf) void print_manfbox( manfbox_param_t *manf)

View File

@ -50,7 +50,8 @@ metadatalist_param_t * gene_metadatalist(void)
{ {
metadatalist_param_t *list; metadatalist_param_t *list;
list = (metadatalist_param_t *)malloc( sizeof(metadatalist_param_t)); list = (metadatalist_param_t *)opj_malloc( sizeof(metadatalist_param_t));
if(list == NULL) return NULL;
list->first = NULL; list->first = NULL;
list->last = NULL; list->last = NULL;
@ -78,8 +79,13 @@ metadatalist_param_t * const_metadatalist( int fd)
} }
phldlist = gene_placeholderlist(); phldlist = gene_placeholderlist();
metadatalist = gene_metadatalist(); if(phldlist == NULL) return NULL;
metadatalist = gene_metadatalist();
if(metadatalist == NULL){
opj_free(phldlist);
return NULL;
}
box = toplev_boxlist->first; box = toplev_boxlist->first;
idx = 0; idx = 0;
while( box){ while( box){
@ -89,20 +95,35 @@ metadatalist_param_t * const_metadatalist( int fd)
boxcontents_param_t *boxcontents = NULL; boxcontents_param_t *boxcontents = NULL;
phld = gene_placeholder( box, ++idx); phld = gene_placeholder( box, ++idx);
if(phld == NULL){
delete_placeholderlist(&phldlist);
return NULL;
}
insert_placeholder_into_list( phld, phldlist); insert_placeholder_into_list( phld, phldlist);
boxlist = get_boxstructure( box->fd, get_DBoxoff( box), get_DBoxlen(box)); boxlist = get_boxstructure( box->fd, get_DBoxoff( box), get_DBoxlen(box));
if( !boxlist) if( !boxlist){
boxcontents = gene_boxcontents( get_DBoxoff( box), get_DBoxlen(box)); boxcontents = gene_boxcontents( get_DBoxoff( box), get_DBoxlen(box));
if(boxcontents == NULL){
delete_placeholderlist(&phldlist);
return NULL;
}
}
delete_box_in_list( &box, toplev_boxlist); delete_box_in_list( &box, toplev_boxlist);
metabin = gene_metadata( idx, boxlist, NULL, boxcontents); metabin = gene_metadata( idx, boxlist, NULL, boxcontents);
if(metabin == NULL){
delete_placeholderlist(&phldlist);
return NULL;
}
insert_metadata_into_list( metabin, metadatalist); insert_metadata_into_list( metabin, metadatalist);
} }
box = next; box = next;
} }
metabin = gene_metadata( 0, toplev_boxlist, phldlist, NULL); metabin = gene_metadata( 0, toplev_boxlist, phldlist, NULL);
if(metabin == NULL){
return NULL;
}
insert_metadata_into_list( metabin, metadatalist); insert_metadata_into_list( metabin, metadatalist);
return metadatalist; return metadatalist;
@ -119,14 +140,16 @@ void delete_metadatalist( metadatalist_param_t **list)
delete_metadata( &ptr); delete_metadata( &ptr);
ptr=next; ptr=next;
} }
free( *list); opj_free( *list);
} }
metadata_param_t * gene_metadata( Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents) metadata_param_t * gene_metadata( Byte8_t idx, boxlist_param_t *boxlist, placeholderlist_param_t *phldlist, boxcontents_param_t *boxcontents)
{ {
metadata_param_t *bin; metadata_param_t *bin;
bin = (metadata_param_t *)malloc( sizeof(metadata_param_t)); bin = (metadata_param_t *)opj_malloc( sizeof(metadata_param_t));
if(bin == NULL) return NULL;
bin->idx = idx; bin->idx = idx;
bin->boxlist = boxlist; bin->boxlist = boxlist;
bin->placeholderlist = phldlist; bin->placeholderlist = phldlist;
@ -141,11 +164,11 @@ void delete_metadata( metadata_param_t **metadata)
delete_boxlist( &((*metadata)->boxlist)); delete_boxlist( &((*metadata)->boxlist));
delete_placeholderlist( &((*metadata)->placeholderlist)); delete_placeholderlist( &((*metadata)->placeholderlist));
if((*metadata)->boxcontents) if((*metadata)->boxcontents)
free((*metadata)->boxcontents); opj_free((*metadata)->boxcontents);
#ifndef SERVER #ifndef SERVER
/* fprintf( logstream, "local log: Metadata-bin: %d deleted\n", (*metadata)->idx);*/ /* fprintf( logstream, "local log: Metadata-bin: %d deleted\n", (*metadata)->idx);*/
#endif #endif
free( *metadata); opj_free( *metadata);
} }
void insert_metadata_into_list( metadata_param_t *metabin, metadatalist_param_t *metadatalist) void insert_metadata_into_list( metadata_param_t *metabin, metadatalist_param_t *metadatalist)
@ -188,7 +211,8 @@ boxcontents_param_t * gene_boxcontents( OPJ_OFF_T offset, OPJ_SIZE_T length)
{ {
boxcontents_param_t *contents; boxcontents_param_t *contents;
contents = (boxcontents_param_t *)malloc( sizeof(boxcontents_param_t)); contents = (boxcontents_param_t *)opj_malloc( sizeof(boxcontents_param_t));
if(contents == NULL) return NULL;
contents->offset = offset; contents->offset = offset;
contents->length = length; contents->length = length;

View File

@ -50,14 +50,18 @@ mhixbox_param_t * gene_mhixbox( box_param_t *box)
markeridx_param_t *mkridx, *lastmkidx; markeridx_param_t *mkridx, *lastmkidx;
OPJ_OFF_T pos = 0; OPJ_OFF_T pos = 0;
mhix = ( mhixbox_param_t *)malloc( sizeof( mhixbox_param_t)); mhix = ( mhixbox_param_t *)opj_malloc( sizeof( mhixbox_param_t));
if(mhix == NULL) return NULL;
mhix->tlen = fetch_DBox8bytebigendian( box, (pos+=8)-8); mhix->tlen = fetch_DBox8bytebigendian( box, (pos+=8)-8);
mhix->first = lastmkidx = NULL; mhix->first = lastmkidx = NULL;
while( (OPJ_SIZE_T)pos < get_DBoxlen( box)){ while( (OPJ_SIZE_T)pos < get_DBoxlen( box)){
mkridx = ( markeridx_param_t *)malloc( sizeof( markeridx_param_t)); mkridx = ( markeridx_param_t *)opj_malloc( sizeof( markeridx_param_t));
if(mkridx == NULL){
goto fails;
}
mkridx->code = fetch_DBox2bytebigendian( box, (pos+=2)-2); mkridx->code = fetch_DBox2bytebigendian( box, (pos+=2)-2);
mkridx->num_remain = fetch_DBox2bytebigendian( box, (pos+=2)-2); mkridx->num_remain = fetch_DBox2bytebigendian( box, (pos+=2)-2);
mkridx->offset = (OPJ_OFF_T)fetch_DBox8bytebigendian( box, (pos+=8)-8); mkridx->offset = (OPJ_OFF_T)fetch_DBox8bytebigendian( box, (pos+=8)-8);
@ -71,6 +75,10 @@ mhixbox_param_t * gene_mhixbox( box_param_t *box)
lastmkidx = mkridx; lastmkidx = mkridx;
} }
return mhix; return mhix;
fails:
delete_mhixbox(&mhix);
return NULL;
} }
@ -132,10 +140,10 @@ void delete_mhixbox( mhixbox_param_t **mhix)
#ifndef SERVER #ifndef SERVER
/* fprintf( logstream, "local log: marker index %#x deleted!\n", mkPtr->code); */ /* fprintf( logstream, "local log: marker index %#x deleted!\n", mkPtr->code); */
#endif #endif
free(mkPtr); opj_free(mkPtr);
mkPtr=mkNext; mkPtr=mkNext;
} }
free(*mhix); opj_free(*mhix);
} }

View File

@ -61,6 +61,7 @@ msgqueue_param_t * gene_msgqueue( OPJ_BOOL stateless, cachemodel_param_t *cachem
msgqueue_param_t *msgqueue; msgqueue_param_t *msgqueue;
msgqueue = (msgqueue_param_t *)opj_malloc( sizeof(msgqueue_param_t)); msgqueue = (msgqueue_param_t *)opj_malloc( sizeof(msgqueue_param_t));
if(msgqueue == NULL) return NULL;
msgqueue->first = NULL; msgqueue->first = NULL;
msgqueue->last = NULL; msgqueue->last = NULL;
@ -136,7 +137,11 @@ void enqueue_mainheader( msgqueue_param_t *msgqueue)
codeidx = target->codeidx; codeidx = target->codeidx;
msg = (message_param_t *)opj_malloc( sizeof(message_param_t)); msg = (message_param_t *)opj_malloc( sizeof(message_param_t));
if(msg == NULL)
{
cachemodel->mhead_model = OPJ_FALSE;
return;
}
msg->last_byte = OPJ_TRUE; msg->last_byte = OPJ_TRUE;
msg->in_class_id = 0; msg->in_class_id = 0;
msg->class_id = MAINHEADER_MSG; msg->class_id = MAINHEADER_MSG;
@ -167,6 +172,10 @@ void enqueue_tileheader( int tile_id, msgqueue_param_t *msgqueue)
if( !cachemodel->th_model[ tile_id]){ if( !cachemodel->th_model[ tile_id]){
msg = (message_param_t *)opj_malloc( sizeof(message_param_t)); msg = (message_param_t *)opj_malloc( sizeof(message_param_t));
if(msg == NULL){
cachemodel->th_model[ tile_id] = OPJ_FALSE;
return;
}
msg->last_byte = OPJ_TRUE; msg->last_byte = OPJ_TRUE;
assert( tile_id >= 0 ); assert( tile_id >= 0 );
msg->in_class_id = (Byte8_t)tile_id; msg->in_class_id = (Byte8_t)tile_id;
@ -221,7 +230,10 @@ void enqueue_tile( Byte4_t tile_id, int level, msgqueue_param_t *msgqueue)
if( !tp_model[i]){ if( !tp_model[i]){
msg = (message_param_t *)opj_malloc( sizeof(message_param_t)); msg = (message_param_t *)opj_malloc( sizeof(message_param_t));
if(msg == NULL){
tp_model[i] = OPJ_FALSE;
return;
}
msg->last_byte = (i==numOftparts-1); msg->last_byte = (i==numOftparts-1);
msg->in_class_id = tile_id; msg->in_class_id = tile_id;
msg->class_id = class_id; msg->class_id = class_id;
@ -270,6 +282,10 @@ void enqueue_precinct( int seq_id, int tile_id, int comp_id, int layers, msgqueu
if( !cachemodel->pp_model[comp_id][tile_id*(int)nmax+seq_id*numOflayers+layer_id]){ if( !cachemodel->pp_model[comp_id][tile_id*(int)nmax+seq_id*numOflayers+layer_id]){
msg = (message_param_t *)opj_malloc( sizeof(message_param_t)); msg = (message_param_t *)opj_malloc( sizeof(message_param_t));
if(msg == NULL){
cachemodel->pp_model[comp_id][tile_id*(int)nmax+seq_id*numOflayers+layer_id] = OPJ_FALSE;
return;
}
msg->last_byte = (layer_id == (numOflayers-1)); msg->last_byte = (layer_id == (numOflayers-1));
msg->in_class_id = comp_precinct_id( tile_id, comp_id, seq_id, codeidx->SIZ.Csiz, (int)codeidx->SIZ.XTnum * (int) codeidx->SIZ.YTnum); msg->in_class_id = comp_precinct_id( tile_id, comp_id, seq_id, codeidx->SIZ.Csiz, (int)codeidx->SIZ.XTnum * (int) codeidx->SIZ.YTnum);
msg->class_id = PRECINCT_MSG; msg->class_id = PRECINCT_MSG;
@ -337,6 +353,8 @@ void enqueue_box( Byte8_t meta_id, boxlist_param_t *boxlist, msgqueue_param_t *m
assert( msgqueue->cachemodel->target->csn >= 0); assert( msgqueue->cachemodel->target->csn >= 0);
while( box){ while( box){
msg = gene_metamsg( meta_id, *binOffset, box->length, box->offset, NULL, (Byte8_t)msgqueue->cachemodel->target->csn); msg = gene_metamsg( meta_id, *binOffset, box->length, box->offset, NULL, (Byte8_t)msgqueue->cachemodel->target->csn);
if(msg == NULL) return; /* FIXME szukw000 */
enqueue_message( msg, msgqueue); enqueue_message( msg, msgqueue);
*binOffset += box->length; *binOffset += box->length;
@ -353,6 +371,8 @@ void enqueue_phld( Byte8_t meta_id, placeholderlist_param_t *phldlist, msgqueue_
assert( msgqueue->cachemodel->target->csn >= 0); assert( msgqueue->cachemodel->target->csn >= 0);
while( phld){ while( phld){
msg = gene_metamsg( meta_id, *binOffset, phld->LBox, 0, phld, (Byte8_t)msgqueue->cachemodel->target->csn); msg = gene_metamsg( meta_id, *binOffset, phld->LBox, 0, phld, (Byte8_t)msgqueue->cachemodel->target->csn);
if(msg == NULL) return; /* FIXME szukw000 */
enqueue_message( msg, msgqueue); enqueue_message( msg, msgqueue);
*binOffset += phld->LBox; *binOffset += phld->LBox;
@ -367,6 +387,8 @@ void enqueue_boxcontents( Byte8_t meta_id, boxcontents_param_t *boxcontents, msg
assert(msgqueue->cachemodel->target->csn >= 0); assert(msgqueue->cachemodel->target->csn >= 0);
msg = gene_metamsg( meta_id, *binOffset, boxcontents->length, msg = gene_metamsg( meta_id, *binOffset, boxcontents->length,
boxcontents->offset, NULL, (Byte8_t)msgqueue->cachemodel->target->csn); boxcontents->offset, NULL, (Byte8_t)msgqueue->cachemodel->target->csn);
if(msg == NULL) return;
enqueue_message( msg, msgqueue); enqueue_message( msg, msgqueue);
*binOffset += boxcontents->length; *binOffset += boxcontents->length;
@ -377,6 +399,7 @@ message_param_t * gene_metamsg( Byte8_t meta_id, Byte8_t binOffset, Byte8_t leng
message_param_t *msg; message_param_t *msg;
msg = (message_param_t *)opj_malloc( sizeof(message_param_t)); msg = (message_param_t *)opj_malloc( sizeof(message_param_t));
if(msg == NULL) return NULL;
msg->last_byte = OPJ_FALSE; msg->last_byte = OPJ_FALSE;
msg->in_class_id = meta_id; msg->in_class_id = meta_id;
@ -597,6 +620,7 @@ void parse_JPIPstream( Byte_t *JPIPstream, Byte8_t streamlen, OPJ_OFF_T offset,
ptr = JPIPstream; ptr = JPIPstream;
while( (Byte8_t)(ptr-JPIPstream) < streamlen){ while( (Byte8_t)(ptr-JPIPstream) < streamlen){
msg = (message_param_t *)opj_malloc( sizeof(message_param_t)); msg = (message_param_t *)opj_malloc( sizeof(message_param_t));
if(msg == NULL) return; /* FIXME szukw000 */
ptr = parse_bin_id_vbas( ptr, &bb, &c, &msg->in_class_id); ptr = parse_bin_id_vbas( ptr, &bb, &c, &msg->in_class_id);
@ -665,20 +689,26 @@ void parse_metadata( metadata_param_t *metadata, message_param_t *msg, Byte_t *d
msg->phld = NULL; msg->phld = NULL;
if( strncmp( boxtype, "phld", 4) == 0){ if( strncmp( boxtype, "phld", 4) == 0){
if( !metadata->placeholderlist) if( !metadata->placeholderlist){
metadata->placeholderlist = gene_placeholderlist(); metadata->placeholderlist = gene_placeholderlist();
if(metadata->placeholderlist == NULL) return;
}
phld = parse_phld( datastream, msg->length); phld = parse_phld( datastream, msg->length);
if(phld == NULL) return;
msg->phld = phld; msg->phld = phld;
insert_placeholder_into_list( phld, metadata->placeholderlist); insert_placeholder_into_list( phld, metadata->placeholderlist);
} }
else if( isalpha(boxtype[0]) && isalpha(boxtype[1]) && else if( isalpha(boxtype[0]) && isalpha(boxtype[1]) &&
(isalnum(boxtype[2])||isspace(boxtype[2])) && (isalnum(boxtype[2])||isspace(boxtype[2])) &&
(isalpha(boxtype[3])||isspace(boxtype[3]))){ (isalpha(boxtype[3])||isspace(boxtype[3]))){
if( !metadata->boxlist) if( !metadata->boxlist){
metadata->boxlist = gene_boxlist(); metadata->boxlist = gene_boxlist();
if(metadata->boxlist == NULL) return;
}
box = gene_boxbyOffinStream( datastream, msg->res_offset); box = gene_boxbyOffinStream( datastream, msg->res_offset);
if(box == NULL) return;
insert_box_into_list( box, metadata->boxlist); insert_box_into_list( box, metadata->boxlist);
} }
else else
@ -690,6 +720,7 @@ placeholder_param_t * parse_phld( Byte_t *datastream, Byte8_t metalength)
placeholder_param_t *phld; placeholder_param_t *phld;
phld = (placeholder_param_t *)opj_malloc( sizeof(placeholder_param_t)); phld = (placeholder_param_t *)opj_malloc( sizeof(placeholder_param_t));
if(phld == NULL) return NULL;
phld->LBox = big4( datastream); phld->LBox = big4( datastream);
strncpy( phld->TBox, "phld", 4); strncpy( phld->TBox, "phld", 4);
@ -697,6 +728,10 @@ placeholder_param_t * parse_phld( Byte_t *datastream, Byte8_t metalength)
phld->OrigID = big8( datastream+12); phld->OrigID = big8( datastream+12);
phld->OrigBHlen = (Byte_t)(metalength - 20); phld->OrigBHlen = (Byte_t)(metalength - 20);
phld->OrigBH = (Byte_t *)opj_malloc(phld->OrigBHlen); phld->OrigBH = (Byte_t *)opj_malloc(phld->OrigBHlen);
if(phld->OrigBH == NULL){
opj_free(phld);
return NULL;
}
memcpy( phld->OrigBH, datastream+20, phld->OrigBHlen); memcpy( phld->OrigBH, datastream+20, phld->OrigBHlen);
phld->next = NULL; phld->next = NULL;

View File

@ -58,6 +58,7 @@
server_record_t * init_JPIPserver( int tcp_auxport, int udp_auxport) server_record_t * init_JPIPserver( int tcp_auxport, int udp_auxport)
{ {
server_record_t *record = (server_record_t *)opj_malloc( sizeof(server_record_t)); server_record_t *record = (server_record_t *)opj_malloc( sizeof(server_record_t));
if(record == NULL) return NULL;
record->sessionlist = gene_sessionlist(); record->sessionlist = gene_sessionlist();
record->targetlist = gene_targetlist(); record->targetlist = gene_targetlist();
@ -80,6 +81,7 @@ QR_t * parse_querystring( const char *query_string)
QR_t *qr; QR_t *qr;
qr = (QR_t *)opj_malloc( sizeof(QR_t)); qr = (QR_t *)opj_malloc( sizeof(QR_t));
if(qr == NULL) return NULL;
qr->query = parse_query( query_string); qr->query = parse_query( query_string);
qr->msgqueue = NULL; qr->msgqueue = NULL;
@ -212,6 +214,7 @@ void local_log( OPJ_BOOL query, OPJ_BOOL messages, OPJ_BOOL sessions, OPJ_BOOL t
dec_server_record_t * OPJ_CALLCONV init_dec_server( int port) dec_server_record_t * OPJ_CALLCONV init_dec_server( int port)
{ {
dec_server_record_t *record = (dec_server_record_t *)opj_malloc( sizeof(dec_server_record_t)); dec_server_record_t *record = (dec_server_record_t *)opj_malloc( sizeof(dec_server_record_t));
if(record == NULL) return NULL;
record->cachelist = gene_cachelist(); record->cachelist = gene_cachelist();
record->jpipstream = NULL; record->jpipstream = NULL;
@ -311,6 +314,7 @@ jpip_dec_param_t * OPJ_CALLCONV init_jpipdecoder( OPJ_BOOL jp2)
jpip_dec_param_t *dec; jpip_dec_param_t *dec;
dec = (jpip_dec_param_t *)opj_calloc( 1, sizeof(jpip_dec_param_t)); dec = (jpip_dec_param_t *)opj_calloc( 1, sizeof(jpip_dec_param_t));
if(dec == NULL) return NULL;
dec->msgqueue = gene_msgqueue( OPJ_TRUE, NULL); dec->msgqueue = gene_msgqueue( OPJ_TRUE, NULL);
@ -334,7 +338,10 @@ OPJ_BOOL OPJ_CALLCONV fread_jpip( const char fname[], jpip_dec_param_t *dec)
return OPJ_FALSE; return OPJ_FALSE;
dec->jpipstream = (Byte_t *)opj_malloc( dec->jpiplen); dec->jpipstream = (Byte_t *)opj_malloc( dec->jpiplen);
if(dec->jpipstream == NULL){
close(infd);
return OPJ_FALSE;
}
if( read( infd, dec->jpipstream, dec->jpiplen) != (int)dec->jpiplen){ if( read( infd, dec->jpipstream, dec->jpiplen) != (int)dec->jpiplen){
fprintf( stderr, "file reading error\n"); fprintf( stderr, "file reading error\n");
opj_free( dec->jpipstream); opj_free( dec->jpipstream);
@ -420,6 +427,8 @@ index_t * OPJ_CALLCONV get_index_from_JP2file( int fd)
} }
data = (char *)opj_malloc( 12); /* size of header*/ data = (char *)opj_malloc( 12); /* size of header*/
if(data == NULL) return NULL;
if( read( fd, data, 12) != 12){ if( read( fd, data, 12) != 12){
opj_free( data); opj_free( data);
fprintf( stderr, "Error: File broken (read error)\n"); fprintf( stderr, "Error: File broken (read error)\n");

View File

@ -49,7 +49,8 @@ placeholderlist_param_t * gene_placeholderlist(void)
{ {
placeholderlist_param_t *list; placeholderlist_param_t *list;
list = (placeholderlist_param_t *)malloc( sizeof(placeholderlist_param_t)); list = (placeholderlist_param_t *)opj_malloc( sizeof(placeholderlist_param_t));
if(list == NULL) return NULL;
list->first = NULL; list->first = NULL;
list->last = NULL; list->last = NULL;
@ -71,14 +72,15 @@ void delete_placeholderlist( placeholderlist_param_t **list)
delete_placeholder( &ptr); delete_placeholder( &ptr);
ptr=next; ptr=next;
} }
free( *list); opj_free( *list);
} }
placeholder_param_t * gene_placeholder( box_param_t *box, Byte8_t origID) placeholder_param_t * gene_placeholder( box_param_t *box, Byte8_t origID)
{ {
placeholder_param_t *placeholder; placeholder_param_t *placeholder;
placeholder = (placeholder_param_t *)malloc( sizeof(placeholder_param_t)); placeholder = (placeholder_param_t *)opj_malloc( sizeof(placeholder_param_t));
if(placeholder == NULL) return NULL;
strncpy( placeholder->TBox, "phld", 4); strncpy( placeholder->TBox, "phld", 4);
placeholder->Flags = 1; /* only the access to the original contents of this box, for now */ placeholder->Flags = 1; /* only the access to the original contents of this box, for now */
@ -94,8 +96,8 @@ placeholder_param_t * gene_placeholder( box_param_t *box, Byte8_t origID)
void delete_placeholder( placeholder_param_t **placeholder) void delete_placeholder( placeholder_param_t **placeholder)
{ {
if( (*placeholder)->OrigBH) if( (*placeholder)->OrigBH)
free((*placeholder)->OrigBH); opj_free((*placeholder)->OrigBH);
free(*placeholder); opj_free(*placeholder);
} }
void insert_placeholder_into_list( placeholder_param_t *phld, placeholderlist_param_t *phldlist) void insert_placeholder_into_list( placeholder_param_t *phld, placeholderlist_param_t *phldlist)

View File

@ -160,6 +160,7 @@ query_param_t * get_initquery(void)
int i; int i;
query = (query_param_t *)opj_malloc( sizeof(query_param_t)); query = (query_param_t *)opj_malloc( sizeof(query_param_t));
if(query == NULL) return NULL;
query->target = NULL; query->target = NULL;
query->tid = NULL; query->tid = NULL;
@ -264,7 +265,7 @@ void print_queryparam( query_param_t query_param)
} }
fprintf( logstream, "\t req-box-prop\n"); fprintf( logstream, "\t req-box-prop\n");
for( i=0; query_param.box_type[i][0]!=0 && i<MAX_NUMOFBOX; i++){ for( i=0; i<MAX_NUMOFBOX && query_param.box_type[i][0]!=0; i++){
fprintf( logstream, "\t\t box_type: %.4s limit: %d w:%d s:%d g:%d a:%d priority:%d\n", query_param.box_type[i], query_param.limit[i], query_param.w[i], query_param.s[i], query_param.g[i], query_param.a[i], query_param.priority[i]); fprintf( logstream, "\t\t box_type: %.4s limit: %d w:%d s:%d g:%d a:%d priority:%d\n", query_param.box_type[i], query_param.limit[i], query_param.w[i], query_param.s[i], query_param.g[i], query_param.a[i], query_param.priority[i]);
} }
@ -369,7 +370,7 @@ void parse_req_box_prop( char *req_box_prop, int idx, query_param_t *query_param
if((ptr = strchr( req_box_prop, '!'))) if((ptr = strchr( req_box_prop, '!')))
query_param->priority[idx] = OPJ_TRUE; query_param->priority[idx] = OPJ_TRUE;
idx++; /* idx++; */
} }
void parse_comps( char *field, query_param_t *query_param) void parse_comps( char *field, query_param_t *query_param)
@ -400,6 +401,7 @@ void parse_comps( char *field, query_param_t *query_param)
query_param->lastcomp = stop > aux ? stop : aux; query_param->lastcomp = stop > aux ? stop : aux;
query_param->comps = (OPJ_BOOL *)opj_calloc( 1, (OPJ_SIZE_T)(query_param->lastcomp+1)*sizeof(OPJ_BOOL)); query_param->comps = (OPJ_BOOL *)opj_calloc( 1, (OPJ_SIZE_T)(query_param->lastcomp+1)*sizeof(OPJ_BOOL));
if(query_param->comps == NULL) return; /* FIXME szukw000 */
for( i=start; i<=stop; i++) for( i=start; i<=stop; i++)
query_param->comps[i]=OPJ_TRUE; query_param->comps[i]=OPJ_TRUE;

View File

@ -34,6 +34,15 @@
#include "opj_includes.h" #include "opj_includes.h"
#ifndef OPJ_BOOL
typedef int OPJ_BOOL;
#define OPJ_TRUE 1
#define OPJ_FALSE 0
#endif
#ifndef OPJ_SIZE_T
typedef size_t OPJ_SIZE_T;
#endif
/** maximum number of meta request box */ /** maximum number of meta request box */
#define MAX_NUMOFBOX 10 #define MAX_NUMOFBOX 10

View File

@ -49,6 +49,7 @@ sessionlist_param_t * gene_sessionlist(void)
sessionlist_param_t *sessionlist; sessionlist_param_t *sessionlist;
sessionlist = (sessionlist_param_t *)opj_malloc( sizeof(sessionlist_param_t)); sessionlist = (sessionlist_param_t *)opj_malloc( sizeof(sessionlist_param_t));
if(sessionlist == NULL) return NULL;
sessionlist->first = NULL; sessionlist->first = NULL;
sessionlist->last = NULL; sessionlist->last = NULL;
@ -61,6 +62,7 @@ session_param_t * gene_session( sessionlist_param_t *sessionlist)
session_param_t *session; session_param_t *session;
session = (session_param_t *)opj_malloc( sizeof(session_param_t)); session = (session_param_t *)opj_malloc( sizeof(session_param_t));
if(session == NULL) return NULL;
session->channellist = gene_channellist(); session->channellist = gene_channellist();
session->cachemodellist = gene_cachemodellist(); session->cachemodellist = gene_cachemodellist();

View File

@ -119,14 +119,16 @@ void * receive_stream( SOCKET connected_socket, OPJ_SIZE_T length)
char *stream, *ptr; char *stream, *ptr;
OPJ_SIZE_T remlen; OPJ_SIZE_T remlen;
ptr = stream = malloc( length); ptr = stream = opj_malloc( length);
if(ptr == NULL) return NULL;
remlen = length; remlen = length;
while( remlen > 0){ while( remlen > 0){
ssize_t redlen = recv( connected_socket, ptr, remlen, 0); ssize_t redlen = recv( connected_socket, ptr, remlen, 0);
if( redlen == -1){ if( redlen == -1){
fprintf( FCGI_stderr, "receive stream error\n"); fprintf( FCGI_stderr, "receive stream error\n");
free( stream); opj_free( stream);
stream = NULL; stream = NULL;
break; break;
} }

View File

@ -59,6 +59,7 @@ targetlist_param_t * gene_targetlist(void)
targetlist_param_t *targetlist; targetlist_param_t *targetlist;
targetlist = (targetlist_param_t *)opj_malloc( sizeof(targetlist_param_t)); targetlist = (targetlist_param_t *)opj_malloc( sizeof(targetlist_param_t));
if(targetlist == NULL) return NULL;
targetlist->first = NULL; targetlist->first = NULL;
targetlist->last = NULL; targetlist->last = NULL;
@ -100,6 +101,8 @@ target_param_t * gene_target( targetlist_param_t *targetlist, char *targetpath)
} }
target = (target_param_t *)opj_malloc( sizeof(target_param_t)); target = (target_param_t *)opj_malloc( sizeof(target_param_t));
if(target == NULL) return NULL;
snprintf( target->tid, MAX_LENOFTID, "%x-%x", (unsigned int)time(NULL), (unsigned int)rand()); snprintf( target->tid, MAX_LENOFTID, "%x-%x", (unsigned int)time(NULL), (unsigned int)rand());
target->targetname = strdup( targetpath); target->targetname = strdup( targetpath);
target->fd = fd; target->fd = fd;
@ -275,7 +278,10 @@ int open_jp2file( const char filepath[], char tmpfname[])
} }
data = (char *)opj_malloc( 12); /* size of header*/ data = (char *)opj_malloc( 12); /* size of header*/
if(data == NULL){
close(fd);
return -1;
}
if( read( fd, data, 12) != 12){ if( read( fd, data, 12) != 12){
opj_free( data); opj_free( data);
close(fd); close(fd);