On 01/17/2013 01:03 PM, Peter Krempa wrote:
On 01/17/13 20:17, John Ferlan wrote:
> ---
> src/parallels/parallels_driver.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/src/parallels/parallels_driver.c
> b/src/parallels/parallels_driver.c
> index ea193af..1cf66ea 100644
> --- a/src/parallels/parallels_driver.c
> +++ b/src/parallels/parallels_driver.c
> @@ -514,7 +514,10 @@ parallelsGetNetInfo(virDomainNetDefPtr net,
>
> net->linkstate = VIR_DOMAIN_NET_INTERFACE_LINK_STATE_UP;
> if (virJSONValueObjectHasKey(value, "state")) {
> - tmp = virJSONValueObjectGetString(value, "state");
Hm calling this without checking should be safe as the
virJSONValueObjectHasKey basically guarantees successful return of a
value in virJSONValueObjectGetString.
> + if (!(tmp = virJSONValueObjectGetString(value, "state"))) {
> + parallelsParseError();
> + goto error;
> + }
> if STREQ(tmp, "disconnected")
Another three possible solutions, both shorter, for silencing Coverity
would be:
1. Add in a null check (slight speed penalty, though):
if (virJSONValueObjectHasKey(value, "state")) {
tmp = virJSONValueObjectGetString(value, "state");
if STREQ_NULLABLE(tmp, "disconnected")
2. use ga_assert() to tell Coverity something that we already know:
if (virJSONValueObjectHasKey(value, "state")) {
tmp = virJSONValueObjectGetString(value, "state");
ga_assert(tmp);
if STREQ(tmp, "disconnected")
3. My favorite - use fewer function calls to begin with:
if ((tmp = virJSONValueObjectGetString(value, "state")) &&
STREQ(tmp, "disconnected"))
I give ACK to this patch, but it shouldn't be a problem to go
without it.
I think a v2 would be appropriate with a shorter solution.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org