From 4329d03bca8936fe3b3f697f4e9108b591b7a7fe Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 9 Feb 2011 22:35:44 +0100 Subject: cache: don't use $HOME when it is not set http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=610754 --- src/cache.c | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/cache.c b/src/cache.c index 2a8f957..17b5e83 100644 --- a/src/cache.c +++ b/src/cache.c @@ -176,6 +176,11 @@ static int db_open(void) { if ((ret = get_cache_home(&c)) < 0) goto finish; + if (!c) { + ret = CA_ERROR_NOTFOUND; + goto finish; + } + /* Try to create, just in case it doesn't exist yet. We don't do * this recursively however. */ mkdir(c, 0755); @@ -396,21 +401,23 @@ static int get_last_change(time_t *t) { if ((ret = ca_get_data_home(&e)) < 0) goto finish; - if (!(k = ca_new(char, strlen(e) + sizeof("/sounds")))) { - ca_free(e); - ret = CA_ERROR_OOM; - goto finish; - } + *t = 0; - sprintf(k, "%s/sounds", e); - ca_free(e); + if (e) { + if (!(k = ca_new(char, strlen(e) + sizeof("/sounds")))) { + ca_free(e); + ret = CA_ERROR_OOM; + goto finish; + } - if (stat(k, &st) >= 0) - *t = st.st_mtime; - else - *t = 0; + sprintf(k, "%s/sounds", e); + ca_free(e); + + if (stat(k, &st) >= 0) + *t = st.st_mtime; - ca_free(k); + ca_free(k); + } g = ca_get_data_dirs(); -- cgit