The branch, master has been updated
       via  f23287bcb69 waf: fix tri-state of --with-sendfile-support being 
auto the default
       via  99c030bce6e waf: fix waf errors with sendfail detection on Solaris
       via  a2402f97144 s3: net: Do not set NET_FLAGS_ANONYMOUS with -k
       via  b06f0912fc6 libnet4: Use dom_sid_str_buf
       via  f1e71a2c1e0 winbind4: Use dom_sid_str_buf
       via  6f4b2cc9659 pysecurity: Use dom_sid_str_buf
       via  186fff5fc35 auth4: Use dom_sid_str_buf
       via  62bc70d18c3 ntpd: Use dom_sid_str_buf
       via  542da7e8002 passdb: Use dom_sid_str_buf
       via  a74946e3007 winbind: Fix a typo
       via  0d208f42cc6 pydsdb: Use dom_sid_str_buf
       via  c9036f2597b libndr: Use dom_sid_str_buf
       via  08be989aa91 smbclient: Use dom_sid_str_buf
       via  6b8c77152e9 libcli: Simplify smblsa_lookup_name
       via  af95db60dec winbindd: Use dom_sid_str_buf
       via  12ffef9fc2d auth3: Use dom_sid_str_buf
       via  cc0664dd045 lib: Remove StrnCpy
       via  2cc2a753059 smbd: Use strlcpy instead of StrnCpy
       via  e74ad1b7451 nmbd: Use strlcpy instead of StrnCpy
       via  fa945bc1e09 libsmb: Use strlcpy instead of StrnCpy
       via  facd6f2daf6 s4:torture:base:bench-readwrite: fix uninitialized 
memory causing segfault
      from  24cfa0baf51 netcmd: Small refactor to SMB connection in domain 
backup

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


- Log -----------------------------------------------------------------
commit f23287bcb69d7c1318aad2472487066e6e6751f4
Author: Björn Jacke <[email protected]>
Date:   Mon Jan 7 01:05:19 2019 +0100

    waf: fix tri-state of --with-sendfile-support being auto the default
    
    --with-sendfile-support should be used automatically if it's found.
    
    Configure now also fails reliably for all platforms when sendfile was
    explicitly requested but failed to be detected.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=9707
    
    Signed-off-by: Bjoern Jacke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>
    
    Autobuild-User(master): Jeremy Allison <[email protected]>
    Autobuild-Date(master): Tue Jan  8 07:03:49 CET 2019 on sn-devel-144

commit 99c030bce6e246dfa1821a79abe751013b4bd2ef
Author: Björn Jacke <[email protected]>
Date:   Mon Jan 7 00:28:34 2019 +0100

    waf: fix waf errors with sendfail detection on Solaris
    
    Signed-off-by: Bjoern Jacke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit a2402f9714449f9dcb86f40dc178a5b5d8384469
Author: Justin Stephenson <[email protected]>
Date:   Mon Dec 17 11:26:11 2018 -0500

    s3: net: Do not set NET_FLAGS_ANONYMOUS with -k
    
    This affects net rpc getsid and net rpc changetrustpw commands.
    This avoids an anonymous IPC connection being made when -k is used,
    this only affects net rpc getsid and net rpc changetrustpw commands.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13726
    
    Signed-off-by: Justin Stephenson <[email protected]>
    Reviewed-by: Andreas Schneider <[email protected]>
    Reviewed-by: Noel Power <[email protected]>

commit b06f0912fc6873d3f7ca49d57267005c0f5c6c19
Author: Volker Lendecke <[email protected]>
Date:   Sun Dec 16 17:24:36 2018 +0100

    libnet4: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit f1e71a2c1e012596a0a753ea5f11df06244a3cb1
Author: Volker Lendecke <[email protected]>
Date:   Sun Dec 16 17:17:58 2018 +0100

    winbind4: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 6f4b2cc9659ff9da7f1e6c60678a0d4d4f453611
Author: Volker Lendecke <[email protected]>
Date:   Sun Dec 16 17:12:19 2018 +0100

    pysecurity: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 186fff5fc3537eedf03a26f1419f2d4844648662
