s4:WINREG RPC server - add another "talloc_unlink" in "DeleteKey"
authorMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Wed, 18 Nov 2009 07:48:30 +0000 (08:48 +0100)
committerMatthias Dieter Wallnöfer <mwallnoefer@yahoo.de>
Fri, 27 Nov 2009 22:23:32 +0000 (23:23 +0100)
Also here we waste memory - therefore free the pointless handle after the delete.

source4/rpc_server/winreg/rpc_winreg.c

index ba619c02f7c6e487e4793f53f9cb109290f61ff6..13c311cd960bbd9ec3845a1b3db52c9b30419114 100644 (file)
@@ -166,6 +166,7 @@ static WERROR dcesrv_winreg_DeleteKey(struct dcesrv_call_state *dce_call,
 {
        struct dcesrv_handle *h;
        struct registry_key *key;
+       WERROR result;
 
        DCESRV_PULL_HANDLE_FAULT(h, r->in.handle, HTYPE_REGKEY);
        key = h->data;
@@ -174,7 +175,10 @@ static WERROR dcesrv_winreg_DeleteKey(struct dcesrv_call_state *dce_call,
        {
        case SECURITY_SYSTEM:
        case SECURITY_ADMINISTRATOR:
-               return reg_key_del(key, r->in.key.name);
+               result = reg_key_del(key, r->in.key.name);
+               talloc_unlink(dce_call->context, h);
+
+               return result;
        default:
                return WERR_ACCESS_DENIED;
        }