diff options
-rw-r--r-- | source3/lib/gencache.c | 12 | ||||
-rw-r--r-- | source3/torture/torture.c | 5 |
2 files changed, 13 insertions, 4 deletions
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; |