On 10/16/2016 08:35 AM, Stefan Hajnoczi wrote:

>>> +
>>> +    if (sscanf(str, "%32[^:]:%32[^,]%n", cid, port, &n) != 2) {
>>
>> This says stop at the first comma after the colon...
>>
>>> +        error_setg(errp, "error parsing address '%s'", str);
>>> +        return NULL;
>>> +    }
>>> +    if (str[n] != '\0') {
>>> +        error_setg(errp, "trailing characters in address '%s'", str);
>>
>> ...but this rejects a trailing comma.  Is a trailing comma possible base
>> on how QemuOpts work? If so, do you need to handle it here?
> 
> Actually I just wanted to grab characters up until the end of string.
> It wasn't clear from the sscanf(3) man page what the best way to do that
> was, so I kept the comma which is also used in tcp addresses (because
> they support additional comma-separated options).

%32s instead of %32[^,] should grab up to all 32 remaining characters in
the string; your %n trick then ensures there is no garbage.  I guess
it's still a question of whether we want to always treat a comma as
trailing garbage.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to