summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/rpc_server/srv_winreg_nt.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/source3/rpc_server/srv_winreg_nt.c b/source3/rpc_server/srv_winreg_nt.c
index cb2c795679..03320b38f6 100644
--- a/source3/rpc_server/srv_winreg_nt.c
+++ b/source3/rpc_server/srv_winreg_nt.c
@@ -1189,7 +1189,9 @@ WERROR _winreg_CreateKey( pipes_struct *p, struct policy_handle *handle, struct
/* copy the new key name (just the lower most keyname) */
- pstrcpy( name, ptr+1 );
+ if ( (name = talloc_strdup( p->mem_ctx, ptr+1 )) == NULL ) {
+ return WERR_NOMEM;
+ }
}
else {
/* use the existing open key information */
@@ -1334,11 +1336,15 @@ WERROR _winreg_DeleteKey(pipes_struct *p, struct policy_handle *handle, struct w
pstrcpy( newkeyname, name );
ptr = strrchr( newkeyname, '\\' );
*ptr = '\0';
- pstrcpy( name, ptr+1 );
+ if ( (name = talloc_strdup( p->mem_ctx, ptr+1 )) == NULL ) {
+ result = WERR_NOMEM;
+ goto done;
+ }
result = open_registry_key( p, &newparent_handle, &newparentinfo, parent, newkeyname, (REG_KEY_READ|REG_KEY_WRITE) );
- if ( !W_ERROR_IS_OK(result) )
- return result;
+ if ( !W_ERROR_IS_OK(result) ) {
+ goto done;
+ }
}
else {
/* use the existing open key information */