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 <[EMAIL PROTECTED]>
Date:   Tue Nov 27 14:35:30 2007 -0800

    Remove pstrings from everything except srv_spoolss_nt.c.
    Jeremy.

commit 951202913956e113841585f7372e8db8f9aeb76a
Author: Guenther Deschner <[EMAIL PROTECTED]>
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                         [EMAIL PROTECTED]
    Samba Team                              [EMAIL PROTECTED]
    -----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?= <[EMAIL PROTECTED]>
    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

Reply via email to