Author: jerry
Date: 2005-08-12 16:00:54 +0000 (Fri, 12 Aug 2005)
New Revision: 9264

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=9264

Log:
fix valgrind invalid write error in enumprinterdata()
Modified:
   branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
   trunk/source/rpc_server/srv_spoolss_nt.c


Changeset:
Modified: branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c       2005-08-12 
15:59:37 UTC (rev 9263)
+++ branches/SAMBA_3_0/source/rpc_server/srv_spoolss_nt.c       2005-08-12 
16:00:54 UTC (rev 9264)
@@ -8040,13 +8040,14 @@
                /* 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;
        }
 

Modified: trunk/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- trunk/source/rpc_server/srv_spoolss_nt.c    2005-08-12 15:59:37 UTC (rev 
9263)
+++ trunk/source/rpc_server/srv_spoolss_nt.c    2005-08-12 16:00:54 UTC (rev 
9264)
@@ -8040,13 +8040,14 @@
                /* 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;
        }
 

Reply via email to