From 5eef74320b0bb9e604400168e0896c5ac527abef Mon Sep 17 00:00:00 2001 From: Martin Kletzander Date: Tue, 24 Jul 2012 16:08:46 +0200 Subject: [PATCH] fixed SegFault in virauth No check for conn->uri being NULL in virAuthGetConfigFilePath (valid state) made the client segfault. This happens for example with these settings: - no virtualbox driver installed (modifies conn->uri) - no default URI set (VIRSH_DEFAULT_CONNECT_URI="", LIBVIRT_DEFAULT_URI="", uri_default="") - auth_sock_rw="sasl" - virsh run as root That are unfortunately the settings with fresh Fedora 17 installation with VDSM. The check ought to be enough as conn->uri being NULL is valid in later code and is handled properly. --- src/util/virauth.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/util/virauth.c b/src/util/virauth.c index e6b1db0f34..5539c3cc17 100644 --- a/src/util/virauth.c +++ b/src/util/virauth.c @@ -1,6 +1,7 @@ /* * virauth.c: authentication related utility functions * + * Copyright (C) 2012 Red Hat, Inc. * Copyright (C) 2010 Matthias Bolte * * This library is free software; you can redistribute it and/or @@ -54,14 +55,16 @@ int virAuthGetConfigFilePath(virConnectPtr conn, return 0; } - for (i = 0 ; i < conn->uri->paramsCount ; i++) { - if (STREQ_NULLABLE(conn->uri->params[i].name, "authfile") && - conn->uri->params[i].value) { - VIR_DEBUG("Using path from URI '%s'", - conn->uri->params[i].value); - if (!(*path = strdup(conn->uri->params[i].value))) - goto no_memory; - return 0; + if (conn && conn->uri) { + for (i = 0 ; i < conn->uri->paramsCount ; i++) { + if (STREQ_NULLABLE(conn->uri->params[i].name, "authfile") && + conn->uri->params[i].value) { + VIR_DEBUG("Using path from URI '%s'", + conn->uri->params[i].value); + if (!(*path = strdup(conn->uri->params[i].value))) + goto no_memory; + return 0; + } } }