[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