build: address clang reports about virCommand
clang had 5 reports against virCommand; three were false positives (a NULL deref in ProcessIO solved by sa_assert, and two uninitialized memory operations solved by adding an initializer), but two were real. * src/util/command.c (virCommandProcessIO): Fix real bug of possible NULL dereference. Teach clang that buf is never NULL. (virCommandRun): Teach clang that infd is only ever accessed when initialized.
This commit is contained in:
parent
1a82c5f7c6
commit
3db08aeaef
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* command.c: Child command execution
|
* command.c: Child command execution
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010 Red Hat, Inc.
|
* Copyright (C) 2010-2011 Red Hat, Inc.
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
@ -881,6 +881,8 @@ virCommandProcessIO(virCommandPtr cmd)
|
|||||||
buf = cmd->errbuf;
|
buf = cmd->errbuf;
|
||||||
len = &errlen;
|
len = &errlen;
|
||||||
}
|
}
|
||||||
|
/* Silence a false positive from clang. */
|
||||||
|
sa_assert(buf);
|
||||||
|
|
||||||
done = read(fds[i].fd, data, sizeof(data));
|
done = read(fds[i].fd, data, sizeof(data));
|
||||||
if (done < 0) {
|
if (done < 0) {
|
||||||
@ -930,9 +932,9 @@ virCommandProcessIO(virCommandPtr cmd)
|
|||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
cleanup:
|
cleanup:
|
||||||
if (*cmd->outbuf)
|
if (cmd->outbuf && *cmd->outbuf)
|
||||||
(*cmd->outbuf)[outlen] = '\0';
|
(*cmd->outbuf)[outlen] = '\0';
|
||||||
if (*cmd->errbuf)
|
if (cmd->errbuf && *cmd->errbuf)
|
||||||
(*cmd->errbuf)[errlen] = '\0';
|
(*cmd->errbuf)[errlen] = '\0';
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -950,7 +952,7 @@ virCommandRun(virCommandPtr cmd, int *exitstatus)
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
char *outbuf = NULL;
|
char *outbuf = NULL;
|
||||||
char *errbuf = NULL;
|
char *errbuf = NULL;
|
||||||
int infd[2];
|
int infd[2] = { -1, -1 };
|
||||||
struct stat st;
|
struct stat st;
|
||||||
bool string_io;
|
bool string_io;
|
||||||
bool async_io = false;
|
bool async_io = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user