Fix bug 7063 - Samba 3.4.5 on ubuntu 8.04 64 bit - Core dumps.
authorJeremy Allison <jra@samba.org>
Wed, 3 Feb 2010 00:32:51 +0000 (16:32 -0800)
committerJeremy Allison <jra@samba.org>
Wed, 3 Feb 2010 00:32:51 +0000 (16:32 -0800)
Reported and found by Martin Hochreiter <linuxbox@wavenet.at>.
Ensure we copy the right amount of registry data into the outgoing
buffer.

Jeremy.

source3/rpc_server/srv_spoolss_nt.c

index b1513dd329d30861dcefe10d4c14906b1fc6ab72..e2e523d0de4429ba2fb097edcbe7e04db56d2647 100644 (file)
@@ -7634,8 +7634,15 @@ WERROR _spoolss_EnumPrinterData(pipes_struct *p,
 
                /* data - counted in bytes */
 
-               if (r->out.data && regval_size(val)) {
-                       memcpy(r->out.data, regval_data_p(val), regval_size(val));
+               /*
+                * See the section "Dynamically Typed Query Parameters"
+                * in MS-RPRN.
+                */
+
+               if (r->out.data && regval_data_p(val) &&
+                               regval_size(val) && r->in.data_offered) {
+                       memcpy(r->out.data, regval_data_p(val),
+                               MIN(regval_size(val),r->in.data_offered));
                }
 
                *r->out.data_needed = regval_size(val);