[SCM] Samba Shared Repository - branch v3-5-test updated
Günther Deschner
gd at samba.org
Mon Nov 30 04:22:18 MST 2009
The branch, v3-5-test has been updated
via e1468d0... s4-smbtorture: more and stricter tests for printer and data keys in RPC-SPOOLSS.
via 3788ac8... s3-kerberos: fix the build on Mac OS X 10.6.2.
via 80da9b6... s3-kerberos: add a missing reference to authdata headers.
via 15bc4a0... s3-kerberos: do not include authdata headers before including krb5 headers.
via 281e098... s3-spoolss: simplify _spoolss_EnumPrinterKey a little more.
via da926c1... s3-kerberos: only use krb5 headers where required.
via a6d3e0e... misc: mark winreg_Data little-endian except for a REG_DWORD_BIG_ENDIAN.
via 8f1361e... pidl: fix handling of output arguments in s3 client stubs.
via 2b7e84f... s3-nsstest: drastically shrink size and dependencies of nsstest binary.
via b22a752... s3-kerberos: Fix Bug #6929: build with recent heimdal.
via f0d52b5... s3-spoolss: use macros to fillup driver levels.
from 9b5f8eb... s3: Fix crash in free_file_list().
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test
- Log -----------------------------------------------------------------
commit e1468d0935140f99412dc92b32d38e64c21d6b75
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 23:14:27 2009 +0100
s4-smbtorture: more and stricter tests for printer and data keys in RPC-SPOOLSS.
Guenther
(cherry picked from commit 8f6df5d3ec31a8c3dedfdfc506c44e03026d8485)
commit 3788ac88eff1b8912916d9f5f288545741c26f11
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 20:08:44 2009 +0100
s3-kerberos: fix the build on Mac OS X 10.6.2.
Guenther
(cherry picked from commit 51328a7056918bc75a7c1c442f47cf0271075542)
commit 80da9b6fe45122f847bb3219779f4d4f59484398
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 18:51:56 2009 +0100
s3-kerberos: add a missing reference to authdata headers.
Guenther
(cherry picked from commit da79cbb0800dd647be864e8bbb5fe1132708174b)
commit 15bc4a0a928a0b750e09be49455a831d607c449f
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 18:30:18 2009 +0100
s3-kerberos: do not include authdata headers before including krb5 headers.
Guenther
(cherry picked from commit ae207370667a12db53362ee5dcdab8e6d4bb388f)
commit 281e09887cbca031600b52850b31e04bfa758e6e
Author: Günther Deschner <gd at samba.org>
Date: Thu Nov 26 19:01:54 2009 +0100
s3-spoolss: simplify _spoolss_EnumPrinterKey a little more.
Guenther
(cherry picked from commit e512ccb5b677fa7f285829ec645fc067837c0e11)
commit da926c1249705b95344730539c64111876955151
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 15:52:57 2009 +0100
s3-kerberos: only use krb5 headers where required.
This seems to be the only way to deal with mixed heimdal/MIT setups during
merged build.
Guenther
(cherry picked from commit 04f8c229de7ffad5f4ec1a0bb68c2c8b4ccf4e15)
commit a6d3e0e7f20f393f1040cca57b3a0a5b91f064c1
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 11:18:30 2009 +0100
misc: mark winreg_Data little-endian except for a REG_DWORD_BIG_ENDIAN.
Guenther
(cherry picked from commit 23d77be6cb8847cbdad859269faf59fea30b27b8)
commit 8f1361e627aba9ef3f207cb9a38c4394bd55ccff
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 16:06:40 2009 +0100
pidl: fix handling of output arguments in s3 client stubs.
a20e095 used (uint8_t) instead of (uint8_t *).
Guenther
(cherry picked from commit 79f82998b1aa8349f76a4c82c17daf7e03cdb41a)
commit 2b7e84f217b523aec81f160740f63d50e4f00a05
Author: Günther Deschner <gd at samba.org>
Date: Thu Jun 25 18:18:50 2009 +0200
s3-nsstest: drastically shrink size and dependencies of nsstest binary.
The size went down from 6.4M to 104K on my box.
Guenther
(cherry picked from commit d6c60f8447ce92a15d48a35d3f21d881c4428663)
commit b22a7521f62c2ae0d4a8fca4c5b9985de7adee26
Author: Günther Deschner <gd at samba.org>
Date: Fri Nov 27 01:06:36 2009 +0100
s3-kerberos: Fix Bug #6929: build with recent heimdal.
Heimdal changed the KRB5_DEPRECATED define (which now may not take an identifier
for activation) in new releases (like 1.3.1).
Guenther
(cherry picked from commit 1a8f8382740e352a83133b8c49aaedd4716210cd)
commit f0d52b55896fbb1802aa90fa5ec2b16438373ccf
Author: Günther Deschner <gd at samba.org>
Date: Thu Nov 26 23:46:50 2009 +0100
s3-spoolss: use macros to fillup driver levels.
Guenther
(cherry picked from commit 49e464cef5ed75976fcd6c544bffbd4391f3a1b6)
-----------------------------------------------------------------------
Summary of changes:
client/cifs.upcall.c | 1 +
librpc/gen_ndr/cli_spoolss.c | 8 +-
librpc/gen_ndr/misc.h | 2 +-
librpc/gen_ndr/ndr_misc.c | 357 ++++++++++++++++++------------
librpc/idl/misc.idl | 4 +-
pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm | 2 +-
source3/Makefile.in | 10 +-
source3/configure.in | 16 ++
source3/include/ads.h | 71 ++-----
source3/include/authdata.h | 2 -
source3/include/includes.h | 171 +---------------
source3/include/krb5_protos.h | 148 +++++++++++++
source3/include/smb_krb5.h | 72 ++++++
source3/libads/ads_status.c | 1 +
source3/libads/authdata.c | 2 +
source3/libads/kerberos.c | 1 +
source3/libads/kerberos_keytab.c | 1 +
source3/libads/kerberos_verify.c | 1 +
source3/libads/krb5_errs.c | 1 +
source3/libads/krb5_setpw.c | 1 +
source3/libnet/libnet.h | 1 +
source3/libsmb/cliconnect.c | 1 +
source3/libsmb/clikrb5.c | 5 +-
source3/libsmb/clispnego.c | 1 +
source3/rpc_client/cli_pipe.c | 1 +
source3/rpc_server/srv_spoolss_nt.c | 292 +++++++++++---------------
source3/torture/nsstest.c | 21 ++-
source3/utils/ntlm_auth.c | 1 +
source3/winbindd/winbindd_cred_cache.c | 2 +
source3/winbindd/winbindd_pam.c | 1 +
source4/torture/rpc/spoolss.c | 12 +-
31 files changed, 642 insertions(+), 568 deletions(-)
create mode 100644 source3/include/krb5_protos.h
create mode 100644 source3/include/smb_krb5.h
Changeset truncated at 500 lines:
diff --git a/client/cifs.upcall.c b/client/cifs.upcall.c
index 063e423..bfc70d1 100644
--- a/client/cifs.upcall.c
+++ b/client/cifs.upcall.c
@@ -27,6 +27,7 @@ create dns_resolver * * /usr/local/sbin/cifs.upcall %k
#include "includes.h"
#include "../libcli/auth/spnego.h"
+#include "smb_krb5.h"
#include <keyutils.h>
#include <getopt.h>
diff --git a/librpc/gen_ndr/cli_spoolss.c b/librpc/gen_ndr/cli_spoolss.c
index 635a817..aba70f2 100644
--- a/librpc/gen_ndr/cli_spoolss.c
+++ b/librpc/gen_ndr/cli_spoolss.c
@@ -11057,7 +11057,7 @@ static void rpccli_spoolss_EnumPrinterData_done(struct tevent_req *subreq)
}
/* Copy out parameters */
- memcpy(discard_const_p(uint8_t, state->orig.out.value_name), state->tmp.out.value_name, (state->tmp.in.value_offered / 2) * sizeof(*state->orig.out.value_name));
+ memcpy(discard_const_p(uint8_t *, state->orig.out.value_name), state->tmp.out.value_name, (state->tmp.in.value_offered / 2) * sizeof(*state->orig.out.value_name));
*state->orig.out.value_needed = *state->tmp.out.value_needed;
*state->orig.out.type = *state->tmp.out.type;
memcpy(state->orig.out.data, state->tmp.out.data, (state->tmp.in.data_offered) * sizeof(*state->orig.out.data));
@@ -11132,7 +11132,7 @@ NTSTATUS rpccli_spoolss_EnumPrinterData(struct rpc_pipe_client *cli,
}
/* Return variables */
- memcpy(discard_const_p(uint8_t, value_name), r.out.value_name, (r.in.value_offered / 2) * sizeof(*value_name));
+ memcpy(discard_const_p(uint8_t *, value_name), r.out.value_name, (r.in.value_offered / 2) * sizeof(*value_name));
*value_needed = *r.out.value_needed;
*type = *r.out.type;
memcpy(data, r.out.data, (r.in.data_offered) * sizeof(*data));
@@ -15678,7 +15678,7 @@ static void rpccli_spoolss_GetPrinterDriverPackagePath_done(struct tevent_req *s
/* Copy out parameters */
if (state->orig.out.driver_package_cab && state->tmp.out.driver_package_cab) {
- memcpy(discard_const_p(uint8_t, state->orig.out.driver_package_cab), state->tmp.out.driver_package_cab, (state->tmp.in.driver_package_cab_size) * sizeof(*state->orig.out.driver_package_cab));
+ memcpy(discard_const_p(uint8_t *, state->orig.out.driver_package_cab), state->tmp.out.driver_package_cab, (state->tmp.in.driver_package_cab_size) * sizeof(*state->orig.out.driver_package_cab));
}
*state->orig.out.required = *state->tmp.out.required;
@@ -15752,7 +15752,7 @@ NTSTATUS rpccli_spoolss_GetPrinterDriverPackagePath(struct rpc_pipe_client *cli,
/* Return variables */
if (driver_package_cab && r.out.driver_package_cab) {
- memcpy(discard_const_p(uint8_t, driver_package_cab), r.out.driver_package_cab, (r.in.driver_package_cab_size) * sizeof(*driver_package_cab));
+ memcpy(discard_const_p(uint8_t *, driver_package_cab), r.out.driver_package_cab, (r.in.driver_package_cab_size) * sizeof(*driver_package_cab));
}
*required = *r.out.required;
diff --git a/librpc/gen_ndr/misc.h b/librpc/gen_ndr/misc.h
index 29ea192..6672c61 100644
--- a/librpc/gen_ndr/misc.h
+++ b/librpc/gen_ndr/misc.h
@@ -89,6 +89,6 @@ union winreg_Data {
uint32_t value;/* [case(REG_DWORD)] */
const char ** string_array;/* [flag(LIBNDR_FLAG_STR_NULLTERM),case(REG_MULTI_SZ)] */
DATA_BLOB data;/* [flag(LIBNDR_FLAG_REMAINING),default] */
-}/* [nodiscriminant,public] */;
+}/* [public,nodiscriminant,flag(LIBNDR_FLAG_LITTLE_ENDIAN)] */;
#endif /* _HEADER_misc */
diff --git a/librpc/gen_ndr/ndr_misc.c b/librpc/gen_ndr/ndr_misc.c
index ff79baa..1f4d0c9 100644
--- a/librpc/gen_ndr/ndr_misc.c
+++ b/librpc/gen_ndr/ndr_misc.c
@@ -213,77 +213,106 @@ _PUBLIC_ void ndr_print_winreg_Type(struct ndr_print *ndr, const char *name, enu
_PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_flags, const union winreg_Data *r)
{
- if (ndr_flags & NDR_SCALARS) {
- int level = ndr_push_get_switch_value(ndr, r);
- NDR_CHECK(ndr_push_union_align(ndr, 4));
- switch (level) {
- case REG_NONE: {
- break; }
-
- case REG_SZ: {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
- ndr->flags = _flags_save_string;
- }
- break; }
-
- case REG_BINARY: {
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- break; }
-
- case REG_DWORD: {
- NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
- break; }
-
- case REG_MULTI_SZ: {
- {
- uint32_t _flags_save_string_array = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
- ndr->flags = _flags_save_string_array;
- }
- break; }
-
- default: {
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- break; }
-
+ {
+ uint32_t _flags_save_UNION = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+ if (ndr_flags & NDR_SCALARS) {
+ int level = ndr_push_get_switch_value(ndr, r);
+ NDR_CHECK(ndr_push_union_align(ndr, 4));
+ switch (level) {
+ case REG_NONE: {
+ break; }
+
+ case REG_SZ: {
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+ ndr->flags = _flags_save_string;
+ }
+ break; }
+
+ case REG_EXPAND_SZ: {
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string));
+ ndr->flags = _flags_save_string;
+ }
+ break; }
+
+ case REG_BINARY: {
+ {
+ uint32_t _flags_save_DATA_BLOB = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+ NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary));
+ ndr->flags = _flags_save_DATA_BLOB;
+ }
+ break; }
+
+ case REG_DWORD: {
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
+ break; }
+
+ case REG_DWORD_BIG_ENDIAN: {
+ {
+ uint32_t _flags_save_uint32 = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
+ NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value));
+ ndr->flags = _flags_save_uint32;
+ }
+ break; }
+
+ case REG_MULTI_SZ: {
+ {
+ uint32_t _flags_save_string_array = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array));
+ ndr->flags = _flags_save_string_array;
+ }
+ break; }
+
+ default: {
+ {
+ uint32_t _flags_save_DATA_BLOB = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+ NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data));
+ ndr->flags = _flags_save_DATA_BLOB;
+ }
+ break; }
+
+ }
}
- }
- if (ndr_flags & NDR_BUFFERS) {
- int level = ndr_push_get_switch_value(ndr, r);
- switch (level) {
- case REG_NONE:
- break;
+ if (ndr_flags & NDR_BUFFERS) {
+ int level = ndr_push_get_switch_value(ndr, r);
+ switch (level) {
+ case REG_NONE:
+ break;
- case REG_SZ:
- break;
+ case REG_SZ:
+ break;
- case REG_BINARY:
- break;
+ case REG_EXPAND_SZ:
+ break;
- case REG_DWORD:
- break;
+ case REG_BINARY:
+ break;
- case REG_MULTI_SZ:
- break;
+ case REG_DWORD:
+ break;
- default:
- break;
+ case REG_DWORD_BIG_ENDIAN:
+ break;
+ case REG_MULTI_SZ:
+ break;
+
+ default:
+ break;
+
+ }
}
+ ndr->flags = _flags_save_UNION;
}
return NDR_ERR_SUCCESS;
}
@@ -291,109 +320,151 @@ _PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_fl
_PUBLIC_ enum ndr_err_code ndr_pull_winreg_Data(struct ndr_pull *ndr, int ndr_flags, union winreg_Data *r)
{
int level;
- level = ndr_pull_get_switch_value(ndr, r);
- if (ndr_flags & NDR_SCALARS) {
- NDR_CHECK(ndr_pull_union_align(ndr, 4));
- switch (level) {
- case REG_NONE: {
- break; }
-
- case REG_SZ: {
- {
- uint32_t _flags_save_string = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
- ndr->flags = _flags_save_string;
- }
- break; }
-
- case REG_BINARY: {
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- break; }
-
- case REG_DWORD: {
- NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
- break; }
-
- case REG_MULTI_SZ: {
- {
- uint32_t _flags_save_string_array = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
- NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
- ndr->flags = _flags_save_string_array;
- }
- break; }
-
- default: {
- {
- uint32_t _flags_save_DATA_BLOB = ndr->flags;
- ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
- NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
- ndr->flags = _flags_save_DATA_BLOB;
- }
- break; }
+ {
+ uint32_t _flags_save_UNION = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+ level = ndr_pull_get_switch_value(ndr, r);
+ if (ndr_flags & NDR_SCALARS) {
+ NDR_CHECK(ndr_pull_union_align(ndr, 4));
+ switch (level) {
+ case REG_NONE: {
+ break; }
+
+ case REG_SZ: {
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+ ndr->flags = _flags_save_string;
+ }
+ break; }
+
+ case REG_EXPAND_SZ: {
+ {
+ uint32_t _flags_save_string = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->string));
+ ndr->flags = _flags_save_string;
+ }
+ break; }
+
+ case REG_BINARY: {
+ {
+ uint32_t _flags_save_DATA_BLOB = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+ NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->binary));
+ ndr->flags = _flags_save_DATA_BLOB;
+ }
+ break; }
+
+ case REG_DWORD: {
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
+ break; }
+
+ case REG_DWORD_BIG_ENDIAN: {
+ {
+ uint32_t _flags_save_uint32 = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN);
+ NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->value));
+ ndr->flags = _flags_save_uint32;
+ }
+ break; }
+
+ case REG_MULTI_SZ: {
+ {
+ uint32_t _flags_save_string_array = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
+ NDR_CHECK(ndr_pull_string_array(ndr, NDR_SCALARS, &r->string_array));
+ ndr->flags = _flags_save_string_array;
+ }
+ break; }
+
+ default: {
+ {
+ uint32_t _flags_save_DATA_BLOB = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING);
+ NDR_CHECK(ndr_pull_DATA_BLOB(ndr, NDR_SCALARS, &r->data));
+ ndr->flags = _flags_save_DATA_BLOB;
+ }
+ break; }
+
+ }
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ switch (level) {
+ case REG_NONE:
+ break;
+
+ case REG_SZ:
+ break;
+
+ case REG_EXPAND_SZ:
+ break;
+
+ case REG_BINARY:
+ break;
+
+ case REG_DWORD:
+ break;
+ case REG_DWORD_BIG_ENDIAN:
+ break;
+
+ case REG_MULTI_SZ:
+ break;
+
+ default:
+ break;
+
+ }
}
+ ndr->flags = _flags_save_UNION;
}
- if (ndr_flags & NDR_BUFFERS) {
+ return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_winreg_Data(struct ndr_print *ndr, const char *name, const union winreg_Data *r)
+{
+ int level;
+ {
+ uint32_t _flags_save_UNION = ndr->flags;
+ ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN);
+ level = ndr_print_get_switch_value(ndr, r);
+ ndr_print_union(ndr, name, level, "winreg_Data");
switch (level) {
case REG_NONE:
break;
case REG_SZ:
+ ndr_print_string(ndr, "string", r->string);
+ break;
+
+ case REG_EXPAND_SZ:
+ ndr_print_string(ndr, "string", r->string);
break;
case REG_BINARY:
+ ndr_print_DATA_BLOB(ndr, "binary", r->binary);
break;
case REG_DWORD:
+ ndr_print_uint32(ndr, "value", r->value);
+ break;
+
+ case REG_DWORD_BIG_ENDIAN:
+ ndr_print_uint32(ndr, "value", r->value);
break;
case REG_MULTI_SZ:
+ ndr_print_string_array(ndr, "string_array", r->string_array);
break;
default:
+ ndr_print_DATA_BLOB(ndr, "data", r->data);
break;
}
- }
- return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_winreg_Data(struct ndr_print *ndr, const char *name, const union winreg_Data *r)
-{
- int level;
- level = ndr_print_get_switch_value(ndr, r);
- ndr_print_union(ndr, name, level, "winreg_Data");
- switch (level) {
- case REG_NONE:
- break;
-
- case REG_SZ:
- ndr_print_string(ndr, "string", r->string);
- break;
-
- case REG_BINARY:
- ndr_print_DATA_BLOB(ndr, "binary", r->binary);
- break;
-
- case REG_DWORD:
- ndr_print_uint32(ndr, "value", r->value);
- break;
-
- case REG_MULTI_SZ:
- ndr_print_string_array(ndr, "string_array", r->string_array);
- break;
-
- default:
- ndr_print_DATA_BLOB(ndr, "data", r->data);
- break;
-
+ ndr->flags = _flags_save_UNION;
}
}
diff --git a/librpc/idl/misc.idl b/librpc/idl/misc.idl
index 5a2bf75..adaac9a 100644
--- a/librpc/idl/misc.idl
+++ b/librpc/idl/misc.idl
@@ -61,11 +61,13 @@ interface misc
REG_QWORD = 11
} winreg_Type;
- typedef [nodiscriminant,public] union {
+ typedef [nodiscriminant,public,flag(NDR_LITTLE_ENDIAN)] union {
[case(REG_NONE)];
[case(REG_SZ)] nstring string;
+ [case(REG_EXPAND_SZ)] nstring string;
[case(REG_BINARY),flag(NDR_REMAINING)] DATA_BLOB binary;
[case(REG_DWORD)] uint32 value;
+ [case(REG_DWORD_BIG_ENDIAN),flag(NDR_BIG_ENDIAN)] uint32 value;
[case(REG_MULTI_SZ)] nstring_array string_array;
[default,flag(NDR_REMAINING)] DATA_BLOB data;
} winreg_Data;
diff --git a/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm b/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
index b26a08e..68579d2 100644
--- a/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
+++ b/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm
@@ -105,7 +105,7 @@ sub ParseOutputArgument($$$;$$)
} else {
my $size_is = ParseExpr($l->{SIZE_IS}, $env, $e->{ORIGINAL});
if (has_property($e, "charset")) {
- $self->pidl("memcpy(discard_const_p(uint8_t, $o$e->{NAME}), ${r}out.$e->{NAME}, ($size_is) * sizeof(*$o$e->{NAME}));");
+ $self->pidl("memcpy(discard_const_p(uint8_t *, $o$e->{NAME}), ${r}out.$e->{NAME}, ($size_is) * sizeof(*$o$e->{NAME}));");
} else {
--
Samba Shared Repository
More information about the samba-cvs
mailing list