discover/paths: Check process exit status when loading URLs
authorJeremy Kerr <jk@ozlabs.org>
Tue, 21 Jan 2014 00:27:48 +0000 (08:27 +0800)
committerJeremy Kerr <jk@ozlabs.org>
Tue, 21 Jan 2014 05:36:01 +0000 (13:36 +0800)
Currently, we may report incorrect success when loading a URL, as we
only check the return value of process_run_sync() (and not the process
exit status itself) in load_process_to_local_file.

This fix adds a check to the synchronous load.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
discover/paths.c

index 5e577ebc7baeee7b96871339acbb6279fcc3cb56..58fbffdc3e58f7aaa3a6f534a2f8dbeb003eeb73 100644 (file)
@@ -131,7 +131,10 @@ static void load_process_to_local_file(struct load_task *task,
                task->result->status = rc ? LOAD_ERROR : LOAD_ASYNC;
        } else {
                rc = process_run_sync(task->process);
-               task->result->status = rc ? LOAD_ERROR : LOAD_OK;
+               if (rc || WEXITSTATUS(task->process->exit_status))
+                       task->result->status = LOAD_ERROR;
+               else
+                       task->result->status = LOAD_OK;
                process_release(task->process);
                task->process = NULL;
        }