
On Wed, 2009-06-10 at 13:21 +0100, Daniel P. Berrange wrote:
+ char *eol = strchr(help, '\n'); + if (eol) *eol = '\0';
IIUC this NULL terminates the 'help' string on the first line, which will surely break....
- if (!kvm_version && - sscanf(help, "QEMU PC emulator version %u.%u.%u", - &major, &minor, µ) != 3) { - char *eol = strchr(help, '\n'); - if (eol) *eol = '\0'; - qemudReportError(NULL, NULL, NULL, VIR_ERR_INTERNAL_ERROR, - _("cannot parse QEMU version number in '%s'"), - help); + if (qemudParseVersionStr(help, &version, &kvm_version) == -1) goto cleanup2; - } - - version = (major * 1000 * 1000) + (minor * 1000) + micro;
if (strstr(help, "-no-kqemu")) flags |= QEMUD_CMD_FLAG_KQEMU;
....this code which looks at subsequent lines of 'help' ?
Nice catch Dan, thanks. Another version coming up which includes tests for the flags computation, which would have caught this thinko. Cheers, Mark.