Author: Volker Lendecke <[email protected]>
Date:   Sun Dec 16 17:11:55 2018 +0100

    auth4: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 62bc70d18c395101876bcad519982ed6ef473aac
Author: Volker Lendecke <[email protected]>
Date:   Sun Dec 16 17:02:54 2018 +0100

    ntpd: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 542da7e8002133ab5ef16befa04bc7d9f4e68b9d
Author: Volker Lendecke <[email protected]>
Date:   Sun Dec 16 16:59:32 2018 +0100

    passdb: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit a74946e3007259e42d296fc1209860d7aee90281
Author: Volker Lendecke <[email protected]>
Date:   Fri Dec 14 20:30:10 2018 +0100

    winbind: Fix a typo
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 0d208f42cc695570cc6403554f231a6b9a051623
Author: Volker Lendecke <[email protected]>
Date:   Fri Dec 21 09:34:34 2018 +0100

    pydsdb: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit c9036f2597b90103df9469ffed637ed132c39846
Author: Volker Lendecke <[email protected]>
Date:   Fri Dec 21 09:32:41 2018 +0100

    libndr: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 08be989aa91682956133270a6ee41bd1ae1622d1
Author: Volker Lendecke <[email protected]>
Date:   Fri Dec 21 09:30:58 2018 +0100

    smbclient: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 6b8c77152e901de97c182285a698a67fad7bb7b3
Author: Volker Lendecke <[email protected]>
Date:   Fri Dec 21 09:27:43 2018 +0100

    libcli: Simplify smblsa_lookup_name
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit af95db60dec913fb509194e8c8f70d81c2e4e859
Author: Volker Lendecke <[email protected]>
Date:   Thu Dec 20 21:57:21 2018 +0100

    winbindd: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 12ffef9fc2d6deba8e39e7097ab0e94750f8e7b3
Author: Volker Lendecke <[email protected]>
Date:   Thu Dec 20 21:53:17 2018 +0100

    auth3: Use dom_sid_str_buf
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit cc0664dd0453c85147b4b270bddb418bb1d4d0a9
Author: Volker Lendecke <[email protected]>
Date:   Mon Dec 31 07:16:29 2018 +0100

    lib: Remove StrnCpy
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 2cc2a75305955cf0974c7de801ec440a8e45e3fb
Author: Volker Lendecke <[email protected]>
Date:   Mon Dec 31 07:15:21 2018 +0100

    smbd: Use strlcpy instead of StrnCpy
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit e74ad1b74514b23e11ebc46c1234f5421eda798f
Author: Volker Lendecke <[email protected]>
Date:   Mon Dec 31 07:15:03 2018 +0100

    nmbd: Use strlcpy instead of StrnCpy
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit fa945bc1e09829d8ef8a4454d420cbd07ca47002
Author: Volker Lendecke <[email protected]>
Date:   Mon Dec 31 07:14:48 2018 +0100

    libsmb: Use strlcpy instead of StrnCpy
    
    Signed-off-by: Volker Lendecke <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit facd6f2daf6df0f9c82bcbe36946507736e9648c
Author: Aliaksei Karaliou <[email protected]>
Date:   Fri Dec 21 16:47:00 2018 +0300

    s4:torture:base:bench-readwrite: fix uninitialized memory causing segfault
    
    Allocation of 'struct smb_composite_connect' happens without zeroing
    so that smb_composite_connect_send() thinks that connection
    already exists and fails on its handling.
    
    Signed-off-by: Aliaksei Karaliou <[email protected]>
    Reviewed-by: Douglas Bagnall <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

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

