[Pkg-libvirt-commits] [SCM] Libvirt debian packaging branch, master, updated. debian/0.6.2-1-2-g031b9c1

Guido Günther agx at sigxcpu.org
Thu Apr 16 07:22:17 UTC 2009


The following commit has been merged in the master branch:
commit 031b9c1f5491617ad17b4d74e2a039de37d982f6
Author: Guido Günther <agx at sigxcpu.org>
Date:   Thu Apr 16 09:20:22 2009 +0200

    Don't hardcode buffer size for getgrnam_r.
    
    Works around #520744 and fixes possible problems with implementations
    having _SC_GETGR_R_SIZE_MAX != 1024.

diff --git a/debian/patches/0005-increase-buffer-on-ERANGE.patch b/debian/patches/0005-increase-buffer-on-ERANGE.patch
new file mode 100644
index 0000000..7b0d763
--- /dev/null
+++ b/debian/patches/0005-increase-buffer-on-ERANGE.patch
@@ -0,0 +1,66 @@
+From: =?utf-8?q?Guido=20G=C3=BCnther?= <agx at sigxcpu.org>
+Date: Tue, 14 Apr 2009 18:08:16 +0200
+Subject: [PATCH] increase buffer on ERANGE
+
+---
+ qemud/qemud.c |   27 +++++++++++++++++++++++++--
+ 1 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/qemud/qemud.c b/qemud/qemud.c
+index 4f04355..461c612 100644
+--- a/qemud/qemud.c
++++ b/qemud/qemud.c
+@@ -2529,6 +2529,7 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
+     char *unix_sock_ro_perms = NULL;
+     char *unix_sock_rw_perms = NULL;
+     char *unix_sock_group = NULL;
++    char *buf = NULL;
+ 
+ #if HAVE_POLKIT
+     /* Change the default back to no auth for non-root */
+@@ -2574,13 +2575,34 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
+         if (getuid() != 0) {
+             VIR_WARN0(_("Cannot set group when not running as root"));
+         } else {
+-            char buf[1024];
++            int ret;
+             struct group grpdata, *grp;
+-            if (getgrnam_r(unix_sock_group, &grpdata, buf, sizeof(buf), &grp) != 0 || !grp) {
++            size_t maxbuf = sysconf(_SC_GETGR_R_SIZE_MAX);
++
++            if (maxbuf == -1)
++                maxbuf = 1024;
++
++            if (VIR_ALLOC_N(buf, maxbuf) < 0) {
++                VIR_ERROR("%s", _("Failed to allocate memory for buffer"));
++                goto free_and_fail;
++            }
++
++            while ((ret = getgrnam_r(unix_sock_group, &grpdata,
++                                     buf, maxbuf,
++                                     &grp)) == ERANGE) {
++                    maxbuf *= 2;
++                    if (VIR_REALLOC_N(buf, maxbuf) < 0) {
++                        VIR_ERROR("%s", _("Failed to reallocate memory for buffer"));
++                        goto free_and_fail;
++                    }
++            }
++
++            if (ret != 0 || !grp) {
+                 VIR_ERROR(_("Failed to lookup group '%s'"), unix_sock_group);
+                 goto free_and_fail;
+             }
+             unix_sock_gid = grp->gr_gid;
++            VIR_FREE (buf);
+         }
+         free (unix_sock_group);
+         unix_sock_group = NULL;
+@@ -2643,6 +2665,7 @@ remoteReadConfigFile (struct qemud_server *server, const char *filename)
+     free (unix_sock_ro_perms);
+     free (unix_sock_rw_perms);
+     free (unix_sock_group);
++    VIR_FREE (buf);
+ 
+     /* Don't bother trying to free listen_addr, tcp_port, tls_port, key_file,
+        cert_file, ca_file, or crl_file, since they are initialized to
+-- 
diff --git a/debian/patches/series b/debian/patches/series
index a8c0f9e..fcbea71 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -2,3 +2,4 @@
 0002-qemu-disable-network.diff.patch
 0003-allow-libvirt-group-to-access-the-socket.patch
 0004-fix-Debian-specific-path-to-hvm-loader.patch
+0005-increase-buffer-on-ERANGE.patch

-- 
Libvirt debian packaging



More information about the Pkg-libvirt-commits mailing list