[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Thu May 20 06:07:33 MDT 2010


The branch, master has been updated
       via  b753845... librpc: finally merge ndr_string.c.
       via  6d9fe52... s3-libndr: merge in better ndr warnings from s4 ndr_string.c
       via  764cde5... s3-build: add missing prototype for regtype_by_string().
       via  ba1befd... s3-services: move services.h closer to services implementation.
       via  e7982bb... s3-lanman: Fix various RAP printing calls according to win98 testing and MS-RAP docs.
      from  29629b9... s3 smb2: Fix the build without kerberos

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b75384546ac2300896b58a4474bce5f09dcc924a
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 13:57:22 2010 +0200

    librpc: finally merge ndr_string.c.
    
    Guenther

commit 6d9fe52310d4aedbd66294cecc1d375da46bef39
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 13:54:44 2010 +0200

    s3-libndr: merge in better ndr warnings from s4 ndr_string.c
    
    Guenther

commit 764cde51902da80bf4457e83e3a15641d259b684
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 13:54:08 2010 +0200

    s3-build: add missing prototype for regtype_by_string().
    
    Guenther

commit ba1befd36564cdc580d29be2303d824f9bde6a36
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 13:39:46 2010 +0200

    s3-services: move services.h closer to services implementation.
    
    Guenther

commit e7982bbe0b560dcf37beb3995b5ce8c091a9c21e
Author: Günther Deschner <gd at samba.org>
Date:   Thu May 20 00:46:47 2010 +0200

    s3-lanman: Fix various RAP printing calls according to win98 testing and MS-RAP docs.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 {source3/librpc => librpc}/ndr/ndr_string.c |   16 +-
 source3/Makefile.in                         |    2 +-
 source3/include/proto.h                     |    1 +
 source3/rpc_server/srv_svcctl_nt.c          |    2 +-
 source3/{include => services}/services.h    |    0 
 source3/services/services_db.c              |    2 +-
 source3/services/svc_netlogon.c             |    2 +-
 source3/services/svc_rcinit.c               |    2 +-
 source3/services/svc_spoolss.c              |    2 +-
 source3/services/svc_winreg.c               |    2 +-
 source3/services/svc_wins.c                 |    2 +-
 source3/smbd/lanman.c                       |   20 +-
 source4/librpc/config.mk                    |    2 +-
 source4/librpc/ndr/ndr_string.c             |  705 ---------------------------
 source4/librpc/wscript_build                |    2 +-
 15 files changed, 29 insertions(+), 733 deletions(-)
 rename {source3/librpc => librpc}/ndr/ndr_string.c (97%)
 rename source3/{include => services}/services.h (100%)
 delete mode 100644 source4/librpc/ndr/ndr_string.c


Changeset truncated at 500 lines:

diff --git a/source3/librpc/ndr/ndr_string.c b/librpc/ndr/ndr_string.c
similarity index 97%
rename from source3/librpc/ndr/ndr_string.c
rename to librpc/ndr/ndr_string.c
index b4891e3..568c368 100644
--- a/source3/librpc/ndr/ndr_string.c
+++ b/librpc/ndr/ndr_string.c
@@ -89,7 +89,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 						   &converted_size, false))
 			{
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV,
-						      "Bad character conversion");
+						      "Bad character conversion with flags 0x%x", flags);
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len2 + c_len_term)*byte_mul));
@@ -127,7 +127,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 						   &converted_size, false))
 			{
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion");
+						      "Bad character conversion with flags 0x%x", flags);
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
@@ -166,7 +166,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 						   &converted_size, false))
 			{
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion");
+						      "Bad character conversion with flags 0x%x", flags);
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
@@ -201,7 +201,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 						   &converted_size, false))
 			{
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion");
+						      "Bad character conversion with flags 0x%x", flags);
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, (len3 + c_len_term)*byte_mul));
@@ -233,7 +233,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 						   &converted_size, false))
 			{
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion");
+						      "Bad character conversion with flags 0x%x", flags);
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len3));
@@ -252,7 +252,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 					   &converted_size, false))
 		{
 			return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-					      "Bad character conversion");
+					      "Bad character conversion with flags 0x%x", flags);
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len1));
 		*s = as;
