summaryrefslogtreecommitdiff
path: root/source4/lib
diff options
context:
space:
mode:
Diffstat (limited to 'source4/lib')
-rw-r--r--source4/lib/talloc.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/source4/lib/talloc.c b/source4/lib/talloc.c
index 131edfcb81..239958258b 100644
--- a/source4/lib/talloc.c
+++ b/source4/lib/talloc.c
@@ -222,9 +222,13 @@ static int talloc_reference_destructor(void *ptr)
*/
void *talloc_reference(const void *context, const void *ptr)
{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
+ struct talloc_chunk *tc;
struct talloc_reference_handle *handle;
+ if (ptr == NULL) return NULL;
+
+ tc = talloc_chunk_from_ptr(ptr);
handle = talloc_named_const(context, sizeof(*handle), TALLOC_MAGIC_REFERENCE);
+
if (handle == NULL) return NULL;
/* note that we hang the destructor off the handle, not the
@@ -273,6 +277,10 @@ int talloc_unlink(const void *context, void *ptr)
struct talloc_chunk *tc_p, *new_p;
void *new_parent;
+ if (ptr == NULL) {
+ return -1;
+ }
+
if (context == NULL) {
context = null_context;
}