@@ -205,7 +205,7 @@ static int64_t sevenzip_file_read(
205205
206206 for (i = 0 ; i < db .NumFiles ; i ++ )
207207 {
208- size_t len ;
208+ size_t _len ;
209209 char infile [PATH_MAX_LENGTH ];
210210 size_t offset = 0 ;
211211 size_t outSizeProcessed = 0 ;
@@ -215,14 +215,14 @@ static int64_t sevenzip_file_read(
215215 if (SzArEx_IsDir (& db , i ))
216216 continue ;
217217
218- len = SzArEx_GetFileNameUtf16 (& db , i , NULL );
218+ _len = SzArEx_GetFileNameUtf16 (& db , i , NULL );
219219
220- if (len > temp_size )
220+ if (_len > temp_size )
221221 {
222222 if (temp )
223223 free (temp );
224- temp_size = len ;
225- temp = (uint16_t * )malloc (temp_size * sizeof (temp [0 ]));
224+ temp_size = _len ;
225+ temp = (uint16_t * )malloc (temp_size * sizeof (temp [0 ]));
226226
227227 if (temp == 0 )
228228 {
@@ -414,7 +414,6 @@ static int sevenzip_parse_file_init(file_archive_transfer_t *state,
414414static int sevenzip_parse_file_iterate_step_internal (
415415 struct sevenzip_context_t * sevenzip_context ,
416416 char * s ,
417- size_t len ,
418417 const uint8_t * * cdata ,
419418 unsigned * cmode ,
420419 uint32_t * size ,
@@ -425,7 +424,7 @@ static int sevenzip_parse_file_iterate_step_internal(
425424{
426425 if (sevenzip_context -> parse_index < sevenzip_context -> db .NumFiles )
427426 {
428- size_t len = SzArEx_GetFileNameUtf16 (& sevenzip_context -> db ,
427+ size_t _len = SzArEx_GetFileNameUtf16 (& sevenzip_context -> db ,
429428 sevenzip_context -> parse_index , NULL );
430429 uint64_t compressed_size = 0 ;
431430
@@ -437,28 +436,33 @@ static int sevenzip_parse_file_iterate_step_internal(
437436 sevenzip_context -> packIndex ++ ;
438437 }
439438
440- if ( (len < PATH_MAX_LENGTH )
439+ if ( (_len < PATH_MAX_LENGTH )
441440 && !SzArEx_IsDir (& sevenzip_context -> db , sevenzip_context -> parse_index ))
442441 {
442+ char infile [PATH_MAX_LENGTH ];
443443 SRes res = SZ_ERROR_FAIL ;
444- uint16_t * temp = (uint16_t * )malloc (len * sizeof (uint16_t ));
444+ uint16_t * temp = (uint16_t * )malloc (_len * sizeof (uint16_t ));
445445
446446 if (!temp )
447447 return -1 ;
448448
449+ infile [0 ] = '\0' ;
450+
449451 SzArEx_GetFileNameUtf16 (& sevenzip_context -> db , sevenzip_context -> parse_index ,
450452 temp );
451453
452454 if (temp )
453455 {
454- res = utf16_to_char_string (temp , s , len )
456+ res = utf16_to_char_string (temp , infile , sizeof ( infile ) )
455457 ? SZ_OK : SZ_ERROR_FAIL ;
456458 free (temp );
457459 }
458460
459461 if (res != SZ_OK )
460462 return -1 ;
461463
464+ strlcpy (s , infile , PATH_MAX_LENGTH );
465+
462466 * cmode = 0 ; /* unused for 7zip */
463467 * checksum = sevenzip_context -> db .CRCs .Vals [sevenzip_context -> parse_index ];
464468 * size = (uint32_t )SzArEx_GetFileSize (& sevenzip_context -> db , sevenzip_context -> parse_index );
@@ -492,7 +496,6 @@ static int sevenzip_parse_file_iterate_step(void *context,
492496
493497 ret = sevenzip_parse_file_iterate_step_internal (sevenzip_context ,
494498 userdata -> current_file_path ,
495- sizeof (userdata -> current_file_path ),
496499 & cdata , & cmode , & size , & csize ,
497500 & checksum , & payload , userdata );
498501
0 commit comments