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.
(cherry picked from commit 5eef74320b)
This commit is contained in:
Martin Kletzander 2012-07-24 16:08:46 +02:00 committed by Cole Robinson
parent 9a7bbc246b
commit b9964013c3

View File

@ -1,6 +1,7 @@
/* /*
* virauth.c: authentication related utility functions * virauth.c: authentication related utility functions
* *
* Copyright (C) 2012 Red Hat, Inc.
* Copyright (C) 2010 Matthias Bolte <matthias.bolte@googlemail.com> * Copyright (C) 2010 Matthias Bolte <matthias.bolte@googlemail.com>
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
@ -54,14 +55,16 @@ int virAuthGetConfigFilePath(virConnectPtr conn,
return 0; return 0;
} }
for (i = 0 ; i < conn->uri->paramsCount ; i++) { if (conn && conn->uri) {
if (STREQ_NULLABLE(conn->uri->params[i].name, "authfile") && for (i = 0 ; i < conn->uri->paramsCount ; i++) {
conn->uri->params[i].value) { if (STREQ_NULLABLE(conn->uri->params[i].name, "authfile") &&
VIR_DEBUG("Using path from URI '%s'", conn->uri->params[i].value) {
conn->uri->params[i].value); VIR_DEBUG("Using path from URI '%s'",
if (!(*path = strdup(conn->uri->params[i].value))) conn->uri->params[i].value);
goto no_memory; if (!(*path = strdup(conn->uri->params[i].value)))
return 0; goto no_memory;
return 0;
}
} }
} }