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.
---
v2:
- copyright modified properly this time
src/util/virauth.c | 19 +++++++++++--------
1 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/util/virauth.c b/src/util/virauth.c
index e6b1db0..5539c3c 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 <matthias.bolte(a)googlemail.com>
*
* 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;
+ }
}
}
--
1.7.8.6