@@ -277,7 +277,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags,
 						   &converted_size, false))
 			{
 				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion");
+						      "Bad character conversion with flags 0x%x", flags);
 			}
 		}
 		NDR_CHECK(ndr_pull_advance(ndr, len1));
@@ -337,7 +337,7 @@ _PUBLIC_ enum ndr_err_code ndr_push_string(struct ndr_push *ndr, int ndr_flags,
 				   (void **)(void *)&dest, &d_len, false))
 	{
 		return ndr_push_error(ndr, NDR_ERR_CHARCNV, 
-				      "Bad character conversion");
+				      "Bad character push conversion with flags 0x%x", flags);
 	}
 
 	if (flags & LIBNDR_FLAG_STR_BYTESIZE) {
diff --git a/source3/Makefile.in b/source3/Makefile.in
index 56bee17..81328eb 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -308,7 +308,7 @@ LIBNDR_OBJ = ../librpc/ndr/ndr_basic.o \
 	     librpc/gen_ndr/ndr_misc.o \
 	     librpc/gen_ndr/ndr_security.o \
 	     ../librpc/ndr/ndr_sec_helper.o \
-	     librpc/ndr/ndr_string.o \
+	     ../librpc/ndr/ndr_string.o \
 	     ../librpc/ndr/uuid.o \
 	     librpc/ndr/util.o \
 	     librpc/gen_ndr/ndr_dcerpc.o
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 3deeb9f..5775ebf 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -1294,6 +1294,7 @@ struct passwd *getpwuid_alloc(TALLOC_CTX *mem_ctx, uid_t uid) ;
 /* The following definitions come from ..libcli/registry/util_reg.c  */
 
 const char *str_regtype(int type);
+int regtype_by_string(const char *str);
 bool push_reg_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char *s);
 bool push_reg_multi_sz(TALLOC_CTX *mem_ctx, DATA_BLOB *blob, const char **a);
 bool pull_reg_sz(TALLOC_CTX *mem_ctx, const DATA_BLOB *blob, const char **s);
diff --git a/source3/rpc_server/srv_svcctl_nt.c b/source3/rpc_server/srv_svcctl_nt.c
index 604066e..86e329e 100644
--- a/source3/rpc_server/srv_svcctl_nt.c
+++ b/source3/rpc_server/srv_svcctl_nt.c
@@ -24,7 +24,7 @@
 
 #include "includes.h"
 #include "../librpc/gen_ndr/srv_svcctl.h"
-#include "services.h"
+#include "services/services.h"
 #include "registry.h"
 
 #undef DBGC_CLASS
diff --git a/source3/include/services.h b/source3/services/services.h
similarity index 100%
rename from source3/include/services.h
rename to source3/services/services.h
diff --git a/source3/services/services_db.c b/source3/services/services_db.c
index 22e39e0..daf4f50 100644
--- a/source3/services/services_db.c
+++ b/source3/services/services_db.c
@@ -21,7 +21,7 @@
  */
 
 #include "includes.h"
