From: Samuel Mendoza-Jonas Date: Mon, 9 Nov 2015 03:45:58 +0000 (+1100) Subject: discover: Properly handle return values X-Git-Tag: v1.0.0~34^2~10 X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=eea8cf830616dbbd9024b7d704cf0ccf2dac4767;hp=0dae90626e54e46372c9feddc2f9ac82f046547d discover: Properly handle return values Fixes three unchecked return values, and one missing initialisation. Fixes Coverity defects #30450, #30451, #30454, and #30483 Signed-off-by: Samuel Mendoza-Jonas --- diff --git a/discover/device-handler.c b/discover/device-handler.c index bfe5fff..3804b34 100644 --- a/discover/device-handler.c +++ b/discover/device-handler.c @@ -1472,7 +1472,6 @@ mount_ro: void device_release_write(struct discover_device *dev, bool release) { const char *fstype, *device_path; - int rc = 0; if (!release) return; @@ -1495,10 +1494,9 @@ void device_release_write(struct discover_device *dev, bool release) device_path = get_device_path(dev); } - mount(device_path, dev->mount_path, fstype, + if (mount(device_path, dev->mount_path, fstype, MS_RDONLY | MS_SILENT, - fs_parameters(dev, MS_RDONLY)); - if (rc) + fs_parameters(dev, MS_RDONLY))) pb_log("Failed to remount %s read-only: %s\n", device_path, strerror(errno)); else diff --git a/discover/ipmi.c b/discover/ipmi.c index 54d4e06..f59974a 100644 --- a/discover/ipmi.c +++ b/discover/ipmi.c @@ -183,7 +183,8 @@ int ipmi_transaction(struct ipmi *ipmi, uint8_t netfn, uint8_t cmd, out: lock.l_type = F_UNLCK; - fcntl(ipmi->fd, F_SETLKW, &lock); + if (fcntl(ipmi->fd, F_SETLKW, &lock) == -1) + pb_log("IPMI: error unlocking IPMI device: %m\n"); return rc ? -1 : 0; } diff --git a/discover/paths.c b/discover/paths.c index 0d414eb..c25671b 100644 --- a/discover/paths.c +++ b/discover/paths.c @@ -220,15 +220,16 @@ static enum tftp_type check_tftp_type(void *ctx) const char *argv[] = { pb_system_apps.tftp, "-V", NULL }; struct process *process; enum tftp_type type; + int rc; process = process_create(ctx); process->path = pb_system_apps.tftp; process->argv = argv; process->keep_stdout = true; process->add_stderr = true; - process_run_sync(process); + rc = process_run_sync(process); - if (!process->stdout_buf || process->stdout_len == 0) { + if (rc || !process->stdout_buf || process->stdout_len == 0) { pb_log("Can't check TFTP client type!\n"); type = TFTP_TYPE_BROKEN; diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index 2807934..ce4eb81 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -179,7 +179,7 @@ static int write_nvram(struct platform_powerpc *platform) struct process *process; struct param *param; const char *argv[6]; - int rc; + int rc = 0; argv[0] = "nvram"; argv[1] = "--update-config";