diff options
author | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-01-24 23:40:45 +0100 |
---|---|---|
committer | David Oberhollenzer <david.oberhollenzer@sigma-star.at> | 2020-02-09 22:13:18 +0100 |
commit | 24b0e6277b36c46075e2e23896aa9ec43729efab (patch) | |
tree | aee635ca55a8b59f1551734eb93dac6a3a7239fa | |
parent | 4233a39933277b0d715d59d72942a8fd65bcec4a (diff) |
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 <david.oberhollenzer@sigma-star.at>
-rw-r--r-- | lib/libmtd.c | 2 | ||||
-rw-r--r-- | lib/libubi.c | 1 | ||||
-rw-r--r-- | misc-utils/recv_image.c | 3 |
3 files changed, 4 insertions, 2 deletions
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; diff --git a/misc-utils/recv_image.c b/misc-utils/recv_image.c index 7f6662b..eeaa2e2 100644 --- a/misc-utils/recv_image.c +++ b/misc-utils/recv_image.c @@ -81,8 +81,7 @@ int main(int argc, char **argv) printf("Receive to MTD device %s with erasesize %d\n", argv[3], meminfo.erasesize); } - } - if (flfd == -1) { + } else { /* Try again, as if it's a file */ flfd = open(argv[3], O_CREAT|O_TRUNC|O_RDWR, 0644); if (flfd < 0) { |