mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
s390-tools/utils: handle util_scandir errors correctly
The util_scandir_* functions may return 0 or -1, in which case no vector is allocated in libutil/util_scandir.c. util_ptr_vec_free, called by util_scandir_free or directly from lschp.c and lsscm.c, does always call free for the vector which might be not initialized. Fix this by always initializing the vector with NULL in __scandir and add some api hardening by checking the vector and count in util_ptr_vec_free before iterating over the vector. And update the comment for util_scandir to indicate that -1 may be returned in error cases plus that the vector is initialized with NULL. Fixes: https://github.com/ibm-s390-tools/s390-tools/issues/43 Reported-by: Cornelia Huck <cohuck@redhat.com> Reviewed-by: Jan Höppner <hoeppner@linux.ibm.com> Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
committed by
Jan Höppner
parent
07b11982e3
commit
cd46297d7c
@@ -42,6 +42,9 @@ static inline void util_ptr_vec_free(void **ptr_vec, int count)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!ptr_vec || count < 0)
|
||||
return;
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
free(ptr_vec[i]);
|
||||
free(ptr_vec);
|
||||
|
||||
Reference in New Issue
Block a user