From f35a1b95aa6f50cb1bc919f4ab502ef2c38f6bf5 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Mon, 2 Nov 2009 13:01:58 +0100 Subject: s3-gencache: restore gencache_get behavior with NULL args (with torture test). Without this, we panic in wins_srv_is_dead() and fail to start nmbd with wins support. Volker, please check. Guenther --- source3/lib/gencache.c | 12 ++++++++---- source3/torture/torture.c | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'source3') diff --git a/source3/lib/gencache.c b/source3/lib/gencache.c index 6de653fa17..4889d7ca62 100644 --- a/source3/lib/gencache.c +++ b/source3/lib/gencache.c @@ -529,11 +529,15 @@ bool gencache_get(const char *keystr, char **value, time_t *ptimeout) SAFE_FREE(blob.data); return false; } - *value = SMB_STRDUP((char *)blob.data); - data_blob_free(&blob); - if (*value == NULL) { - return false; + if (value) { + *value = SMB_STRDUP((char *)blob.data); + data_blob_free(&blob); + if (*value == NULL) { + return false; + } + return true; } + data_blob_free(&blob); return true; } diff --git a/source3/torture/torture.c b/source3/torture/torture.c index ca499a9fcc..bda82f2b74 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -6431,6 +6431,11 @@ static bool run_local_gencache(int dummy) return False; } + if (!gencache_get("foo", NULL, NULL)) { + d_printf("%s: gencache_get() failed\n", __location__); + return False; + } + if (!gencache_get("foo", &val, &tm)) { d_printf("%s: gencache_get() failed\n", __location__); return False; -- cgit