From 24b0e6277b36c46075e2e23896aa9ec43729efab Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Fri, 24 Jan 2020 23:40:45 +0100 Subject: mtd-utils: Fix some simple cases of uninitialized value reads This patch modifies the internal helpers to read and parse integers from sysfs files by initializing them first and removes turns an obscure "a = open(...) if (a >= 0) {...} if (a == -1) {...}" inside recv_image into a more straight forward if/else branch. Signed-off-by: David Oberhollenzer --- lib/libmtd.c | 2 ++ lib/libubi.c | 1 + 2 files changed, 3 insertions(+) (limited to 'lib') diff --git a/lib/libmtd.c b/lib/libmtd.c index 564e5c0..9d8d0e8 100644 --- a/lib/libmtd.c +++ b/lib/libmtd.c @@ -217,6 +217,7 @@ static int read_hex_ll(const char *file, long long *value) } buf[rd] = '\0'; + *value = 0; if (sscanf(buf, "%llx\n", value) != 1) { errmsg("cannot read integer from \"%s\"\n", file); errno = EINVAL; @@ -269,6 +270,7 @@ static int read_pos_ll(const char *file, long long *value) goto out_error; } + *value = 0; if (sscanf(buf, "%lld\n", value) != 1) { errmsg("cannot read integer from \"%s\"\n", file); errno = EINVAL; diff --git a/lib/libubi.c b/lib/libubi.c index 4322a19..aaeeb38 100644 --- a/lib/libubi.c +++ b/lib/libubi.c @@ -94,6 +94,7 @@ static int read_positive_ll(const char *file, long long *value) } buf[rd] = '\0'; + *value = 0; if (sscanf(buf, "%lld\n", value) != 1) { errmsg("cannot read integer from \"%s\"\n", file); errno = EINVAL; -- cgit v1.2.3