On Mon, Oct 17, 2016 at 09:25:46AM -0500, Eric Blake wrote: > 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.
No comma options are currently accepted. Treating comma as garbage seems okay. Mike: Please change %32[^,] to %32s when merging. Thanks! Stefan
signature.asc
Description: PGP signature