s3-svcctl: Fix _svcctl_EnumServicesStatusW() crash bug on too small buffer.
authorGünther Deschner <gd@samba.org>
Mon, 6 Apr 2009 23:10:41 +0000 (01:10 +0200)
committerGünther Deschner <gd@samba.org>
Mon, 6 Apr 2009 23:16:30 +0000 (01:16 +0200)
Guenther

source3/rpc_server/srv_svcctl_nt.c

index 3ca85aa755582e724021f2fce04f08672ef606c5..848cdc25d08de60e5ec5dbae714dadde644ad575 100644 (file)
@@ -468,9 +468,11 @@ WERROR _svcctl_EnumServicesStatusW(pipes_struct *p,
                }
 
                blob = ndr_push_blob(ndr);
+               if (blob.length >= r->in.buf_size) {
+                       memcpy(r->out.service, blob.data, r->in.buf_size);
+               }
        }
 
-       r->out.service                  = blob.data;
        *r->out.bytes_needed            = (buffer_size > r->in.buf_size) ? buffer_size : r->in.buf_size;
        *r->out.services_returned       = (uint32)num_services;
        *r->out.resume_handle           = 0x0;