[libvirt] [PATCH] qemud: don't dereference NULL on failed virGetUserDirectory

I spotted this while merging my unix_sock_dir changes:
From 04373207bc838c31bd07596df3c676476e73c983 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Fri, 23 Jan 2009 13:59:28 +0100 Subject: [PATCH] qemud: don't dereference NULL on failed virGetUserDirectory
* qemud/qemud.c (qemudInitPaths): Check for OOM. --- qemud/qemud.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/qemud/qemud.c b/qemud/qemud.c index 55f31d5..84034f3 100644 --- a/qemud/qemud.c +++ b/qemud/qemud.c @@ -719,6 +719,10 @@ static int qemudInitPaths(struct qemud_server *server, goto snprintf_error; } else { char *userdir = virGetUserDirectory(NULL, uid); + if (userdir == NULL) { + /* give no diagnostic here; virGetUserDirectory reports OOM */ + return -1; + } if (snprintf(sockname, maxlen, "@%s/.libvirt/libvirt-sock", userdir) >= maxlen) { VIR_FREE(userdir); -- 1.6.1.354.gd9e51

Jim Meyering <jim@meyering.net> wrote:
I spotted this while merging my unix_sock_dir changes: ... char *userdir = virGetUserDirectory(NULL, uid); + if (userdir == NULL) { + /* give no diagnostic here; virGetUserDirectory reports OOM */
It can also fail due to getpwuid_r failure. Here's the patch with corrected comment/log:
From f3f134d51ac6e90f30d5859690fe57dc16d955aa Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@redhat.com> Date: Fri, 23 Jan 2009 13:59:28 +0100 Subject: [PATCH] qemud: don't dereference NULL on failed virGetUserDirectory
* qemud/qemud.c (qemudInitPaths): Return right away, upon virGetUserDirectory. --- qemud/qemud.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/qemud/qemud.c b/qemud/qemud.c index 55f31d5..eb91533 100644 --- a/qemud/qemud.c +++ b/qemud/qemud.c @@ -719,6 +719,10 @@ static int qemudInitPaths(struct qemud_server *server, goto snprintf_error; } else { char *userdir = virGetUserDirectory(NULL, uid); + if (userdir == NULL) { + /* Do not diagnose here; virGetUserDirectory does that. */ + return -1; + } if (snprintf(sockname, maxlen, "@%s/.libvirt/libvirt-sock", userdir) >= maxlen) { VIR_FREE(userdir); -- 1.6.1.354.gd9e51

On Fri, Jan 23, 2009 at 02:23:14PM +0100, Jim Meyering wrote:
Jim Meyering <jim@meyering.net> wrote:
I spotted this while merging my unix_sock_dir changes: ... char *userdir = virGetUserDirectory(NULL, uid); + if (userdir == NULL) { + /* give no diagnostic here; virGetUserDirectory reports OOM */
It can also fail due to getpwuid_r failure. Here's the patch with corrected comment/log:
ACK Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

On Fri, Jan 23, 2009 at 02:23:14PM +0100, Jim Meyering wrote:
Jim Meyering <jim@meyering.net> wrote:
I spotted this while merging my unix_sock_dir changes: ... char *userdir = virGetUserDirectory(NULL, uid); + if (userdir == NULL) { + /* give no diagnostic here; virGetUserDirectory reports OOM */
It can also fail due to getpwuid_r failure. Here's the patch with corrected comment/log:
Updated patch looks OK. Rich. -- Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones Read my OCaml programming blog: http://camltastic.blogspot.com/ Fedora now supports 68 OCaml packages (the OPEN alternative to F#) http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora
participants (3)
-
Daniel P. Berrange
-
Jim Meyering
-
Richard W.M. Jones