r9264: fix valgrind invalid write error in enumprinterdata()
authorGerald Carter <jerry@samba.org>
Fri, 12 Aug 2005 16:00:54 +0000 (16:00 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:00:29 +0000 (11:00 -0500)
(This used to be commit bfebbc86fc0f90e580888da25006d8e5e50b6304)

source3/rpc_server/srv_spoolss_nt.c

index 692dacf1599ba71080f71a54f80b0e512883c59b..5391ac5f41a8e977acabe822597de8646dd1f305 100644 (file)
@@ -8040,13 +8040,14 @@ WERROR _spoolss_enumprinterdata(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATA *q_u, S
                /* data - counted in bytes */
 
                *out_max_data_len = in_data_len;
-               if ( (*data_out = (uint8 *)TALLOC_ZERO(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) 
+               if ( in_data_len && (*data_out = (uint8 *)TALLOC_ZERO(p->mem_ctx, in_data_len*sizeof(uint8))) == NULL) 
                {
                        result = WERR_NOMEM;
                        goto done;
                }
                data_len = regval_size(val);
-               memcpy( *data_out, regval_data_p(val), data_len );
+               if ( *data_out )
+                       memcpy( *data_out, regval_data_p(val), data_len );
                *out_data_len = data_len;
        }