projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fs: add fs_get_type() for current filesystem type
[oweals/u-boot.git]
/
tools
/
fdtgrep.c
diff --git
a/tools/fdtgrep.c
b/tools/fdtgrep.c
index f51f5f15f5497e063158d81efa34c8bbd11eaa2a..8f44f599c1c437525b9bfe9cb405ce6e9838a257 100644
(file)
--- a/
tools/fdtgrep.c
+++ b/
tools/fdtgrep.c
@@
-1,23
+1,25
@@
+// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (c) 2013, Google Inc.
* Written by Simon Glass <sjg@chromium.org>
*
/*
* Copyright (c) 2013, Google Inc.
* 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
* a new .dtb subset which can be used as required.
*/
#include <assert.h>
#include <ctype.h>
* Perform a grep of an FDT either displaying the source subset or producing
* a new .dtb subset which can be used as required.
*/
#include <assert.h>
#include <ctype.h>
+#include <errno.h>
#include <getopt.h>
#include <getopt.h>
+#include <fcntl.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#include
<../include/libfdt.h>
-#include
<libfdt_internal.h>
+#include
"fdt_host.h"
+#include
"libfdt_internal.h"
/* Define DEBUG to get some debugging output on stderr */
#ifdef DEBUG
/* Define DEBUG to get some debugging output on stderr */
#ifdef DEBUG
@@
-131,11
+133,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 (!str || !node) {
- fprintf(stderr, "Out of memory\n");
- return -1;
- }
+ if (!node)
+ goto err_mem;
node->next = *headp;
node->type = type;
node->include = include;
node->next = *headp;
node->type = type;
node->include = include;
@@
-143,6
+145,9
@@
static int value_add(struct display_info *disp, struct value_node **headp,
*headp = node;
return 0;
*headp = node;
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)
@@
-771,7
+776,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;
+ struct fdt_region *region
= NULL
;
int max_regions;
int count = 100;
char path[1024];
int max_regions;
int count = 100;
char path[1024];
@@
-799,7
+804,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,
* we do another pass to actually record them.
*/
* The first pass will count the regions, but if it is too many,
* we do another pass to actually record them.
*/
- for (i = 0; i <
3
; i++) {
+ for (i = 0; i <
2
; i++) {
region = malloc(count * sizeof(struct fdt_region));
if (!region) {
fprintf(stderr, "Out of memory for %d regions\n",
region = malloc(count * sizeof(struct fdt_region));
if (!region) {
fprintf(stderr, "Out of memory for %d regions\n",
@@
-813,11
+818,14
@@
static int do_fdtgrep(struct display_info *disp, const char *filename)
disp->flags);
if (count < 0) {
report_error("fdt_find_regions", count);
disp->flags);
if (count < 0) {
report_error("fdt_find_regions", count);
+ free(region);
return -1;
}
if (count <= max_regions)
break;
free(region);
return -1;
}
if (count <= max_regions)
break;
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 */