[U-Boot] [PATCH v2] Prevented possible null dereference.
Niv Shetrit
niv.shetrit at altair-semi.com
Mon Aug 26 12:54:59 UTC 2019
Signed-off-by: Niv Shetrit <niv.shetrit at altair-semi.com>
---
common/cli_hush.c | 73 ++++++++++++++++++++++++-----------------------
1 file changed, 38 insertions(+), 35 deletions(-)
diff --git a/common/cli_hush.c b/common/cli_hush.c
index 8f86e4aa4a..c14302c3ad 100644
--- a/common/cli_hush.c
+++ b/common/cli_hush.c
@@ -3539,41 +3539,44 @@ static char *insert_var_value_sub(char *inp, int tag_subst)
}
inp = ++p;
/* find the ending marker */
- p = strchr(inp, SPECIAL_VAR_SYMBOL);
- *p = '\0';
- /* look up the value to substitute */
- if ((p1 = lookup_param(inp))) {
- if (tag_subst)
- len = res_str_len + strlen(p1) + 2;
- else
- len = res_str_len + strlen(p1);
- res_str = xrealloc(res_str, (1 + len));
- if (tag_subst) {
- /*
- * copy the variable value to the result
- * string
- */
- strcpy((res_str + res_str_len + 1), p1);
-
- /*
- * mark the replaced text to be accepted as
- * is
- */
- res_str[res_str_len] = SUBSTED_VAR_SYMBOL;
- res_str[res_str_len + 1 + strlen(p1)] =
- SUBSTED_VAR_SYMBOL;
- } else
- /*
- * copy the variable value to the result
- * string
- */
- strcpy((res_str + res_str_len), p1);
-
- res_str_len = len;
- }
- *p = SPECIAL_VAR_SYMBOL;
- inp = ++p;
- done = 1;
+ p = strchr(inp, SPECIAL_VAR_SYMBOL)
+ if (p != NULL) {
+ *p = '\0';
+ /* look up the value to substitute */
+ p1 = lookup_param(inp)
+ if (p1 != NULL) {
+ if (tag_subst)
+ len = res_str_len + strlen(p1) + 2;
+ else
+ len = res_str_len + strlen(p1);
+ res_str = xrealloc(res_str, (1 + len));
+ if (tag_subst) {
+ /*
+ * copy the variable value to the
+ * result string
+ */
+ strcpy((res_str + res_str_len + 1), p1);
+
+ /*
+ * mark the replaced text to be
+ * accepted as is
+ */
+ res_str[res_str_len] = SUBSTED_VAR_SYMBOL;
+ res_str[res_str_len + 1 + strlen(p1)] =
+ SUBSTED_VAR_SYMBOL;
+ } else
+ /*
+ * copy the variable value to the result
+ * string
+ */
+ strcpy((res_str + res_str_len), p1);
+
+ res_str_len = len;
+ }
+ *p = SPECIAL_VAR_SYMBOL;
+ inp = ++p;
+ done = 1;
+ }
}
if (done) {
res_str = xrealloc(res_str, (1 + res_str_len + strlen(inp)));
--
2.17.1
More information about the U-Boot
mailing list