From ca1cebdb9e8ea02970d4de9fcb710c95b699d3a5 Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Thu, 6 Dec 2012 13:48:11 +0100 Subject: [PATCH] dnsmasq: Fix parsing of the version number If debugging is enabled, the debug messages are sent to stderr. Moreover, if a command has catching of stderr set, the messages gets mixed with stdout output (assuming both outputs are stored in the same variable). The resulting string then doesn't necessarily have to start with desired prefix then. This bug exposes itself when parsing dnsmasq output: 2012-12-06 11:18:11.445+0000: 18491: error : dnsmasqCapsSetFromBuffer:664 : internal error cannot parse /usr/sbin/dnsmasq version number in '2012-12-06 11:11:02.232+0000: 18492: debug : virFileClose:72 : Closed fd 22' We can clearly see that the output of dnsmasq --version doesn't start with expected "Dnsmasq version " string but a libvirt debug output. (cherry picked from commit ff33f807739dc2950e4df8c1d4007ce9f8b290c0) --- src/util/dnsmasq.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/util/dnsmasq.c b/src/util/dnsmasq.c index 71e960d990..0cb3cc61e7 100644 --- a/src/util/dnsmasq.c +++ b/src/util/dnsmasq.c @@ -701,7 +701,6 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool force) cmd = virCommandNewArgList(caps->binaryPath, "--version", NULL); virCommandSetOutputBuffer(cmd, &version); - virCommandSetErrorBuffer(cmd, &version); virCommandAddEnvPassCommon(cmd); virCommandClearCaps(cmd); if (virCommandRun(cmd, NULL) < 0) { @@ -713,7 +712,6 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool force) cmd = virCommandNewArgList(caps->binaryPath, "--help", NULL); virCommandSetOutputBuffer(cmd, &help); - virCommandSetErrorBuffer(cmd, &help); virCommandAddEnvPassCommon(cmd); virCommandClearCaps(cmd); if (virCommandRun(cmd, NULL) < 0) {