[libvirt] [PATCH] util: choose whether to require micro in version strings

Eric Blake eblake at redhat.com
Fri Jul 1 16:54:48 UTC 2011


On 07/01/2011 07:25 AM, Eric Blake wrote:
> To avoid regressions, we let callers specify whether to require a
> micro version.  Callers that were parsing uname() output benefit
> from the defaults, whereas callers that were parsing version strings
> from other sources should not change in behavior.
> 
> * src/util/util.c (virParseVersionString): Allow caller to choose
> whether to fail if micro is missing.
> * src/util/util.h (virParseVersionString): Update signature.
> * src/esx/esx_driver.c (esxGetVersion): Update callers.
> * src/lxc/lxc_driver.c (lxcVersion): Likewise.
> * src/openvz/openvz_conf.c (openvzExtractVersionInfo): Likewise.
> * src/uml/uml_driver.c (umlGetVersion): Likewise.
> * src/vbox/vbox_MSCOMGlue.c (vboxLookupVersionInRegistry):
> Likewise.
> * src/vbox/vbox_tmpl.c (vboxExtractVersion): Likewise.
> * src/vmware/vmware_conf.c (vmwareExtractVersion): Likewise.
> * src/xenapi/xenapi_driver.c (xenapiGetVersion): Likewise.
> Reported by Matthias Bolte.

I plan to squash this in (I figured it was easier to show this diff than
to send a full v2):

diff --git i/src/util/util.c w/src/util/util.c
index 8e12e5f..6e1f4f5 100644
--- i/src/util/util.c
+++ w/src/util/util.c
@@ -1619,6 +1619,9 @@ virParseVersionString(const char *str, unsigned
long *version,
     if ((*tmp == '.') && virStrToLong_ui(tmp + 1, &tmp, 10, &micro) < 0)
         return -1;

+    if (major > ULONG_MAX / 1000000 || minor > 999 || micro > 999)
+        return -1;
+
     *version = 1000000 * major + 1000 * minor + micro;

     return 0;

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110701/967f0eda/attachment-0001.sig>


More information about the libvir-list mailing list