[U-Boot] [PATCH 5/8] fdtgrep: Separate out checking of two allocations
Heinrich Schuchardt
xypron.glpk at gmx.de
Sat Jun 9 19:46:51 UTC 2018
On 06/09/2018 08:22 PM, Simon Glass wrote:
> The current code might succeed on the first allocation and fail on the
> second. Separate the checks to avoid this problem.
>
> Of course, free() will never fail and the chances that (when allocating
> two small areas) one will succeed and one will fail are just as remote.
> But this keeps coverity happy.
>
> Reported-by: Coverity (CID: 131226)
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> tools/fdtgrep.c | 11 +++++++----
> 1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c
> index c4563e2289..5593b42203 100644
> --- a/tools/fdtgrep.c
> +++ b/tools/fdtgrep.c
> @@ -133,11 +133,11 @@ static int value_add(struct display_info *disp, struct value_node **headp,
> }
>
> str = strdup(str);
> + if (!str)
> + goto err_mem;
> node = malloc(sizeof(*node));
> - if (!str || !node) {
> - fprintf(stderr, "Out of memory\n");
> - return -1;
> - }
> + if (!node)
> + goto err_mem;
> node->next = *headp;
> node->type = type;
> node->include = include;
> @@ -145,6 +145,9 @@ static int value_add(struct display_info *disp, struct value_node **headp,
> *headp = node;
>
free(str) is missing here.
> return 0;
> +err_mem:
free(str) is missing here.
Best regards
Heinrich
> + fprintf(stderr, "Out of memory\n");
> + return -1;
> }
>
> static bool util_is_printable_string(const void *data, int len)
>
More information about the U-Boot
mailing list