On 09/20/2012 12:22 PM, Peter Krempa wrote: >> @@ -8271,6 +8286,19 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr >> caps, >> qemuParseCommandLineBootDevs(def, token); >> } else if (STRPREFIX(token, "menu=on")) { >> def->os.bootmenu = 1; >> + } else if (STRPREFIX(token, "reboot-timeout=")) { >> + int num; >> + char *endptr = strchr(token, ','); >> + if (virStrToLong_i(token + >> strlen("reboot-timeout="), >> + &endptr, 0, &num) < 0) { > > This doesn't seem ok. You assign endptr somewhere into the string and > then virStrToLong_i rewrites it, but you never check the return value. I > suppose you wanted to check if after the number is converted the next > char is a comma. You need to do the check after virStrToLong_i. > Yes, sorry for that, you're absolutely right. To be sure, is this alright? diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index f8012ec..4821910 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -8271,6 +8286,20 @@ virDomainDefPtr qemuParseCommandLine(virCapsPtr caps, qemuParseCommandLineBootDevs(def, token); } else if (STRPREFIX(token, "menu=on")) { def->os.bootmenu = 1; + } else if (STRPREFIX(token, "reboot-timeout=")) { + int num; + char *endptr; + if (virStrToLong_i(token + strlen("reboot-timeout="), + &endptr, 10, &num) < 0) || + endptr != strchr(token, ',') { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("cannot parse reboot-timeout value")); + goto error; + } + if (num > 65535) + num = 65535; + def->os.bios.rt_delay = num; + def->os.bios.rt_set = true; } token = strchr(token, ','); /* This incrementation has to be done here in order to make it -- Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list