don't free() auto variables; fixes segfault when looking up RefusePasswordChange...
authorGerald Carter <jerry@samba.org>
Tue, 21 Jan 2003 03:42:38 +0000 (03:42 +0000)
committerGerald Carter <jerry@samba.org>
Tue, 21 Jan 2003 03:42:38 +0000 (03:42 +0000)
(This used to be commit d89b0bff44fe31244b1835aee0c96c4900d90dc6)

source3/rpc_server/srv_reg_nt.c

index 8fc038eab5661a6a53ed05ad623ba4ae95fd8bfb..5632544909ad628aecdd5047e2ffda2b0e5fdcc0 100644 (file)
@@ -352,7 +352,6 @@ NTSTATUS _reg_info(pipes_struct *p, REG_Q_INFO *q_u, REG_R_INFO *r_u)
        int                     value_length;
        REGISTRY_KEY            *regkey = find_regkey_index_by_hnd( p, &q_u->pol );
        REGISTRY_VALUE          *val = NULL;
-       REGISTRY_VALUE          emptyval;
        REGVAL_CTR              regvals;
        int                     i;
 
@@ -374,8 +373,11 @@ NTSTATUS _reg_info(pipes_struct *p, REG_Q_INFO *q_u, REG_R_INFO *r_u)
        /* couple of hard coded registry values */
        
        if ( strequal(name, "RefusePasswordChange") ) {
-               ZERO_STRUCTP( &emptyval );
-               val = &emptyval;
+               if ( (val = (REGISTRY_VALUE*)malloc(sizeof(REGISTRY_VALUE))) == NULL ) {
+                       DEBUG(0,("_reg_info: malloc() failed!\n"));
+                       return NT_STATUS_NO_MEMORY;
+               }
+               ZERO_STRUCTP( val );
        
                goto out;
        }