
On 07/22/2015 04:18 PM, Laine Stump wrote:
On 07/22/2015 03:54 PM, John Ferlan wrote: ...
+ if (deviceName && + VIR_STRDUP(options->type, deviceName) < 0) + goto cleanup; + As has been told to me before - virStrdup/VIR_STRDUP is "tolerant" of deviceName == NULL returning 0 if it's NULL, so just:
if (VIR_STRDUP(options->type, deviceName) < 0) goto cleanup;
is necessary
But that would set options->type to NULL in the case that deviceName hadn't been set, and we don't want that. Consider for a moment that options->type had already been explicitly set to "pci-bridge". Since options->type != NULL, deviceName would remain NULL, we would get to the VIR_STRDUP() and unconditionally set options->type to NULL, losing the value that we actually wanted (and leaking it to boot).
Hmm. I guess my logic *is* a bit backwards though :-) Instead I should say "if (!options->type && VIR_STRDUP(blah)...)"
Oh right. I'm fine with (!options->type checking since that's what you're trying to not overwrite John