mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-02 09:46:37 +03:00
tools: Handle realloc failure in strlist_add
If realloc fails, list->strings was set to NULL and it would create a leak. This commit ensures that if we cannot add a string to the list, the list stays in a good state. Signed-off-by: Francois Berder <fberder@outlook.fr>
This commit is contained in:
committed by
Tom Rini
parent
b8a820ac98
commit
3a53a03f50
@@ -733,6 +733,7 @@ static void strlist_free(struct strlist *list)
|
||||
static int strlist_add(struct strlist *list, const char *str)
|
||||
{
|
||||
char *dup;
|
||||
char **tmp = NULL;
|
||||
|
||||
if (!list || !str)
|
||||
return -1;
|
||||
@@ -741,13 +742,13 @@ static int strlist_add(struct strlist *list, const char *str)
|
||||
if(!dup)
|
||||
return -1;
|
||||
|
||||
list->strings = realloc(list->strings,
|
||||
(list->count + 1) * sizeof(char *));
|
||||
if (!list->strings) {
|
||||
tmp = realloc(list->strings, (list->count + 1) * sizeof(char *));
|
||||
if (!tmp) {
|
||||
free(dup);
|
||||
return -1;
|
||||
}
|
||||
|
||||
list->strings = tmp;
|
||||
list->strings[list->count++] = dup;
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user