diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-07-19 20:46:17 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-07-21 11:37:58 +0200 |
commit | db6d9faeb0179b15cf29e87bd20d29d6210142ef (patch) | |
tree | 81d0e366febd9471f8ebf5ea175014f56ff17233 /src/boot | |
parent | 5fa6c13c7bd6df488c0585608688a5feb8a03d5d (diff) |
bootctl: clean up get_file_version()
Make sure that we always initialize the return parameter on success, and that
all errors result in an error message, not just some.
Diffstat (limited to 'src/boot')
-rw-r--r-- | src/boot/bootctl.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 9a24ecd6b2..ff14cff166 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -275,14 +275,16 @@ static int get_file_version(int fd, char **v) { assert(v); if (fstat(fd, &st) < 0) - return -errno; + return log_error_errno(errno, "Failed to stat EFI binary: %m"); - if (st.st_size < 27) + if (st.st_size < 27) { + *v = NULL; return 0; + } buf = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if (buf == MAP_FAILED) - return -errno; + return log_error_errno(errno, "Failed to memory map EFI binary: %m"); s = memmem(buf, st.st_size - 8, "#### LoaderInfo: ", 17); if (!s) @@ -304,7 +306,7 @@ static int get_file_version(int fd, char **v) { r = 1; finish: - munmap(buf, st.st_size); + (void) munmap(buf, st.st_size); *v = x; return r; } |