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 <s...@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) > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot