Commit 5bd28da8 authored by Oleg Dzhimiev's avatar Oleg Dzhimiev

fdtgerp

parent 0cbec1fd
// SPDX-License-Identifier: GPL-2.0+
/* /*
* Copyright (c) 2013, Google Inc. * Copyright (c) 2013, Google Inc.
* Written by Simon Glass <sjg@chromium.org> * Written by Simon Glass <sjg@chromium.org>
* *
* SPDX-License-Identifier: GPL-2.0+
*
* Perform a grep of an FDT either displaying the source subset or producing * Perform a grep of an FDT either displaying the source subset or producing
* a new .dtb subset which can be used as required. * a new .dtb subset which can be used as required.
*/ */
...@@ -133,11 +134,11 @@ static int value_add(struct display_info *disp, struct value_node **headp, ...@@ -133,11 +134,11 @@ static int value_add(struct display_info *disp, struct value_node **headp,
} }
str = strdup(str); str = strdup(str);
if (!str)
goto err_mem;
node = malloc(sizeof(*node)); node = malloc(sizeof(*node));
if (!node) if (!str || !node) {
goto err_mem; fprintf(stderr, "Out of memory\n");
return -1;
}
node->next = *headp; node->next = *headp;
node->type = type; node->type = type;
node->include = include; node->include = include;
...@@ -145,9 +146,6 @@ static int value_add(struct display_info *disp, struct value_node **headp, ...@@ -145,9 +146,6 @@ static int value_add(struct display_info *disp, struct value_node **headp,
*headp = node; *headp = node;
return 0; return 0;
err_mem:
fprintf(stderr, "Out of memory\n");
return -1;
} }
static bool util_is_printable_string(const void *data, int len) static bool util_is_printable_string(const void *data, int len)
...@@ -776,7 +774,7 @@ char *utilfdt_read(const char *filename) ...@@ -776,7 +774,7 @@ char *utilfdt_read(const char *filename)
*/ */
static int do_fdtgrep(struct display_info *disp, const char *filename) static int do_fdtgrep(struct display_info *disp, const char *filename)
{ {
struct fdt_region *region = NULL; struct fdt_region *region;
int max_regions; int max_regions;
int count = 100; int count = 100;
char path[1024]; char path[1024];
...@@ -804,7 +802,7 @@ static int do_fdtgrep(struct display_info *disp, const char *filename) ...@@ -804,7 +802,7 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
* The first pass will count the regions, but if it is too many, * The first pass will count the regions, but if it is too many,
* we do another pass to actually record them. * we do another pass to actually record them.
*/ */
for (i = 0; i < 2; i++) { for (i = 0; i < 3; i++) {
region = malloc(count * sizeof(struct fdt_region)); region = malloc(count * sizeof(struct fdt_region));
if (!region) { if (!region) {
fprintf(stderr, "Out of memory for %d regions\n", fprintf(stderr, "Out of memory for %d regions\n",
...@@ -818,14 +816,11 @@ static int do_fdtgrep(struct display_info *disp, const char *filename) ...@@ -818,14 +816,11 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
disp->flags); disp->flags);
if (count < 0) { if (count < 0) {
report_error("fdt_find_regions", count); report_error("fdt_find_regions", count);
free(region);
return -1; return -1;
} }
if (count <= max_regions) if (count <= max_regions)
break; break;
free(region); free(region);
fprintf(stderr, "Internal error with fdtgrep_find_region)(\n");
return -1;
} }
/* Optionally print a list of regions */ /* Optionally print a list of regions */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment