[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-380-g0002a9e

Jeremy Allison jra at samba.org
Tue Nov 27 22:36:03 GMT 2007


The branch, v3-2-test has been updated
       via  0002a9e96b0ef78316295a6eb94ff29b64e2f988 (commit)
       via  951202913956e113841585f7372e8db8f9aeb76a (commit)
      from  55b4f9d003b036af69085f7b64e0df08c5ba440d (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 0002a9e96b0ef78316295a6eb94ff29b64e2f988
Author: Jeremy Allison <jra at samba.org>
Date:   Tue Nov 27 14:35:30 2007 -0800

    Remove pstrings from everything except srv_spoolss_nt.c.
    Jeremy.

commit 951202913956e113841585f7372e8db8f9aeb76a
Author: Guenther Deschner <gd at samba.org>
Date:   Tue Nov 27 21:53:41 2007 +0100

    fix a obscure compiler warning
    
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    
    Hi Jeremy,
    
    I have never seen this warning before:
    "warning: comparison is always false due to limited range of data type".
    
    Guenther
    - --
    Günther Deschner                    GPG-ID: 8EE11688
    Red Hat                         gdeschner at redhat.com
    Samba Team                              gd at samba.org
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.7 (GNU/Linux)
    Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
    
    iD8DBQFHTIOOSOk3aI7hFogRArxMAJwP0ktE96tHcwn9nXG6AOqonpeDgQCgm/zi
    54B6HJZvx6zdUTMFFNWqUb0=
    =kUJa
    -----END PGP SIGNATURE-----
    
    >From 6a4935ee455adc1251fce2759f97d35f303bd40e Mon Sep 17 00:00:00 2001
    From: =?utf-8?q?G=C3=BCnther=20Deschner?= <gd at samba.org>
    Date: Tue, 27 Nov 2007 21:48:39 +0100
    Subject: [PATCH] Getting rid of "comparison is always false due to limited range of data type"
     warning.
    
    Guenther

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

Summary of changes:
 source/auth/auth_util.c              |    6 +-
 source/lib/substitute.c              |   34 +--
 source/lib/util_unistr.c             |   57 ++--
 source/rpc_client/cli_ds.c           |    4 +-
 source/rpc_client/cli_lsarpc.c       |   10 +-
 source/rpc_client/cli_srvsvc.c       |   44 ++--
 source/rpc_server/srv_eventlog_lib.c |    6 +-
 source/rpc_server/srv_srvsvc_nt.c    |  510 +++++++++++++++++++++-------------
 source/utils/net_rpc.c               |   26 +-
 source/winbindd/winbindd_ads.c       |    4 +-
 source/winbindd/winbindd_pam.c       |    4 +-
 source/winbindd/winbindd_rpc.c       |    8 +-
 12 files changed, 415 insertions(+), 298 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/auth/auth_util.c b/source/auth/auth_util.c
index 7ef8942..c0a9e9b 100644
--- a/source/auth/auth_util.c
+++ b/source/auth/auth_util.c
@@ -1452,13 +1452,13 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 
-	if (!(nt_username = unistr2_tdup(mem_ctx, &(info3->uni_user_name)))) {
+	if (!(nt_username = unistr2_to_ascii_talloc(mem_ctx, &(info3->uni_user_name)))) {
 		/* If the server didn't give us one, just use the one we sent
 		 * them */
 		nt_username = sent_nt_username;
 	}
 
-	if (!(nt_domain = unistr2_tdup(mem_ctx, &(info3->uni_logon_dom)))) {
+	if (!(nt_domain = unistr2_to_ascii_talloc(mem_ctx, &(info3->uni_logon_dom)))) {
 		/* If the server didn't give us one, just use the one we sent
 		 * them */
 		nt_domain = domain;
@@ -1620,7 +1620,7 @@ NTSTATUS make_server_info_info3(TALLOC_CTX *mem_ctx,
 		return nt_status;
 	}
 
-	result->login_server = unistr2_tdup(result, 
+	result->login_server = unistr2_to_ascii_talloc(result, 
 					    &(info3->uni_logon_srv));
 
 	/* ensure we are never given NULL session keys */
diff --git a/source/lib/substitute.c b/source/lib/substitute.c
index db79a9f..09604f8 100644
--- a/source/lib/substitute.c
+++ b/source/lib/substitute.c
@@ -831,8 +831,8 @@ static char *alloc_sub_advanced(const char *servicename, const char *user,
  */
 
 char *talloc_sub_advanced(TALLOC_CTX *mem_ctx,
-			  const char *servicename, const char *user, 
-			  const char *connectpath, gid_t gid, 
+			  const char *servicename, const char *user,
+			  const char *connectpath, gid_t gid,
 			  const char *smb_name, const char *domain_name,
 			  const char *str)
 {
@@ -848,13 +848,13 @@ char *talloc_sub_advanced(TALLOC_CTX *mem_ctx,
 }
 
 
-void standard_sub_advanced(const char *servicename, const char *user, 
-			   const char *connectpath, gid_t gid, 
+void standard_sub_advanced(const char *servicename, const char *user,
+			   const char *connectpath, gid_t gid,
 			   const char *smb_name, const char *domain_name,
 			   char *str, size_t len)
 {
 	char *s;
-	
+
 	s = alloc_sub_advanced(servicename, user, connectpath,
 			       gid, smb_name, domain_name, str);
 
@@ -865,19 +865,17 @@ void standard_sub_advanced(const char *servicename, const char *user,
 }
 
 /****************************************************************************
- *  Do some standard substitutions in a string.
- *  ****************************************************************************/
+ Do some standard substitutions in a string.
+****************************************************************************/
 
-void standard_sub_conn(connection_struct *conn, char *str, size_t len)
+char *standard_sub_conn(TALLOC_CTX *ctx, connection_struct *conn, const char *str)
 {
-	char *s;
-
-	s = alloc_sub_advanced(lp_servicename(SNUM(conn)), conn->user, conn->connectpath,
-			       conn->gid, get_smb_user_name(), "", str);
-
-	if ( s ) {
-		strncpy( str, s, len );
-		SAFE_FREE( s );
-	}
+	return talloc_sub_advanced(ctx,
+				lp_servicename(SNUM(conn)),
+				conn->user,
+				conn->connectpath,
+				conn->gid,
+				get_smb_user_name(),
+				"",
+				str);
 }
-
diff --git a/source/lib/util_unistr.c b/source/lib/util_unistr.c
index bd2cd73..49b0b81 100644
--- a/source/lib/util_unistr.c
+++ b/source/lib/util_unistr.c
@@ -408,7 +408,7 @@ int rpcstr_push(void *dest, const char *src, size_t dest_len, int flags)
 
 /* Converts a string from internal samba format to unicode. Always terminates.
  * Actually just a wrapper round push_ucs2_talloc().
- */ 
+ */
 
 int rpcstr_push_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src)
 {
@@ -428,6 +428,7 @@ void unistr2_to_ascii(char *dest, const UNISTR2 *str, size_t maxlen)
 	pull_ucs2(NULL, dest, str->buffer, maxlen, str->uni_str_len*2, STR_NOALIGN);
 }
 
+#if 0
 /*******************************************************************
  Convert a (little-endian) UNISTR3 structure to an ASCII string.
 ********************************************************************/
@@ -441,53 +442,51 @@ void unistr3_to_ascii(char *dest, const UNISTR3 *str, size_t maxlen)
 	pull_ucs2(NULL, dest, str->str.buffer, maxlen, str->uni_str_len*2,
 	          STR_NOALIGN);
 }
+#endif
 
 /*******************************************************************
- Return a string for displaying a UNISTR2. Guarentees to return a
- valid string - "" if nothing else.
- Changed to use talloc_tos() under the covers.... JRA.
+ Duplicate a UNISTR2 string into a null terminated char*
+ using a talloc context.
 ********************************************************************/
 
-const char *unistr2_static(const UNISTR2 *str)
+char *unistr2_to_ascii_talloc(TALLOC_CTX *ctx, const UNISTR2 *str)
 {
-	size_t ret = (size_t)-1;
-	char *dest = NULL;
+	char *s = NULL;
 
-	if ((str == NULL) || (str->uni_str_len == 0)) {
-		return "";
+	if (!str || !str->buffer) {
+		return NULL;
 	}
-
-	ret = pull_ucs2_base_talloc(talloc_tos(),
+	if (pull_ucs2_base_talloc(ctx,
 				NULL,
-				&dest,
+				&s,
 				str->buffer,
 				str->uni_str_len*2,
-				STR_NOALIGN);
-	if (ret == (size_t)-1 || dest == NULL) {
-		return "";
+				STR_NOALIGN) == (size_t)-1) {
+		return NULL;
 	}
-
-	return dest;
+	return s;
 }
 
 /*******************************************************************
- Duplicate a UNISTR2 string into a null terminated char*
- using a talloc context.
+ Return a string for displaying a UNISTR2. Guarentees to return a
+ valid string - "" if nothing else.
+ Changed to use talloc_tos() under the covers.... JRA.
 ********************************************************************/
 
-char *unistr2_tdup(TALLOC_CTX *ctx, const UNISTR2 *str)
+const char *unistr2_static(const UNISTR2 *str)
 {
-	char *s;
-	int maxlen = (str->uni_str_len+1)*4;
-	if (!str->buffer) {
-		return NULL;
+	char *dest = NULL;
+
+	if ((str == NULL) || (str->uni_str_len == 0)) {
+		return "";
 	}
-	s = (char *)TALLOC(ctx, maxlen); /* convervative */
-	if (!s) {
-		return NULL;
+
+	dest = unistr2_to_ascii_talloc(talloc_tos(), str);
+	if (!dest) {
+		return "";
 	}
-	pull_ucs2(NULL, s, str->buffer, maxlen, str->uni_str_len*2, STR_NOALIGN);
-	return s;
+
+	return dest;
 }
 
 /*******************************************************************
diff --git a/source/rpc_client/cli_ds.c b/source/rpc_client/cli_ds.c
index 1724454..71516b8 100644
--- a/source/rpc_client/cli_ds.c
+++ b/source/rpc_client/cli_ds.c
@@ -121,13 +121,13 @@ NTSTATUS rpccli_ds_enum_domain_trusts(struct rpc_pipe_client *cli,
 			}
 
 			if (r.domains.trusts[i].netbios_ptr) {
-				(*trusts)[i].netbios_domain = unistr2_tdup( mem_ctx, &r.domains.trusts[i].netbios_domain );
+				(*trusts)[i].netbios_domain = unistr2_to_ascii_talloc( mem_ctx, &r.domains.trusts[i].netbios_domain );
 			} else {
 				(*trusts)[i].netbios_domain = NULL;
 			}
 
 			if (r.domains.trusts[i].dns_ptr) {
-				(*trusts)[i].dns_domain = unistr2_tdup( mem_ctx, &r.domains.trusts[i].dns_domain );
+				(*trusts)[i].dns_domain = unistr2_to_ascii_talloc( mem_ctx, &r.domains.trusts[i].dns_domain );
 			} else {
 				(*trusts)[i].dns_domain = NULL;
 			}
diff --git a/source/rpc_client/cli_lsarpc.c b/source/rpc_client/cli_lsarpc.c
index 7e3ce04..6abc67f 100644
--- a/source/rpc_client/cli_lsarpc.c
+++ b/source/rpc_client/cli_lsarpc.c
@@ -573,7 +573,7 @@ NTSTATUS rpccli_lsa_query_info_policy(struct rpc_pipe_client *cli,
 
 	case 3:
 		if (domain_name && (r.ctr.info.id3.buffer_dom_name != 0)) {
-			*domain_name = unistr2_tdup(mem_ctx,
+			*domain_name = unistr2_to_ascii_talloc(mem_ctx,
 						   &r.ctr.info.id3.
 						   uni_domain_name);
 			if (!*domain_name) {
@@ -594,7 +594,7 @@ NTSTATUS rpccli_lsa_query_info_policy(struct rpc_pipe_client *cli,
 	case 5:
 
 		if (domain_name && (r.ctr.info.id5.buffer_dom_name != 0)) {
-			*domain_name = unistr2_tdup(mem_ctx,
+			*domain_name = unistr2_to_ascii_talloc(mem_ctx,
 						   &r.ctr.info.id5.
 						   uni_domain_name);
 			if (!*domain_name) {
@@ -668,7 +668,7 @@ NTSTATUS rpccli_lsa_query_info_policy2(struct rpc_pipe_client *cli,
 	ZERO_STRUCTP(domain_guid);
 
 	if (domain_name && r.ctr.info.id12.hdr_nb_dom_name.buffer) {
-		*domain_name = unistr2_tdup(mem_ctx,
+		*domain_name = unistr2_to_ascii_talloc(mem_ctx,
 					    &r.ctr.info.id12
 					    .uni_nb_dom_name);
 		if (!*domain_name) {
@@ -676,7 +676,7 @@ NTSTATUS rpccli_lsa_query_info_policy2(struct rpc_pipe_client *cli,
 		}
 	}
 	if (dns_name && r.ctr.info.id12.hdr_dns_dom_name.buffer) {
-		*dns_name = unistr2_tdup(mem_ctx,
+		*dns_name = unistr2_to_ascii_talloc(mem_ctx,
 					 &r.ctr.info.id12
 					 .uni_dns_dom_name);
 		if (!*dns_name) {
@@ -684,7 +684,7 @@ NTSTATUS rpccli_lsa_query_info_policy2(struct rpc_pipe_client *cli,
 		}
 	}
 	if (forest_name && r.ctr.info.id12.hdr_forest_name.buffer) {
-		*forest_name = unistr2_tdup(mem_ctx,
+		*forest_name = unistr2_to_ascii_talloc(mem_ctx,
 					    &r.ctr.info.id12
 					    .uni_forest_name);
 		if (!*forest_name) {
diff --git a/source/rpc_client/cli_srvsvc.c b/source/rpc_client/cli_srvsvc.c
index 50a6810..e5d9b4c 100644
--- a/source/rpc_client/cli_srvsvc.c
+++ b/source/rpc_client/cli_srvsvc.c
@@ -126,11 +126,11 @@ WERROR rpccli_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem
 
 			/* Duplicate strings */
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_netname);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_netname);
 			if (s)
 				init_unistr2(&info1->info_1_str.uni_netname, s, UNI_STR_TERMINATE);
 		
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_remark);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info1[i].info_1_str.uni_remark);
 			if (s)
 				init_unistr2(&info1->info_1_str.uni_remark, s, UNI_STR_TERMINATE);
 
@@ -156,19 +156,19 @@ WERROR rpccli_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem
 
 			/* Duplicate strings */
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_netname);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_netname);
 			if (s)
 				init_unistr2(&info2->info_2_str.uni_netname, s, UNI_STR_TERMINATE);
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_remark);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_remark);
 			if (s)
 				init_unistr2(&info2->info_2_str.uni_remark, s, UNI_STR_TERMINATE);
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_path);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_path);
 			if (s)
 				init_unistr2(&info2->info_2_str.uni_path, s, UNI_STR_TERMINATE);
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_passwd);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info2[i].info_2_str.uni_passwd);
 			if (s)
 				init_unistr2(&info2->info_2_str.uni_passwd, s, UNI_STR_TERMINATE);
 		}
@@ -193,19 +193,19 @@ WERROR rpccli_srvsvc_net_share_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem
 
 			/* Duplicate strings */
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_netname);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_netname);
 			if (s)
 				init_unistr2(&info502->info_502_str.uni_netname, s, UNI_STR_TERMINATE);
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_remark);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_remark);
 			if (s)
 				init_unistr2(&info502->info_502_str.uni_remark, s, UNI_STR_TERMINATE);
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_path);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_path);
 			if (s)
 				init_unistr2(&info502->info_502_str.uni_path, s, UNI_STR_TERMINATE);
 
-			s = unistr2_tdup(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_passwd);
+			s = unistr2_to_ascii_talloc(mem_ctx, &r.ctr.share.info502[i].info_502_str.uni_passwd);
 			if (s)
 				init_unistr2(&info502->info_502_str.uni_passwd, s, UNI_STR_TERMINATE);
 		
@@ -271,12 +271,12 @@ WERROR rpccli_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
 
 		/* Duplicate strings */
 
-		s = unistr2_tdup(mem_ctx, &info1_str->uni_netname);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info1_str->uni_netname);
 		if (s)
 			init_unistr2(&info1_str->uni_netname,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info1_str->uni_remark);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info1_str->uni_remark);
 		if (s)
 			init_unistr2(&info1_str->uni_remark,
 				     s, UNI_STR_TERMINATE);
@@ -294,22 +294,22 @@ WERROR rpccli_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
 
 		/* Duplicate strings */
 
-		s = unistr2_tdup(mem_ctx, &info2_str->uni_netname);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info2_str->uni_netname);
 		if (s)
 			init_unistr2(&info2_str->uni_netname,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info2_str->uni_remark);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info2_str->uni_remark);
 		if (s)
 			init_unistr2(&info2_str->uni_remark,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info2_str->uni_path);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info2_str->uni_path);
 		if (s)
 			init_unistr2(&info2_str->uni_path,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info2_str->uni_passwd);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info2_str->uni_passwd);
 		if (s)
 			init_unistr2(&info2_str->uni_passwd,
 				     s, UNI_STR_TERMINATE);
@@ -328,22 +328,22 @@ WERROR rpccli_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
 
 		/* Duplicate strings */
 
-		s = unistr2_tdup(mem_ctx, &info502_str->uni_netname);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info502_str->uni_netname);
 		if (s)
 			init_unistr2(&info502_str->uni_netname,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info502_str->uni_remark);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info502_str->uni_remark);
 		if (s)
 			init_unistr2(&info502_str->uni_remark,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info502_str->uni_path);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info502_str->uni_path);
 		if (s)
 			init_unistr2(&info502_str->uni_path,
 				     s, UNI_STR_TERMINATE);
 
-		s = unistr2_tdup(mem_ctx, &info502_str->uni_passwd);
+		s = unistr2_to_ascii_talloc(mem_ctx, &info502_str->uni_passwd);
 		if (s)
 			init_unistr2(&info502_str->uni_passwd,
 				     s, UNI_STR_TERMINATE);
@@ -564,12 +564,12 @@ WERROR rpccli_srvsvc_net_file_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_
 
 			/* Duplicate strings */
 
-			if ( (s = unistr2_tdup(mem_ctx, r.ctr.file.info3[i].path)) != NULL ) {
+			if ( (s = unistr2_to_ascii_talloc(mem_ctx, r.ctr.file.info3[i].path)) != NULL ) {
 				info3->path = TALLOC_P( mem_ctx, UNISTR2 );
 				init_unistr2(info3->path, s, UNI_STR_TERMINATE);
 			}
 		
-			if ( (s = unistr2_tdup(mem_ctx, r.ctr.file.info3[i].user)) != NULL ) {
+			if ( (s = unistr2_to_ascii_talloc(mem_ctx, r.ctr.file.info3[i].user)) != NULL ) {
 				info3->user = TALLOC_P( mem_ctx, UNISTR2 );
 				init_unistr2(info3->user, s, UNI_STR_TERMINATE);
 			}
diff --git a/source/rpc_server/srv_eventlog_lib.c b/source/rpc_server/srv_eventlog_lib.c
index b964828..4e996ee 100644
--- a/source/rpc_server/srv_eventlog_lib.c
+++ b/source/rpc_server/srv_eventlog_lib.c
@@ -667,7 +667,7 @@ bool parse_logentry( char *line, Eventlog_entry * entry, bool * eor )
 		entry->data_record.source_name_len = rpcstr_push_talloc(ctx,
 				&entry->data_record.source_name,
 				stop);
-		if (entry->data_record.source_name_len == (size_t)-1 ||
+		if (entry->data_record.source_name_len == (uint32_t)-1 ||
 				entry->data_record.source_name == NULL) {
 			return false;
 		}
@@ -679,7 +679,7 @@ bool parse_logentry( char *line, Eventlog_entry * entry, bool * eor )
 		entry->data_record.computer_name_len = rpcstr_push_talloc(ctx,
 				&entry->data_record.computer_name,
 				stop);
-		if (entry->data_record.computer_name_len == (size_t)-1 ||
+		if (entry->data_record.computer_name_len == (uint32_t)-1 ||
 				entry->data_record.computer_name == NULL) {
 			return false;
 		}
@@ -691,7 +691,7 @@ bool parse_logentry( char *line, Eventlog_entry * entry, bool * eor )
 		entry->record.user_sid_length = rpcstr_push_talloc(ctx,
 				&entry->data_record.sid,
 				stop);
-		if (entry->record.user_sid_length == (size_t)-1 ||
+		if (entry->record.user_sid_length == (uint32_t)-1 ||
 				entry->data_record.sid == NULL) {
 			return false;
 		}
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 9788eb5..b034e7c 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -54,14 +54,14 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
 	struct file_enum_count *fenum = (struct file_enum_count *)p;
 	FILE_INFO_3 *f;
 	int i = fenum->count;
-	pstring fullpath;
+	char *fullpath = NULL;
 	const char *username;
- 
+
 	if (rec->value.dsize != sizeof(struct pipe_open_rec))
 		return 0;
 
 	memcpy(&prec, rec->value.dptr, sizeof(struct pipe_open_rec));
- 
+
 	if ( !process_exists(prec.pid) ) {
 		return 0;
 	}
@@ -72,22 +72,26 @@ static int pipe_enum_fn( struct db_record *rec, void *p)
 	    && !strequal(username, fenum->username)) {
 		return 0;
 	}
-		
-	snprintf( fullpath, sizeof(fullpath), "\\PIPE\\%s", prec.name );
-		
+
+	fullpath = talloc_asprintf(fenum->ctx, "\\PIPE\\%s", prec.name );
+	if (!fullpath) {
+		return 1;
+	}
+
 	f = TALLOC_REALLOC_ARRAY( fenum->ctx, fenum->info, FILE_INFO_3, i+1 );
 	if ( !f ) {
 		DEBUG(0,("conn_enum_fn: realloc failed for %d items\n", i+1));
 		return 1;
 	}
 	fenum->info = f;
-		
+
 	init_srv_file_info3(
-		&fenum->info[i], 
+		&fenum->info[i],
 		(uint32)((procid_to_pid(&prec.pid)<<16) & prec.pnum),
-		(FILE_READ_DATA|FILE_WRITE_DATA), 
+		(FILE_READ_DATA|FILE_WRITE_DATA),
 		0, username, fullpath);
-			
+
+	TALLOC_FREE(fullpath);
 	fenum->count++;
 
 	return 0;
@@ -112,17 +116,17 @@ static WERROR net_enum_pipes( TALLOC_CTX *ctx, const char *username,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list