From 4019324f7633c029c3cf461ed8d15433fc7609ea Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 12 Apr 2004 18:02:54 +0000 Subject: r182: Fix a couple of segfaults (This used to be commit db5d7062e69b456a89b17525e5a0177f93c90c83) --- source4/lib/registry/common/reg_objects.c | 3 +++ source4/lib/registry/common/reg_util.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'source4/lib/registry/common') diff --git a/source4/lib/registry/common/reg_objects.c b/source4/lib/registry/common/reg_objects.c index 78260e198f..3f721c107e 100644 --- a/source4/lib/registry/common/reg_objects.c +++ b/source4/lib/registry/common/reg_objects.c @@ -47,6 +47,9 @@ void reg_val_free( REG_VAL *val ) if ( !val ) return; + val->ref--; + if(val->ref) return; + if(val->handle->functions->free_val_backend_data) val->handle->functions->free_val_backend_data(val); diff --git a/source4/lib/registry/common/reg_util.c b/source4/lib/registry/common/reg_util.c index 5ca104fc2e..82b8d06679 100644 --- a/source4/lib/registry/common/reg_util.c +++ b/source4/lib/registry/common/reg_util.c @@ -45,10 +45,10 @@ char *reg_val_data_string(REG_VAL *v) switch (reg_val_type(v)) { case REG_SZ: /* FIXME: Convert to ascii */ - return strdup(reg_val_data_blk(v)); + return strndup(reg_val_data_blk(v), reg_val_size(v)); case REG_EXPAND_SZ: - return strdup(reg_val_data_blk(v)); + return strndup(reg_val_data_blk(v), reg_val_size(v)); case REG_BINARY: ret = malloc(reg_val_size(v) * 3 + 2); -- cgit