diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-02-09 22:35:44 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-02-09 22:35:51 +0100 |
commit | 4329d03bca8936fe3b3f697f4e9108b591b7a7fe (patch) | |
tree | 25d65f32e7b0bc8b2bf78d45920dd425b3470fe2 | |
parent | 786b4b05dc1bfc725995f4c2556d49aec5e2ae1b (diff) |
cache: don't use $HOME when it is not set
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=610754
-rw-r--r-- | src/cache.c | 31 |
1 files 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(); |