-#include "services.h"
+#include "services/services.h"
 #include "registry.h"
 
 struct rcinit_file_information {
diff --git a/source3/services/svc_netlogon.c b/source3/services/svc_netlogon.c
index 41b4f95..582cb56 100644
--- a/source3/services/svc_netlogon.c
+++ b/source3/services/svc_netlogon.c
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-#include "services.h"
+#include "services/services.h"
 
 /* Implementation for internal netlogon service */
 
diff --git a/source3/services/svc_rcinit.c b/source3/services/svc_rcinit.c
index e19b3d1..199e5f1 100644
--- a/source3/services/svc_rcinit.c
+++ b/source3/services/svc_rcinit.c
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-#include "services.h"
+#include "services/services.h"
 
 /*********************************************************************
 *********************************************************************/
diff --git a/source3/services/svc_spoolss.c b/source3/services/svc_spoolss.c
index 2495fb4..3b56f93 100644
--- a/source3/services/svc_spoolss.c
+++ b/source3/services/svc_spoolss.c
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-#include "services.h"
+#include "services/services.h"
 
 /* Implementation for internal spoolss service */
 
diff --git a/source3/services/svc_winreg.c b/source3/services/svc_winreg.c
index 0e63e62..04c137f 100644
--- a/source3/services/svc_winreg.c
+++ b/source3/services/svc_winreg.c
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-#include "services.h"
+#include "services/services.h"
 
 /* Implementation for internal winreg service */
 
diff --git a/source3/services/svc_wins.c b/source3/services/svc_wins.c
index e1069af..f1e94c5 100644
--- a/source3/services/svc_wins.c
+++ b/source3/services/svc_wins.c
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-#include "services.h"
+#include "services/services.h"
 
 /* Implementation for internal wins service */
 
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index 91eb135..744d460 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -830,9 +830,9 @@ static bool api_DosPrintQGetInfo(connection_struct *conn, uint16 vuid,
 
 	status = rpccli_spoolss_OpenPrinter(cli, mem_ctx,
 					    QueueName,
-					    NULL,
+					    "RAW",
 					    devmode_ctr,
-					    SEC_FLAG_MAXIMUM_ALLOWED,
+					    PRINTER_ACCESS_USE,
 					    &handle,
 					    &werr);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -1072,9 +1072,9 @@ static bool api_DosPrintQEnum(connection_struct *conn, uint16 vuid,
 
 		status = rpccli_spoolss_OpenPrinter(cli, mem_ctx,
 						    printername,
-						    NULL,
+						    "RAW",
 						    devmode_ctr,
-						    SEC_FLAG_MAXIMUM_ALLOWED,
+						    PRINTER_ACCESS_USE,
 						    &handle,
 						    &werr);
 		if (!NT_STATUS_IS_OK(status)) {
@@ -3113,9 +3113,9 @@ static bool api_RDosPrintJobDel(connection_struct *conn,uint16 vuid,
 
 	status = rpccli_spoolss_OpenPrinter(cli, mem_ctx,
 					    sharename,
-					    NULL,
+					    "RAW",
 					    devmode_ctr,
-					    SEC_FLAG_MAXIMUM_ALLOWED,
+					    JOB_ACCESS_ADMINISTER,
 					    &handle,
 					    &werr);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -3411,9 +3411,9 @@ static bool api_PrintJobInfo(connection_struct *conn, uint16 vuid,
 
 	status = rpccli_spoolss_OpenPrinter(cli, mem_ctx,
 					    sharename,
-					    NULL,
+					    "RAW",
 					    devmode_ctr,
-					    SEC_FLAG_MAXIMUM_ALLOWED,
+					    PRINTER_ACCESS_USE,
 					    &handle,
 					    &werr);
 	if (!NT_STATUS_IS_OK(status)) {
@@ -4399,9 +4399,9 @@ static bool api_WPrintJobGetInfo(connection_struct *conn, uint16 vuid,
 
 	status = rpccli_spoolss_OpenPrinter(cli, mem_ctx,
 					    sharename,
-					    NULL,
+					    "RAW",
 					    devmode_ctr,
-					    SEC_FLAG_MAXIMUM_ALLOWED,
+					    PRINTER_ACCESS_USE,
 					    &handle,
 					    &werr);
 	if (!NT_STATUS_IS_OK(status)) {
diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk
index 5fe944a..ec4496c 100644
--- a/source4/librpc/config.mk
+++ b/source4/librpc/config.mk
@@ -8,7 +8,7 @@ dcerpcsrcdir = $(librpcsrcdir)/rpc
 PUBLIC_DEPENDENCIES = LIBSAMBA-ERRORS LIBTALLOC LIBSAMBA-UTIL CHARSET \
 					  LIBSAMBA-HOSTCONFIG
 
-LIBNDR_OBJ_FILES = $(addprefix $(ndrsrcdir)/, ndr_string.o) ../librpc/ndr/ndr_basic.o ../librpc/ndr/uuid.o ../librpc/ndr/ndr.o ../librpc/gen_ndr/ndr_misc.o ../librpc/ndr/ndr_misc.o
+LIBNDR_OBJ_FILES = ../librpc/ndr/ndr_string.o ../librpc/ndr/ndr_basic.o ../librpc/ndr/uuid.o ../librpc/ndr/ndr.o ../librpc/gen_ndr/ndr_misc.o ../librpc/ndr/ndr_misc.o
 
 PC_FILES += ../librpc/ndr.pc
 LIBNDR_VERSION = 0.0.1
diff --git a/source4/librpc/ndr/ndr_string.c b/source4/librpc/ndr/ndr_string.c
deleted file mode 100644
index 08c3c7f..0000000
--- a/source4/librpc/ndr/ndr_string.c
+++ /dev/null
@@ -1,705 +0,0 @@
-/* 
-   Unix SMB/CIFS implementation.
-
-   routines for marshalling/unmarshalling string types
-
-   Copyright (C) Andrew Tridgell 2003
-   
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-   
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-   
-   You should have received a copy of the GNU General Public License
-   along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "includes.h"
-#include "librpc/ndr/libndr.h"
-
-/**
-  pull a general string from the wire
-*/
-_PUBLIC_ enum ndr_err_code ndr_pull_string(struct ndr_pull *ndr, int ndr_flags, const char **s)
-{
-	char *as=NULL;
-	uint32_t len1, ofs, len2;
-	uint16_t len3;
-	size_t ret;
-	charset_t chset = CH_UTF16;
-	unsigned byte_mul = 2;
-	unsigned flags = ndr->flags;
-	unsigned c_len_term = 0;
-
-	if (!(ndr_flags & NDR_SCALARS)) {
-		return NDR_ERR_SUCCESS;
-	}
-
-	if (NDR_BE(ndr)) {
-		chset = CH_UTF16BE;
-	}
-
-	if (flags & LIBNDR_FLAG_STR_ASCII) {
-		chset = CH_DOS;
-		byte_mul = 1;
-		flags &= ~LIBNDR_FLAG_STR_ASCII;
-	}
-
-	if (flags & LIBNDR_FLAG_STR_UTF8) {
-		chset = CH_UTF8;
-		byte_mul = 1;
-		flags &= ~LIBNDR_FLAG_STR_UTF8;
-	}
-
-	flags &= ~LIBNDR_FLAG_STR_CONFORMANT;
-	if (flags & LIBNDR_FLAG_STR_CHARLEN) {
-		c_len_term = 1;
-		flags &= ~LIBNDR_FLAG_STR_CHARLEN;
-	}
-
-	switch (flags & LIBNDR_STRING_FLAGS) {
-	case LIBNDR_FLAG_STR_LEN4|LIBNDR_FLAG_STR_SIZE4:
-	case LIBNDR_FLAG_STR_LEN4|LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_NOTERM:
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len1));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &ofs));
-		if (ofs != 0) {
-			return ndr_pull_error(ndr, NDR_ERR_STRING, "non-zero array offset with string flags 0x%x\n",
-					      ndr->flags & LIBNDR_STRING_FLAGS);
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len2));
-		if (len2 > len1) {
-			return ndr_pull_error(ndr, NDR_ERR_STRING, 
-					      "Bad string lengths len1=%u ofs=%u len2=%u\n", 
-					      len1, ofs, len2);
-		}
-		NDR_PULL_NEED_BYTES(ndr, (len2 + c_len_term)*byte_mul);
-		if (len2 == 0) {
-			as = talloc_strdup(ndr->current_mem_ctx, "");
-		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx,
-						    chset, CH_UNIX, 
-						    ndr->data+ndr->offset, 
-						    (len2 + c_len_term)*byte_mul,
-						    (void **)&as, &ret, false)) {
-				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion with flags 0x%x", flags);
-			}
-		}
-		NDR_CHECK(ndr_pull_advance(ndr, (len2 + c_len_term)*byte_mul));
-
-		if (len1 != len2) {
-			DEBUG(6,("len1[%u] != len2[%u] '%s'\n", len1, len2, as));
-		}
-
-		/* this is a way of detecting if a string is sent with the wrong
-		   termination */
-		if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
-			if (strlen(as) < (len2 + c_len_term)) {
-				DEBUG(6,("short string '%s'\n", as));
-			}
-		} else {
-			if (strlen(as) == (len2 + c_len_term)) {
-				DEBUG(6,("long string '%s'\n", as));
-			}
-		}
-		*s = as;
-		break;
-
-	case LIBNDR_FLAG_STR_SIZE4:
-	case LIBNDR_FLAG_STR_SIZE4|LIBNDR_FLAG_STR_NOTERM:
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len1));
-		NDR_PULL_NEED_BYTES(ndr, (len1 + c_len_term)*byte_mul);
-		if (len1 == 0) {
-			as = talloc_strdup(ndr->current_mem_ctx, "");
-		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx,
-						    chset, CH_UNIX, 
-						    ndr->data+ndr->offset, 
-						    (len1 + c_len_term)*byte_mul,
-						    (void **)&as, &ret, false)) {
-				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion with flags 0x%x", flags);
-			}
-		}
-		NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
-
-		/* this is a way of detecting if a string is sent with the wrong
-		   termination */
-		if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
-			if (strlen(as) < (len1 + c_len_term)) {
-				DEBUG(6,("short string '%s'\n", as));
-			}
-		} else {
-			if (strlen(as) == (len1 + c_len_term)) {
-				DEBUG(6,("long string '%s'\n", as));
-			}
-		}
-		*s = as;
-		break;
-
-	case LIBNDR_FLAG_STR_LEN4:
-	case LIBNDR_FLAG_STR_LEN4|LIBNDR_FLAG_STR_NOTERM:
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &ofs));
-		if (ofs != 0) {
-			return ndr_pull_error(ndr, NDR_ERR_STRING, "non-zero array offset with string flags 0x%x\n",
-					      ndr->flags & LIBNDR_STRING_FLAGS);
-		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &len1));
-		NDR_PULL_NEED_BYTES(ndr, (len1 + c_len_term)*byte_mul);
-		if (len1 == 0) {
-			as = talloc_strdup(ndr->current_mem_ctx, "");
-		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx,
-						    chset, CH_UNIX, 
-						    ndr->data+ndr->offset, 
-						    (len1 + c_len_term)*byte_mul,
-						    (void **)&as, &ret, false)) {
-				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion with flags 0x%x", flags);
-			}
-		}
-		NDR_CHECK(ndr_pull_advance(ndr, (len1 + c_len_term)*byte_mul));
-
-		/* this is a way of detecting if a string is sent with the wrong
-		   termination */
-		if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
-			if (strlen(as) < (len1 + c_len_term)) {
-				DEBUG(6,("short string '%s'\n", as));
-			}
-		} else {
-			if (strlen(as) == (len1 + c_len_term)) {
-				DEBUG(6,("long string '%s'\n", as));
-			}
-		}
-		*s = as;
-		break;
-
-
-	case LIBNDR_FLAG_STR_SIZE2:
-	case LIBNDR_FLAG_STR_SIZE2|LIBNDR_FLAG_STR_NOTERM:
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &len3));
-		NDR_PULL_NEED_BYTES(ndr, (len3 + c_len_term)*byte_mul);
-		if (len3 == 0) {
-			as = talloc_strdup(ndr->current_mem_ctx, "");
-		} else {
-			if (!convert_string_talloc(ndr->current_mem_ctx,
-						    chset, CH_UNIX, 
-						    ndr->data+ndr->offset, 
-						    (len3 + c_len_term)*byte_mul,
-						    (void **)&as, &ret, false)) {
-				return ndr_pull_error(ndr, NDR_ERR_CHARCNV, 
-						      "Bad character conversion with flags 0x%x", flags);
-			}
-		}
-		NDR_CHECK(ndr_pull_advance(ndr, (len3 + c_len_term)*byte_mul));
-
-		/* this is a way of detecting if a string is sent with the wrong
-		   termination */
-		if (ndr->flags & LIBNDR_FLAG_STR_NOTERM) {
-			if (strlen(as) < (len3 + c_len_term)) {
-				DEBUG(6,("short string '%s'\n", as));
-			}
-		} else {
-			if (strlen(as) == (len3 + c_len_term)) {
-				DEBUG(6,("long string '%s'\n", as));
-			}
-		}
-		*s = as;
-		break;
-
-	case LIBNDR_FLAG_STR_SIZE2|LIBNDR_FLAG_STR_NOTERM|LIBNDR_FLAG_STR_BYTESIZE:
-		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &len3));
-		NDR_PULL_NEED_BYTES(ndr, len3);
-		if (len3 == 0) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list