summaryrefslogtreecommitdiff
path: root/source3/registry/reg_backend_db.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/registry/reg_backend_db.c')
-rw-r--r--source3/registry/reg_backend_db.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/source3/registry/reg_backend_db.c b/source3/registry/reg_backend_db.c
index 62d482069c..57d6d3980c 100644
--- a/source3/registry/reg_backend_db.c
+++ b/source3/registry/reg_backend_db.c
@@ -1287,6 +1287,7 @@ struct regdb_delete_subkey_context {
const char *key;
const char *subkey;
const char *path;
+ bool lazy;
};
static NTSTATUS regdb_delete_subkey_action(struct db_context *db,
@@ -1302,6 +1303,10 @@ static NTSTATUS regdb_delete_subkey_action(struct db_context *db,
werr = regdb_delete_key_lists(db, delete_ctx->path);
W_ERROR_NOT_OK_GOTO_DONE(werr);
+ if (delete_ctx->lazy) {
+ goto done;
+ }
+
werr = regsubkey_ctr_init(mem_ctx, &subkeys);
W_ERROR_NOT_OK_GOTO_DONE(werr);
@@ -1323,7 +1328,7 @@ done:
return werror_to_ntstatus(werr);
}
-static WERROR regdb_delete_subkey(const char *key, const char *subkey)
+static WERROR regdb_delete_subkey(const char *key, const char *subkey, bool lazy)
{
WERROR werr;
char *path;
@@ -1349,6 +1354,7 @@ static WERROR regdb_delete_subkey(const char *key, const char *subkey)
delete_ctx.key = key;
delete_ctx.subkey = subkey;
delete_ctx.path = path;
+ delete_ctx.lazy = lazy;
werr = ntstatus_to_werror(dbwrap_trans_do(regdb,
regdb_delete_subkey_action,