summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/lib/gencache.c12
-rw-r--r--source3/torture/torture.c5
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;