@@ -2158,10 +2158,8 @@ static int exif_file_sections_realloc(image_info_type *ImageInfo, int section_in
21582158*/ 
21592159static  void  exif_file_sections_free (image_info_type  * ImageInfo )
21602160{
2161- 	int  i ;
2162- 
21632161	if  (ImageInfo -> file .count ) {
2164- 		for  (i = 0 ; i < ImageInfo -> file .count ; i ++ ) {
2162+ 		for  (int   i   =   0 ; i < ImageInfo -> file .count ; i ++ ) {
21652163			EFREE_IF (ImageInfo -> file .list [i ].data );
21662164		}
21672165	}
@@ -2403,11 +2401,10 @@ static void exif_iif_add_buffer(image_info_type *image_info, int section_index,
24032401 Free memory allocated for image_info 
24042402*/ 
24052403static  void  exif_iif_free (image_info_type  * image_info , int  section_index ) {
2406- 	int   i ;
24072404	void  * f ; /* faster */ 
24082405
24092406	if  (image_info -> info_list [section_index ].count ) {
2410- 		for  (i = 0 ; i  <  image_info -> info_list [section_index ].count ; i ++ ) {
2407+ 		for  (int   i   =   0 ; i  <  image_info -> info_list [section_index ].count ; i ++ ) {
24112408			if  ((f = image_info -> info_list [section_index ].list [i ].name ) !=  NULL ) {
24122409				efree (f );
24132410			}
@@ -2448,7 +2445,6 @@ static void exif_iif_free(image_info_type *image_info, int section_index) {
24482445 * Add image_info to associative array value. */ 
24492446static  void  add_assoc_image_info (zval  * value , int  sub_array , image_info_type  * image_info , int  section_index )
24502447{
2451- 	char  buffer [64 ], uname [64 ];
24522448	int  idx  =  0 , unknown  =  0 ;
24532449
24542450	if  (!image_info -> info_list [section_index ].count ) {
@@ -2466,6 +2462,8 @@ static void add_assoc_image_info(zval *value, int sub_array, image_info_type *im
24662462		image_info_data  * info_data  =  & image_info -> info_list [section_index ].list [i ];
24672463		image_info_value  * info_value  =  & info_data -> value ;
24682464		const  char  * name  =  info_data -> name ;
2465+ 		char  uname [64 ];
2466+ 
24692467		if  (!name ) {
24702468			snprintf (uname , sizeof (uname ), "%d" , unknown ++ );
24712469			name  =  uname ;
@@ -2516,6 +2514,7 @@ static void add_assoc_image_info(zval *value, int sub_array, image_info_type *im
25162514						array_init (& array );
25172515					}
25182516					for  (int  ap  =  0 ; ap  <  l ; ap ++ ) {
2517+ 						char  buffer [64 ];
25192518						if  (l > 1 ) {
25202519							info_value  =  & info_data -> value .list [ap ];
25212520						}
@@ -2785,8 +2784,7 @@ PHP_FUNCTION(exif_tagname)
27852784 * Create a value for an ifd from an info_data pointer */ 
27862785static  void *  exif_ifd_make_value (image_info_data  * info_data , int  motorola_intel ) {
27872786	size_t   byte_count ;
2788- 	char     * value_ptr , * data_ptr ;
2789- 	size_t   i ;
2787+ 	char     * value_ptr ;
27902788
27912789	image_info_value   * info_value ;
27922790
@@ -2808,8 +2806,8 @@ static void* exif_ifd_make_value(image_info_data *info_data, int motorola_intel)
28082806		* value_ptr  =  info_data -> value .i ;
28092807		return  value_ptr ;
28102808	} else  {
2811- 		data_ptr  =  value_ptr ;
2812- 		for (i = 0 ; i < info_data -> length ; i ++ ) {
2809+ 		char   * data_ptr  =  value_ptr ;
2810+ 		for (size_t   i   =   0 ; i   <   info_data -> length ; i ++ ) {
28132811			if  (info_data -> length == 1 ) {
28142812				info_value  =  & info_data -> value ;
28152813			} else  {
@@ -3032,15 +3030,14 @@ static int exif_process_string(char **result, const char *value, size_t byte_cou
30323030 * Process UserComment in IFD. */ 
30333031static  int  exif_process_user_comment (const  image_info_type  * ImageInfo , char  * * pszInfoPtr , char  * * pszEncoding , char  * szValuePtr , int  ByteCount )
30343032{
3035- 	int    a ;
3036- 	char   * decode ;
30373033	size_t  len ;
30383034
30393035	* pszEncoding  =  NULL ;
30403036	/* Copy the comment */ 
30413037	if  (ByteCount >=8 ) {
30423038		const  zend_encoding  * from , * to ;
30433039		if  (!memcmp (szValuePtr , "UNICODE\0" , 8 )) {
3040+ 			char   * decode ;
30443041			* pszEncoding  =  estrdup (szValuePtr );
30453042			szValuePtr  =  szValuePtr + 8 ;
30463043			ByteCount  -=  8 ;
@@ -3105,7 +3102,7 @@ static int exif_process_user_comment(const image_info_type *ImageInfo, char **ps
31053102
31063103	/* Olympus has this padded with trailing spaces.  Remove these first. */ 
31073104	if  (ByteCount > 0 ) {
3108- 		for  (a = ByteCount - 1 ;a  &&  szValuePtr [a ]== ' ' ;a -- ) {
3105+ 		for  (int   a   =   ByteCount - 1 ;  a  &&  szValuePtr [a ]== ' ' ;  a -- ) {
31093106			(szValuePtr )[a ] =  '\0' ;
31103107		}
31113108	}
@@ -3141,14 +3138,13 @@ static int exif_process_unicode(const image_info_type *ImageInfo, xp_field_type
31413138 * Process nested IFDs directories in Maker Note. */ 
31423139static  bool  exif_process_IFD_in_MAKERNOTE (image_info_type  * ImageInfo , char  *  value_ptr , int  value_len , const  exif_offset_info  * info , size_t  displacement )
31433140{
3144- 	size_t  i ;
3145- 	int  de , section_index  =  SECTION_MAKERNOTE ;
3141+ 	int  section_index  =  SECTION_MAKERNOTE ;
31463142	int  NumDirEntries , old_motorola_intel ;
31473143	const  maker_note_type  * maker_note ;
31483144	char  * dir_start ;
31493145	exif_offset_info  new_info ;
31503146
3151- 	for  (i = 0 ; i <= sizeof (maker_note_array )/sizeof (maker_note_type ); i ++ ) {
3147+ 	for  (size_t   i   =   0 ; i  <=  sizeof (maker_note_array )/sizeof (maker_note_type ); i ++ ) {
31523148		if  (i == sizeof (maker_note_array )/sizeof (maker_note_type )) {
31533149#ifdef  EXIF_DEBUG 
31543150			exif_error_docref (NULL  EXIFERR_CC , ImageInfo , E_NOTICE , "No maker note data found. Detected maker: %s (length = %d)" , ImageInfo -> make , ImageInfo -> make  ? strlen (ImageInfo -> make ) : 0 );
@@ -3229,7 +3225,7 @@ static bool exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * val
32293225			break ;
32303226	}
32313227
3232- 	for  (de = 0 ; de < NumDirEntries ;de ++ ) {
3228+ 	for  (int   de   =   0 ;  de   <   NumDirEntries ;  de ++ ) {
32333229		size_t  offset  =  2  +  12  *  de ;
32343230		if  (!exif_process_IFD_TAG (ImageInfo , dir_start  +  offset ,
32353231								  info , displacement , section_index , 0 , maker_note -> tag_table )) {
@@ -3257,16 +3253,10 @@ static bool exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * val
32573253 * Process one of the nested IFDs directories. */ 
32583254static  bool  exif_process_IFD_TAG_impl (image_info_type  * ImageInfo , char  * dir_entry , const  exif_offset_info  * info , size_t  displacement , int  section_index , int  ReadNextIFD , tag_table_type  tag_table )
32593255{
3260- 	size_t  length ;
32613256	unsigned int   tag , format , components ;
32623257	char  * value_ptr , tagname [64 ], cbuf [32 ], * outside = NULL ;
3263- 	size_t  byte_count , offset_val ,  fpos ,  fgot ;
3258+ 	size_t  byte_count , offset_val ;
32643259	int64_t  byte_count_signed ;
3265- 	xp_field_type  * tmp_xp ;
3266- #ifdef  EXIF_DEBUG 
3267- 	char  * dump_data ;
3268- 	int  dump_free ;
3269- #endif  /* EXIF_DEBUG */ 
32703260
32713261	tag  =  php_ifd_get16u (dir_entry , ImageInfo -> motorola_intel );
32723262	format  =  php_ifd_get16u (dir_entry + 2 , ImageInfo -> motorola_intel );
@@ -3314,9 +3304,9 @@ static bool exif_process_IFD_TAG_impl(image_info_type *ImageInfo, char *dir_entr
33143304				value_ptr  =  cbuf ;
33153305			}
33163306
3317- 			fpos  =  php_stream_tell (ImageInfo -> infile );
3307+ 			size_t   fpos  =  php_stream_tell (ImageInfo -> infile );
33183308			php_stream_seek (ImageInfo -> infile , displacement + offset_val , SEEK_SET );
3319- 			fgot  =  php_stream_tell (ImageInfo -> infile );
3309+ 			size_t   fgot  =  php_stream_tell (ImageInfo -> infile );
33203310			if  (fgot != displacement + offset_val ) {
33213311				EFREE_IF (outside );
33223312				exif_error_docref (NULL  EXIFERR_CC , ImageInfo , E_WARNING , "Wrong file pointer: 0x%08X != 0x%08X" , fgot , displacement + offset_val );
@@ -3339,7 +3329,8 @@ static bool exif_process_IFD_TAG_impl(image_info_type *ImageInfo, char *dir_entr
33393329
33403330	ImageInfo -> sections_found  |= FOUND_ANY_TAG ;
33413331#ifdef  EXIF_DEBUG 
3342- 	dump_data  =  exif_dump_data (& dump_free , format , components , ImageInfo -> motorola_intel , value_ptr );
3332+ 	int  dump_free ;
3333+ 	char  * dump_data  =  exif_dump_data (& dump_free , format , components , ImageInfo -> motorola_intel , value_ptr );
33433334	exif_error_docref (NULL  EXIFERR_CC , ImageInfo , E_NOTICE ,
33443335		"Process tag(x%04X=%s,@0x%04X + x%04X(=%d)): %s%s %s" ,
33453336		tag , exif_get_tagname_debug (tag , tag_table ), offset_val + displacement , byte_count , byte_count , (components > 1 )&& format != TAG_FMT_UNDEFINED && format != TAG_FMT_STRING ?"ARRAY OF " :"" , exif_get_tagformat (format ), dump_data );
@@ -3392,7 +3383,8 @@ static bool exif_process_IFD_TAG_impl(image_info_type *ImageInfo, char *dir_entr
33923383	} else  {
33933384		if  (section_index == SECTION_IFD0  ||  section_index == SECTION_EXIF )
33943385		switch (tag ) {
3395- 			case  TAG_COPYRIGHT :
3386+ 			case  TAG_COPYRIGHT : {
3387+ 				size_t  length ;
33963388				/* check for "<photographer> NUL <editor> NUL" */ 
33973389				if  (byte_count > 1  &&  (length = zend_strnlen (value_ptr , byte_count )) >  0 ) {
33983390					if  (length < byte_count - 1 ) {
@@ -3412,6 +3404,7 @@ static bool exif_process_IFD_TAG_impl(image_info_type *ImageInfo, char *dir_entr
34123404					}
34133405				}
34143406				break ;
3407+ 			}
34153408
34163409			case  TAG_USERCOMMENT :
34173410				EFREE_IF (ImageInfo -> UserComment );
@@ -3425,13 +3418,14 @@ static bool exif_process_IFD_TAG_impl(image_info_type *ImageInfo, char *dir_entr
34253418			case  TAG_XP_COMMENTS :
34263419			case  TAG_XP_AUTHOR :
34273420			case  TAG_XP_KEYWORDS :
3428- 			case  TAG_XP_SUBJECT :
3429- 				tmp_xp  =  (xp_field_type * )safe_erealloc (ImageInfo -> xp_fields .list , (ImageInfo -> xp_fields .count + 1 ), sizeof (xp_field_type ), 0 );
3421+ 			case  TAG_XP_SUBJECT : { 
3422+ 				xp_field_type   * tmp_xp  =  (xp_field_type * )safe_erealloc (ImageInfo -> xp_fields .list , (ImageInfo -> xp_fields .count + 1 ), sizeof (xp_field_type ), 0 );
34303423				ImageInfo -> sections_found  |= FOUND_WINXP ;
34313424				ImageInfo -> xp_fields .list  =  tmp_xp ;
34323425				ImageInfo -> xp_fields .count ++ ;
34333426				exif_process_unicode (ImageInfo , & (ImageInfo -> xp_fields .list [ImageInfo -> xp_fields .count - 1 ]), tag , value_ptr , byte_count );
34343427				break ;
3428+ 			}
34353429
34363430			case  TAG_FNUMBER :
34373431				/* Simplest way of expressing aperture, so I trust it the most. 
@@ -4032,7 +4026,7 @@ static bool exif_process_IFD_in_TIFF_impl(image_info_type *ImageInfo, size_t dir
40324026{
40334027	int  i , sn , num_entries , sub_section_index  =  0 ;
40344028	unsigned char   * dir_entry ;
4035- 	size_t  ifd_size , dir_size , entry_offset ,  next_offset , entry_length , entry_value = 0 ,  fgot ;
4029+ 	size_t  ifd_size , dir_size , next_offset , entry_length , entry_value = 0 ;
40364030	int  entry_tag  , entry_type ;
40374031	tag_table_type  tag_table  =  exif_get_tag_table (section_index );
40384032
@@ -4119,7 +4113,7 @@ static bool exif_process_IFD_in_TIFF_impl(image_info_type *ImageInfo, size_t dir
41194113							break ;
41204114					}
41214115				} else  {
4122- 					entry_offset  =  php_ifd_get32u (dir_entry + 8 , ImageInfo -> motorola_intel );
4116+ 					size_t   entry_offset  =  php_ifd_get32u (dir_entry + 8 , ImageInfo -> motorola_intel );
41234117					/* if entry needs expanding ifd cache and entry is at end of current ifd cache. */ 
41244118					/* otherwise there may be huge holes between two entries */ 
41254119					if  (entry_offset  +  entry_length  >  dir_offset  +  ifd_size 
@@ -4178,7 +4172,7 @@ static bool exif_process_IFD_in_TIFF_impl(image_info_type *ImageInfo, size_t dir
41784172								sub_section_index  =  SECTION_THUMBNAIL ;
41794173								break ;
41804174						}
4181- 						entry_offset  =  php_ifd_get32u (dir_entry + 8 , ImageInfo -> motorola_intel );
4175+ 						size_t   entry_offset  =  php_ifd_get32u (dir_entry + 8 , ImageInfo -> motorola_intel );
41824176#ifdef  EXIF_DEBUG 
41834177						exif_error_docref (NULL  EXIFERR_CC , ImageInfo , E_NOTICE , "Next IFD: %s @0x%04X" , exif_get_sectionname (sub_section_index ), entry_offset );
41844178#endif 
@@ -4195,7 +4189,7 @@ static bool exif_process_IFD_in_TIFF_impl(image_info_type *ImageInfo, size_t dir
41954189								if  (!ImageInfo -> Thumbnail .data ) {
41964190									ImageInfo -> Thumbnail .data  =  safe_emalloc (ImageInfo -> Thumbnail .size , 1 , 0 );
41974191									php_stream_seek (ImageInfo -> infile , ImageInfo -> Thumbnail .offset , SEEK_SET );
4198- 									fgot  =  exif_read_from_stream_file_looped (ImageInfo -> infile , ImageInfo -> Thumbnail .data , ImageInfo -> Thumbnail .size );
4192+ 									size_t   fgot  =  exif_read_from_stream_file_looped (ImageInfo -> infile , ImageInfo -> Thumbnail .data , ImageInfo -> Thumbnail .size );
41994193									if  (fgot  !=  ImageInfo -> Thumbnail .size ) {
42004194										EXIF_ERRLOG_THUMBEOF (ImageInfo )
42014195										efree (ImageInfo -> Thumbnail .data );
@@ -4235,7 +4229,7 @@ static bool exif_process_IFD_in_TIFF_impl(image_info_type *ImageInfo, size_t dir
42354229					if  (!ImageInfo -> Thumbnail .data  &&  ImageInfo -> Thumbnail .offset  &&  ImageInfo -> Thumbnail .size  &&  ImageInfo -> read_thumbnail ) {
42364230						ImageInfo -> Thumbnail .data  =  safe_emalloc (ImageInfo -> Thumbnail .size , 1 , 0 );
42374231						php_stream_seek (ImageInfo -> infile , ImageInfo -> Thumbnail .offset , SEEK_SET );
4238- 						fgot  =  exif_read_from_stream_file_looped (ImageInfo -> infile , ImageInfo -> Thumbnail .data , ImageInfo -> Thumbnail .size );
4232+ 						size_t   fgot  =  exif_read_from_stream_file_looped (ImageInfo -> infile , ImageInfo -> Thumbnail .data , ImageInfo -> Thumbnail .size );
42394233						if  (fgot  !=  ImageInfo -> Thumbnail .size ) {
42404234							EXIF_ERRLOG_THUMBEOF (ImageInfo )
42414235							efree (ImageInfo -> Thumbnail .data );
@@ -4494,7 +4488,7 @@ PHP_FUNCTION(exif_read_data)
44944488	bool  ret ;
44954489	int  i , sections_needed  =  0 ;
44964490	image_info_type  ImageInfo ;
4497- 	char  tmp [ 64 ],  * sections_str ,  * s ;
4491+ 	char  * sections_str ;
44984492
44994493	/* Parse arguments */ 
45004494	ZEND_PARSE_PARAMETERS_START (1 , 4 )
@@ -4510,14 +4504,15 @@ PHP_FUNCTION(exif_read_data)
45104504	if  (z_sections_needed ) {
45114505		spprintf (& sections_str , 0 , ",%s ,", ZSTR_VAL (z_sections_needed ));
45124506		/* sections_str DOES start with , and SPACES are NOT allowed in names */ 
4513- 		s  =  sections_str ;
4507+ 		char   * s  =  sections_str ;
45144508		while  (* ++ s ) {
45154509			if  (* s  ==  ' ' ) {
45164510				* s  =  ',' ;
45174511			}
45184512		}
45194513
45204514		for  (i  =  0 ; i  <  SECTION_COUNT ; i ++ ) {
4515+ 			char  tmp [64 ];
45214516			snprintf (tmp , sizeof (tmp ), ",%s," , exif_get_sectionname (i ));
45224517			if  (strstr (sections_str , tmp )) {
45234518				sections_needed  |= 1 <<i ;
0 commit comments