@@ -338,6 +338,7 @@ adb_read_adb_blk(Pool *pool, FILE *fp, const char *fn, size_t *adblenp)
338338 adb = solv_malloc ((size_t )size );
339339 if (fread (adb , (size_t )size , 1 , fp ) != 1 )
340340 {
341+ solv_free (adb );
341342 pool_error (pool , -1 , "%s: adb block read error" , fn );
342343 return 0 ;
343344 }
@@ -353,25 +354,20 @@ apkv3_add_pkg(Repo *repo, Repodata *data, const char *fn, FILE *fp, int flags)
353354 const unsigned char * adb ;
354355 size_t adblen ;
355356 unsigned int v , cnt ;
356- Id p ;
357+ Id p = 0 ;
357358
358359 if (fread (buf , 4 , 1 , fp ) != 1 || buf [0 ] != 'p' || buf [1 ] != 'c' || buf [2 ] != 'k' || buf [3 ] != 'g' )
359360 {
360361 pool_error (pool , -1 , "%s: not an apkv3 package" , fn );
361362 return 0 ;
362363 }
363364
364- adb = adb_read_adb_blk (pool , fp , fn , & adblen );
365- if (!adb )
365+ if (!(adb = adb_read_adb_blk (pool , fp , fn , & adblen )))
366366 return 0 ;
367367
368368 v = adb_u32 (adb + 4 );
369- if (!(cnt = adb_arr (adb , adblen , v )))
370- {
371- solv_free ((void * )adb );
372- return 0 ;
373- }
374- p = adb_add_pkg_info (pool , repo , data , adb , adblen , adb_idx (adb , v , cnt , 1 ), flags );
369+ if ((cnt = adb_arr (adb , adblen , v )) != 0 )
370+ p = adb_add_pkg_info (pool , repo , data , adb , adblen , adb_idx (adb , v , cnt , 1 ), flags );
375371 if (p && (flags & APK_ADD_WITH_PKGID ) != 0 )
376372 {
377373 unsigned char pkgid [16 ];
@@ -400,25 +396,22 @@ apkv3_add_idx(Repo *repo, Repodata *data, FILE *fp, int flags)
400396 return -1 ;
401397 }
402398
403- adb = adb_read_adb_blk (pool , fp , idb ? "installed database" : "index" , & adblen );
404- if (!adb )
399+ if (!(adb = adb_read_adb_blk (pool , fp , idb ? "installed database" : "index" , & adblen )))
405400 return -1 ;
406401
407402 v = adb_u32 (adb + 4 );
408- if (!(cnt = adb_arr (adb , adblen , v )))
409- {
410- solv_free ((void * )adb );
411- return -1 ;
412- }
413- v = adb_idx (adb , v , cnt , idb ? 1 : 2 );
414403 if ((cnt = adb_arr (adb , adblen , v )) != 0 )
415404 {
416- for (idx = 1 ; idx < cnt ; idx ++ )
405+ v = adb_idx (adb , v , cnt , idb ? 1 : 2 );
406+ if ((cnt = adb_arr (adb , adblen , v )) != 0 )
417407 {
418- if (idb )
419- add_add_idb_pkg (pool , repo , data , adb , adblen , adb_idx (adb , v , cnt , idx ), flags );
420- else
421- adb_add_pkg_info (pool , repo , data , adb , adblen , adb_idx (adb , v , cnt , idx ), flags );
408+ for (idx = 1 ; idx < cnt ; idx ++ )
409+ {
410+ if (idb )
411+ add_add_idb_pkg (pool , repo , data , adb , adblen , adb_idx (adb , v , cnt , idx ), flags );
412+ else
413+ adb_add_pkg_info (pool , repo , data , adb , adblen , adb_idx (adb , v , cnt , idx ), flags );
414+ }
422415 }
423416 }
424417 solv_free ((void * )adb );
0 commit comments