Summary of changes:
 librpc/ndr/ndr_sec_helper.c         |  3 +-
 source3/auth/token_util.c           | 10 ++--
 source3/client/client.c             |  7 +--
 source3/include/proto.h             |  1 -
 source3/lib/util_str.c              | 26 ----------
 source3/libsmb/namequery.c          |  2 +-
 source3/nmbd/nmbd_incomingdgrams.c  |  2 +-
 source3/passdb/pdb_samba_dsdb.c     | 97 ++++++++++++++++++++++++-------------
 source3/smbd/lanman.c               |  2 +-
 source3/utils/net_rpc.c             | 10 +++-
 source3/winbindd/idmap_autorid.c    |  2 +-
 source3/winbindd/winbindd_cm.c      | 18 ++++---
 source3/wscript                     | 19 +++-----
 source4/auth/sam.c                  | 16 +++---
 source4/auth/session.c              | 15 ++----
 source4/auth/unix_token.c           | 18 +++----
 source4/dsdb/pydsdb.c               | 10 +---
 source4/libcli/util/clilsa.c        | 11 ++---
 source4/libnet/libnet_join.c        | 11 +++--
 source4/libnet/libnet_samdump.c     |  4 +-
 source4/libnet/libnet_samsync_ldb.c | 27 +++++------
 source4/librpc/ndr/py_security.c    | 11 ++---
 source4/ntp_signd/ntp_signd.c       | 15 +++---
 source4/torture/basic/misc.c        |  4 +-
 source4/winbind/idmap.c             | 30 ++++++------
 25 files changed, 187 insertions(+), 184 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/ndr/ndr_sec_helper.c b/librpc/ndr/ndr_sec_helper.c
index ecc05115d4b..5a2ed16e33e 100644
--- a/librpc/ndr/ndr_sec_helper.c
+++ b/librpc/ndr/ndr_sec_helper.c
@@ -147,7 +147,8 @@ size_t ndr_size_dom_sid0(const struct dom_sid *sid, int 
flags)
 */
 void ndr_print_dom_sid(struct ndr_print *ndr, const char *name, const struct 
dom_sid *sid)
 {
-       ndr->print(ndr, "%-25s: %s", name, dom_sid_string(ndr, sid));
+       struct dom_sid_buf buf;
+       ndr->print(ndr, "%-25s: %s", name, dom_sid_str_buf(sid, &buf));
 }
 
 void ndr_print_dom_sid2(struct ndr_print *ndr, const char *name, const struct 
dom_sid *sid)
diff --git a/source3/auth/token_util.c b/source3/auth/token_util.c
index bfc2c3029b2..f7ebd23e4aa 100644
--- a/source3/auth/token_util.c
+++ b/source3/auth/token_util.c
@@ -1212,15 +1212,18 @@ bool user_sid_in_group_sid(const struct dom_sid *sid, 
const struct dom_sid *grou
        bool result = false;
        enum lsa_SidType type;
        TALLOC_CTX *mem_ctx = talloc_stackframe();
+       struct dom_sid_buf buf;
 
        if (!lookup_sid(mem_ctx, sid,
                         NULL, NULL, &type)) {
-               DEBUG(1, ("lookup_sid for %s failed\n", dom_sid_string(mem_ctx, 
sid)));
+               DEBUG(1, ("lookup_sid for %s failed\n",
+                         dom_sid_str_buf(sid, &buf)));
                goto done;
        }
 
        if (type != SID_NAME_USER) {
-               DEBUG(5, ("%s is a %s, not a user\n", dom_sid_string(mem_ctx, 
sid),
+               DEBUG(5, ("%s is a %s, not a user\n",
+                         dom_sid_str_buf(sid, &buf),
                          sid_type_lookup(type)));
                goto done;
        }
@@ -1230,7 +1233,8 @@ bool user_sid_in_group_sid(const struct dom_sid *sid, 
const struct dom_sid *grou
                                       &token);
 
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(10, ("could not create token for %s\n", 
dom_sid_string(mem_ctx, sid)));
+               DEBUG(10, ("could not create token for %s\n",
+                          dom_sid_str_buf(sid, &buf)));
                goto done;
        }
 
diff --git a/source3/client/client.c b/source3/client/client.c
index e8faed55dc4..3a31463cdbb 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -3359,9 +3359,10 @@ static int cmd_posix_whoami(void)
        }
        d_printf("NUM_SIDS:%" PRIu32 "\n", num_sids);
        for (i = 0; i < num_sids; i++) {
-               char *sid_str = dom_sid_string(ctx, &sids[i]);
-               d_printf("SIDS[%" PRIu32 "]:%s\n", i, sid_str);
-               TALLOC_FREE(sid_str);
+               struct dom_sid_buf buf;
+               d_printf("SIDS[%" PRIu32 "]:%s\n",
+                        i,
+                        dom_sid_str_buf(&sids[i], &buf));
        }
        return 0;
 }
diff --git a/source3/include/proto.h b/source3/include/proto.h
index d2f9986c244..c92d9921d6e 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -574,7 +574,6 @@ size_t str_charnum(const char *s);
 bool trim_char(char *s,char cfront,char cback);
 bool strhasupper(const char *s);
 bool strhaslower(const char *s);
-char *StrnCpy(char *dest,const char *src,size_t n);
 bool in_list(const char *s, const char *list, bool casesensitive);
 void fstring_sub(char *s,const char *pattern,const char *insert);
 char *realloc_string_sub2(char *string,
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
index eb36478d8a2..8568af46c17 100644
--- a/source3/lib/util_str.c
+++ b/source3/lib/util_str.c
@@ -170,32 +170,6 @@ bool trim_char(char *s,char cfront,char cback)
        return ret;
 }
 
-/**
- Like strncpy but always null terminates. Make sure there is room!
- The variable n should always be one less than the available size.
-**/
-char *StrnCpy(char *dest,const char *src,size_t n)
-{
-       char *d = dest;
-
-       if (!dest) {
-               smb_panic("ERROR: NULL dest in StrnCpy");
-       }
-
-       if (!src) {
-               *dest = 0;
-               return(dest);
-       }
-
-       while (n-- && (*d = *src)) {
-               d++;
-               src++;
-       }
-
-       *d = 0;
-       return(dest);
-}
-
 /**
  Check if a string is part of a list.
 **/
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c
index 6564f4869ea..abeed972403 100644
--- a/source3/libsmb/namequery.c
+++ b/source3/libsmb/namequery.c
@@ -274,7 +274,7 @@ static struct node_status *parse_node_status(TALLOC_CTX 
*mem_ctx, char *p,
 
        p++;
        for (i=0;i< *num_names;i++) {
-               StrnCpy(ret[i].name,p,15);
+               strlcpy(ret[i].name,p,16);
                trim_char(ret[i].name,'\0',' ');
                ret[i].type = CVAL(p,15);
                ret[i].flags = p[16];
diff --git a/source3/nmbd/nmbd_incomingdgrams.c 
b/source3/nmbd/nmbd_incomingdgrams.c
index 6fedcfd0255..e8980055b19 100644
--- a/source3/nmbd/nmbd_incomingdgrams.c
+++ b/source3/nmbd/nmbd_incomingdgrams.c
@@ -607,7 +607,7 @@ static void send_backup_list_response(struct subnet_record 
*subrec,
     if(!(servrec->serv.type & SV_TYPE_BACKUP_BROWSER))
       continue;
 
-    StrnCpy(p, servrec->serv.name, 15);
+    strlcpy(p, servrec->serv.name, 16);
     strupper_m(p);
     count++;
 
diff --git a/source3/passdb/pdb_samba_dsdb.c b/source3/passdb/pdb_samba_dsdb.c
index 951ab81c22c..0753d38b5f6 100644
--- a/source3/passdb/pdb_samba_dsdb.c
+++ b/source3/passdb/pdb_samba_dsdb.c
@@ -155,7 +155,8 @@ static struct ldb_message *pdb_samba_dsdb_get_samu_private(
        struct pdb_samba_dsdb_state *state = talloc_get_type_abort(
                m->private_data, struct pdb_samba_dsdb_state);
        struct ldb_message *msg;
-       char *sidstr, *filter;
+       struct dom_sid_buf sidstr;
+       char *filter;
        NTSTATUS status;
 
        msg = (struct ldb_message *)
@@ -165,14 +166,10 @@ static struct ldb_message 
*pdb_samba_dsdb_get_samu_private(
                return talloc_get_type_abort(msg, struct ldb_message);
        }
 
-       sidstr = dom_sid_string(talloc_tos(), pdb_get_user_sid(sam));
-       if (sidstr == NULL) {
-               return NULL;
-       }
-
        filter = talloc_asprintf(
-               talloc_tos(), "(&(objectsid=%s)(objectclass=user))", sidstr);
-       TALLOC_FREE(sidstr);
+               talloc_tos(),
+               "(&(objectsid=%s)(objectclass=user))",
+               dom_sid_str_buf(pdb_get_user_sid(sam), &sidstr));
        if (filter == NULL) {
                return NULL;
        }
@@ -725,15 +722,11 @@ static NTSTATUS pdb_samba_dsdb_getsampwsid(struct 
pdb_methods *m,
        NTSTATUS status;
        struct pdb_samba_dsdb_state *state = talloc_get_type_abort(
                m->private_data, struct pdb_samba_dsdb_state);
-       char *sidstr;
-
-       sidstr = dom_sid_string(talloc_tos(), sid);
-       NT_STATUS_HAVE_NO_MEMORY(sidstr);
+       struct dom_sid_buf buf;
 
        status = pdb_samba_dsdb_getsampwfilter(m, state, sam_acct,
                                           
"(&(objectsid=%s)(objectclass=user))",
-                                          sidstr);
-       talloc_free(sidstr);
+                                          dom_sid_str_buf(sid, &buf));
        return status;
 }
 
@@ -771,10 +764,15 @@ static NTSTATUS pdb_samba_dsdb_delete_user(struct 
pdb_methods *m,
                m->private_data, struct pdb_samba_dsdb_state);
        struct ldb_dn *dn;
        int rc;
+       struct dom_sid_buf buf;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
 
-       dn = ldb_dn_new_fmt(tmp_ctx, state->ldb, "<SID=%s>", 
dom_sid_string(tmp_ctx, pdb_get_user_sid(sam)));
+       dn = ldb_dn_new_fmt(
+               tmp_ctx,
+               state->ldb,
+               "<SID=%s>",
+               dom_sid_str_buf(pdb_get_user_sid(sam), &buf));
        if (!dn || !ldb_dn_validate(dn)) {
                talloc_free(tmp_ctx);
                return NT_STATUS_NO_MEMORY;
@@ -1110,6 +1108,7 @@ static NTSTATUS pdb_samba_dsdb_delete_dom_group(struct 
pdb_methods *m,
        struct ldb_message *msg;
        struct ldb_dn *dn;
        int rc;
+       struct dom_sid_buf buf;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
 
@@ -1120,7 +1119,11 @@ static NTSTATUS pdb_samba_dsdb_delete_dom_group(struct 
pdb_methods *m,
                return NT_STATUS_INTERNAL_ERROR;
        }
 
-       dn = ldb_dn_new_fmt(tmp_ctx, state->ldb, "<SID=%s>", 
dom_sid_string(tmp_ctx, &sid));
+       dn = ldb_dn_new_fmt(
+               tmp_ctx,
+               state->ldb,
+               "<SID=%s>",
+               dom_sid_str_buf(&sid, &buf));
        if (!dn || !ldb_dn_validate(dn)) {
                talloc_free(tmp_ctx);
                ldb_transaction_cancel(state->ldb);
@@ -1193,11 +1196,16 @@ static NTSTATUS 
pdb_samba_dsdb_enum_group_members(struct pdb_methods *m,
        uint32_t *members;
        struct ldb_dn *dn;
        NTSTATUS status;
+       struct dom_sid_buf buf;
 
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
 
-       dn = ldb_dn_new_fmt(tmp_ctx, state->ldb, "<SID=%s>", 
dom_sid_string(tmp_ctx, group));
+       dn = ldb_dn_new_fmt(
+               tmp_ctx,
+               state->ldb,
+               "<SID=%s>",
+               dom_sid_str_buf(group, &buf));
        if (!dn || !ldb_dn_validate(dn)) {
                return NT_STATUS_NO_MEMORY;
        }
@@ -1285,10 +1293,11 @@ static NTSTATUS fake_enum_group_memberships(struct 
pdb_samba_dsdb_state *state,
                if (id_map.xid.type == ID_TYPE_GID || id_map.xid.type == 
ID_TYPE_BOTH) {
                        gids[0] = id_map.xid.id;
                } else {
+                       struct dom_sid_buf buf1, buf2;
                        DEBUG(1, (__location__
                                  "Group %s, of which %s is a member, could not 
be converted to a GID\n",
-                                 dom_sid_string(tmp_ctx, &group_sids[0]),
-                                 dom_sid_string(tmp_ctx, &user->user_sid)));
+                                 dom_sid_str_buf(&group_sids[0], &buf1),
+                                 dom_sid_str_buf(&user->user_sid, &buf2)));
                        talloc_free(tmp_ctx);
                        /* We must error out, otherwise a user might
                         * avoid a DENY acl based on a group they
@@ -1392,9 +1401,11 @@ static NTSTATUS 
pdb_samba_dsdb_enum_group_memberships(struct pdb_methods *m,
                if (id_map.xid.type == ID_TYPE_GID || id_map.xid.type == 
ID_TYPE_BOTH) {
                        gids[num_groups] = id_map.xid.id;
                } else {
+                       struct dom_sid_buf buf;
                        DEBUG(1, (__location__
                                  "Group %s, of which %s is a member, could not 
be converted to a GID\n",
-                                 dom_sid_string(tmp_ctx, 
&group_sids[num_groups]),
+                                 dom_sid_str_buf(&group_sids[num_groups],
+                                                 &buf),
                                  ldb_dn_get_linearized(msg->dn)));
                        talloc_free(tmp_ctx);
                        /* We must error out, otherwise a user might
@@ -1434,6 +1445,7 @@ static NTSTATUS pdb_samba_dsdb_mod_groupmem_by_sid(struct 
pdb_methods *m,
        struct ldb_message *msg;
        int ret;
        struct ldb_message_element *el;
+       struct dom_sid_buf buf;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
        msg = ldb_msg_new(tmp_ctx);
@@ -1442,12 +1454,20 @@ static NTSTATUS 
pdb_samba_dsdb_mod_groupmem_by_sid(struct pdb_methods *m,
                return NT_STATUS_NO_MEMORY;
        }
 
-       msg->dn = ldb_dn_new_fmt(msg, state->ldb, "<SID=%s>", 
dom_sid_string(tmp_ctx, groupsid));
+       msg->dn = ldb_dn_new_fmt(
+               msg,
+               state->ldb,
+               "<SID=%s>",
+               dom_sid_str_buf(groupsid, &buf));
        if (!msg->dn || !ldb_dn_validate(msg->dn)) {
                talloc_free(tmp_ctx);
                return NT_STATUS_NO_MEMORY;
        }
-       ret = ldb_msg_add_fmt(msg, "member", "<SID=%s>", 
dom_sid_string(tmp_ctx, membersid));
+       ret = ldb_msg_add_fmt(
+               msg,
+               "member",
+               "<SID=%s>",
+               dom_sid_str_buf(membersid, &buf));
        if (ret != LDB_SUCCESS) {
                talloc_free(tmp_ctx);
                return NT_STATUS_NO_MEMORY;
@@ -1551,10 +1571,15 @@ static NTSTATUS pdb_samba_dsdb_delete_alias(struct 
pdb_methods *m,
        struct ldb_message *msg;
        struct ldb_dn *dn;
        int rc;
+       struct dom_sid_buf buf;
        TALLOC_CTX *tmp_ctx = talloc_stackframe();
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
 
-       dn = ldb_dn_new_fmt(tmp_ctx, state->ldb, "<SID=%s>", 
dom_sid_string(tmp_ctx, sid));
+       dn = ldb_dn_new_fmt(
+               tmp_ctx,
+               state->ldb,
+               "<SID=%s>",
+               dom_sid_str_buf(sid, &buf));
        if (!dn || !ldb_dn_validate(dn)) {
                talloc_free(tmp_ctx);
                return NT_STATUS_NO_MEMORY;
@@ -1713,10 +1738,15 @@ static NTSTATUS pdb_samba_dsdb_enum_aliasmem(struct 
pdb_methods *m,
        struct ldb_dn *dn;
        unsigned int num_members;
        NTSTATUS status;
+       struct dom_sid_buf buf;
        TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
        NT_STATUS_HAVE_NO_MEMORY(tmp_ctx);
 
-       dn = ldb_dn_new_fmt(tmp_ctx, state->ldb, "<SID=%s>", 
dom_sid_string(tmp_ctx, alias));
+       dn = ldb_dn_new_fmt(
+               tmp_ctx,
+               state->ldb,
+               "<SID=%s>",
+               dom_sid_str_buf(alias, &buf));
        if (!dn || !ldb_dn_validate(dn)) {
                return NT_STATUS_NO_MEMORY;
        }
@@ -1747,7 +1777,6 @@ static NTSTATUS 
pdb_samba_dsdb_enum_alias_memberships(struct pdb_methods *m,
        unsigned int num_groupSIDs = 0;
        char *filter;
        NTSTATUS status;
-       const char *sid_string;
        const char *sid_dn;
        DATA_BLOB sid_blob;
 
@@ -1765,13 +1794,12 @@ static NTSTATUS 
pdb_samba_dsdb_enum_alias_memberships(struct pdb_methods *m,
        }
 
        for (i = 0; i < num_members; i++) {
-               sid_string = dom_sid_string(tmp_ctx, &members[i]);
-               if (sid_string == NULL) {
-                       TALLOC_FREE(tmp_ctx);
-                       return NT_STATUS_NO_MEMORY;
-               }
+               struct dom_sid_buf buf;
 
-               sid_dn = talloc_asprintf(tmp_ctx, "<SID=%s>", sid_string);
+               sid_dn = talloc_asprintf(
+                       tmp_ctx,
+                       "<SID=%s>",
+                       dom_sid_str_buf(&members[i], &buf));
                if (sid_dn == NULL) {
                        TALLOC_FREE(tmp_ctx);
                        return NT_STATUS_NO_MEMORY;
@@ -3136,13 +3164,15 @@ static NTSTATUS 
pdb_samba_dsdb_get_trusted_domain_by_sid(struct pdb_methods *m,
        };
        struct ldb_message *msg = NULL;
        struct pdb_trusted_domain *d = NULL;
+       struct dom_sid_buf buf;
        NTSTATUS status;
 
        status = dsdb_trust_search_tdo_by_sid(state->ldb, sid,
                                              attrs, tmp_ctx, &msg);
        if (!NT_STATUS_IS_OK(status)) {
                DBG_ERR("dsdb_trust_search_tdo_by_sid(%s) - %s ",
-                       dom_sid_string(tmp_ctx, sid), nt_errstr(status));
+                       dom_sid_str_buf(sid, &buf),
+                       nt_errstr(status));
                TALLOC_FREE(tmp_ctx);
                return status;
        }
@@ -3150,7 +3180,8 @@ static NTSTATUS 
pdb_samba_dsdb_get_trusted_domain_by_sid(struct pdb_methods *m,
        status = pdb_samba_dsdb_msg_to_trusted_domain(msg, mem_ctx, &d);
        if (!NT_STATUS_IS_OK(status)) {
                DBG_ERR("pdb_samba_dsdb_msg_to_trusted_domain(%s) - %s ",
-                       dom_sid_string(tmp_ctx, sid), nt_errstr(status));
+                       dom_sid_str_buf(sid, &buf),
+                       nt_errstr(status));
                TALLOC_FREE(tmp_ctx);
                return status;
        }
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index dcc7f916d6e..9637194f697 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -364,7 +364,7 @@ static int package(struct pack_desc *p, ...)
                        {
                                char *s = va_arg(args,char*);
                                if (p->buflen >= needed) {
-                                       StrnCpy(p->structbuf,s?s:"",needed-1);
+                                       strlcpy(p->structbuf,s?s:"",needed);
                                }
                        }
                        break;
diff --git a/source3/utils/net_rpc.c b/source3/utils/net_rpc.c
index 6d5a1043792..c300b8a4b3d 100644
--- a/source3/utils/net_rpc.c
+++ b/source3/utils/net_rpc.c
@@ -316,6 +316,12 @@ static NTSTATUS rpc_changetrustpw_internals(struct 
net_context *c,
 
 int net_rpc_changetrustpw(struct net_context *c, int argc, const char **argv)
 {
+       int conn_flags = NET_FLAGS_PDC;
+
+       if (!c->opt_user_specified && !c->opt_kerberos) {
+               conn_flags |= NET_FLAGS_ANONYMOUS;
+       }
+
        if (c->display_usage) {
                d_printf(  "%s\n"
                           "net rpc changetrustpw\n"
@@ -326,7 +332,7 @@ int net_rpc_changetrustpw(struct net_context *c, int argc, 
const char **argv)
        }
 
        return run_rpc_command(c, NULL, &ndr_table_netlogon,
-                              NET_FLAGS_ANONYMOUS | NET_FLAGS_PDC,
+                              conn_flags,
                               rpc_changetrustpw_internals,
                               argc, argv);
 }
@@ -863,7 +869,7 @@ int net_rpc_getsid(struct net_context *c, int argc, const 
char **argv)
 {
        int conn_flags = NET_FLAGS_PDC;
 
-       if (!c->opt_user_specified) {
+       if (!c->opt_user_specified && !c->opt_kerberos) {
                conn_flags |= NET_FLAGS_ANONYMOUS;
        }
 
diff --git a/source3/winbindd/idmap_autorid.c b/source3/winbindd/idmap_autorid.c
index 6e38a57805b..1d0f0fafb82 100644
--- a/source3/winbindd/idmap_autorid.c
+++ b/source3/winbindd/idmap_autorid.c
@@ -464,7 +464,7 @@ static NTSTATUS idmap_autorid_sid_to_id_alloc_action(
                        return ret;
                }
 
-               DEBUG(10, ("Sepecial sid %s not mapped. falling back to "
+               DEBUG(10, ("Special sid %s not mapped. falling back to "
                           "regular allocation\n",
                           dom_sid_str_buf(ctx->map->sid, &buf)));
        }
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index 2e98c7634e8..22d3dcaa92b 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -2552,15 +2552,15 @@ no_dssetup:
                            !dom_sid_equal(&domain->sid,
                                           lsa_info->dns.sid))
                        {
+                               struct dom_sid_buf buf1, buf2;
                                DEBUG(1, ("set_dc_type_and_flags_connect: DC "
                                          "for domain %s (%s) claimed it was "
                                          "a DC for domain %s, refusing to "
                                          "initialize\n",
-                                         dom_sid_string(talloc_tos(),
-                                                        &domain->sid),
+                                         dom_sid_str_buf(&domain->sid, &buf1),
                                          domain->name,
-                                         dom_sid_string(talloc_tos(),
-                                                        lsa_info->dns.sid)));
+                                         dom_sid_str_buf(lsa_info->dns.sid,
+                                                         &buf2)));
                                TALLOC_FREE(cli);
                                TALLOC_FREE(mem_ctx);
                                return;
@@ -2611,16 +2611,18 @@ no_dssetup:
                                    !dom_sid_equal(&domain->sid,
                                                lsa_info->account_domain.sid))
                                {
+                                       struct dom_sid_buf buf1, buf2;
                                        DEBUG(1,
                                              ("set_dc_type_and_flags_connect: "
                                               "DC for domain %s (%s) claimed "
                                               "it was a DC for domain %s, "
                                               "refusing to initialize\n",
-                                              dom_sid_string(talloc_tos(),
-                                                             &domain->sid),
+                                              dom_sid_str_buf(
+                                                      &domain->sid, &buf1),
                                               domain->name,
-                                              dom_sid_string(talloc_tos(),
-                                               lsa_info->account_domain.sid)));
+                                              dom_sid_str_buf(
+                                               lsa_info->account_domain.sid,
+                                               &buf2)));
                                        TALLOC_FREE(cli);


-- 
Samba Shared Repository

Reply via email to