[SCM] Samba Shared Repository - branch master updated

Noel Power npower at samba.org
Mon Sep 7 14:47:05 UTC 2020


The branch, master has been updated
       via  7a3c368d787 s3: libsmb: Cleanup in get_dc_list()
       via  170051d61eb s3: libsmb: Now we only have namecache_store_sa(), rename it back to namecache_store().
       via  2989d736c4a s3: libsmb: Remove use of struct ip_service from the namecache code.
       via  9da8d26fe06 s3: libsmb: Remove the last caller of namecache_store().
       via  3dad456d8cb s3: libsmb: Add internal conversion function ip_service_to_samba_sockaddr().
       via  4c81f39012c s3: winbindd: Use namecache_store_sa() inside dcip_check_name().
       via  1593231e0ef s3: libsmb: Use namecache_store_sa() instead of namecache_store().
       via  0e59fee2917 s3: libsmb: Add namecache_store_sa(). Doesn't store ports and takes a samba_sockaddr array.
       via  7835e2cb480 s3: libsmb: Add internal ipstr_list_make_sa().
       via  39ecff712f0 s3: libsmb: Cleanup - resolve_name() get names from internal_resolve_names() which is guaranteed not to return zero addresses.
       via  c6cc05f5976 s3: libsmb: Remove commented out wrapper for internal_resolve_name().
       via  f36a0be9a76 s3: libsmb: Comment out wrapper function internal_resolve_name(). Rename _internal_resolve_name() -> internal_resolve_name().
       via  57349b65cc4 s3: libsmb: Remove now unused dup_ip_service_array().
       via  68e12688f2b s3: libsmb: Finally change _internal_resolve_name() to return a talloc'ed ip_service array.
       via  863ab1af625 s3: libsmb: Make _internal_resolve_name() return a size_t pointer for count.
       via  31674946b77 s3: libsmb: _internal_resolve_name() code cleanup.
       via  5e819231b3a s3: libsmb: _internal_resolve_name() code cleanup.
       via  e68e0402cce s3/libsmb: Cleanup coding in convert_ss2service()
       via  6b0b726105e s3: libsmb: Cleanup coding in convert_ss2service().
       via  9e4b5349f23 s3: libsmb: Change convert_ss2service() and it's one caller to take and return unsigned counts.
       via  cb01b5e433d s3: libsmb: Make namecache_store() take an unsigned count.
       via  f39ff1367a1 s3: libsmb: _internal_resolve_name(). Remove unused free(s).
       via  4d4bf8eedbe s3: libsmb: Convert namecache_fetch() and it's only caller to return a talloc'ed array of struct samba_sockaddr.
       via  9ffb18856bf s3: libsmb: Cleanup the code to do one address return given an IP address to _internal_resolve_name().
       via  aa20df217c4 s3: libsmb: Change remove_duplicate_addrs2() to take and return size_t, not int.
       via  e065fc8e284 s3: libsmb: Move talloc_stackframe() initialization to the front of _internal_resolve_name().
       via  f5bb322e66d s3: libsmb: Rename internal_resolve_name_talloc() -> internal_resolve_name().
       via  a68d329b407 s3: libsmb: Remove internal_resolve_name() externally. All callers now use internal_resolve_name_talloc().
       via  e5fd57d6e57 s3/libsmb: Cleanup, don't modify out params except on success
       via  a16d023c15a s3: libsmb: Make discover_dc_netbios() use internal_resolve_name_talloc().
       via  fed4b6341c9 s3: libsmb: Make get_dc_list() use internal_resolve_name_talloc().
       via  37eaee03e0e s3: libsmb: Make get_pdc_ip() use internal_resolve_name_talloc().
       via  55b589e9b04 s3: libsmb: Make find_master_ip() use internal_resolve_name_talloc().
       via  12e346d9d80 s3/libsmb: resolve_name_list don't update out params except for success
       via  505272a893d s3: libsmb: Make resolve_name_list() use internal_resolve_name_talloc().
       via  e18eb94f427 s3: libsmb: namequery - Make resolve_name() use internal_resolve_name_talloc().
       via  c6fc75a73bd s3: libsmb: namequery - Add internal_resolve_name_talloc().
       via  c0ccdd7038a s3: libsmb: Make get_dc_list() internal to namequery.c return talloc'ed ip_service array.
       via  973ca8a5c01 s3: libsmb: Cleanup - use early return in get_dc_list().
       via  46f7ab8f370 s3: libsmb: Change get_dc_list() to return a size_t count parameter.
       via  b9bc1e59bd8 s3: libsmb: Change to an early return in get_dc_list().
       via  3b3f92a2fa7 s3: libsmb: Cleanup - rename ctx -> frame for a talloc_stackframe to match modern coding standards.
       via  23fb64f35a6 s3: libsmb: Rename get_sorted_dc_list_talloc() -> get_sorted_dc_list()
       via  a0984e50642 s3: libsmb: Remove get_sorted_dc_list().
       via  e8b7162415d s3: winbindd: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
       via  1d6c3c2dea2 s3: net lookup: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
       via  b4164093cfe s3: libsmb: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
       via  fbc2031800c s3: libads: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
       via  f305a140d10 s3: libsmb: Add get_sorted_dc_list_talloc().
       via  6deb23c6187 s3: libads: Rename get_kdc_list_talloc() -> get_kdc_list().
       via  b7182c44176 s3: libsmb: Remove now unused get_kdc_list() (non-talloc version).
       via  11226af33e1 s3: utils: net_lookup. Convert to use get_kdc_list_talloc().
       via  5307b0e319a s3/libads: Cleanup() get_kdc_ip_string, free kdc_str on error
       via  9d62c3e9819 s3/libads: Only set result to kdc_str on success
       via  8e1b6602f51 s3: libads: Make get_kdc_ip_string() use get_kdc_list_talloc().
       via  e8a491691da s3: libsmb: Add get_kdc_list_talloc().
       via  02016acb2d8 s3: libsmb: Add utility funtion dup_ip_service_array().
       via  6bee431be3c s3: libsmb: Cleanup - Use helper variable for return from namecache_fetch() in internal_resolve_name().
       via  a4073ae55c3 s3: libsmb: Cleanup in resolve_name_list().
       via  6c28d715116 s3: libsmb: Cleanup - correctly error on sockaddr_storage_to_samba_sockaddr() fail.
       via  b95eea6b292 s3: libsmb: Cleanup - ensure we initialize all stack variables to 'safe' values when calling resolve_name_list()
       via  13acac25cb4 s3: libsmb: Cleanup - ensure we initialize all stack variables to 'safe' values when calling get_sorted_dc_list() that may not touch returns on error.
       via  c4c00d626cd s3: libsmb: Cleanup - ensure we initialize all stack variables to 'safe' values when calling get_kdc_list() that may not touch returns on error.
       via  f11dce99cc3 s3: libsmb: discover_dc_netbios(). Remember to free on error return.
      from  0b742ec6a05 s4:smb_server: Use cli_credentials_init_server() for negprot

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


- Log -----------------------------------------------------------------
commit 7a3c368d787b9a7e203d29de184dff5a4d241052
Author: Noel Power <noel.power at suse.com>
Date:   Fri Sep 4 12:23:14 2020 +0100

    s3: libsmb: Cleanup in get_dc_list()
    
    Don't modify out params (unless successful result),
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Noel Power <npower at samba.org>
    Autobuild-Date(master): Mon Sep  7 14:46:58 UTC 2020 on sn-devel-184

commit 170051d61eb17955d93db88ab729dc53a60604b1
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 12:17:07 2020 -0700

    s3: libsmb: Now we only have namecache_store_sa(), rename it back to namecache_store().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 2989d736c4a95c73ccb6d828362425b30d580337
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 12:14:13 2020 -0700

    s3: libsmb: Remove use of struct ip_service from the namecache code.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 9da8d26fe069189ca920b23ae541da9848515749
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 12:04:50 2020 -0700

    s3: libsmb: Remove the last caller of namecache_store().
    
    Convert to a struct samba_sockaddr array and use namecache_store_sa().
    
    We can now remove the use of 'struct ip_list' from
    the namecache code.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 3dad456d8cb4fa2b03396cce9c04c07d6c3c96c7
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:59:20 2020 -0700

    s3: libsmb: Add internal conversion function ip_service_to_samba_sockaddr().
    
    Compiles but commented out as not yet used. Next commit will
    change that.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 4c81f39012c5a1858161ba8f9a61393eb2ab3c9f
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:52:57 2020 -0700

    s3: winbindd: Use namecache_store_sa() inside dcip_check_name().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 1593231e0ef0d36fad7779f2f22b40a284706b9b
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:49:07 2020 -0700

    s3: libsmb: Use namecache_store_sa() instead of namecache_store().
    
    Removes one more struct ip_service usage.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 0e59fee2917f0fbd9c2c8fc04d0161af486beb64
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:45:17 2020 -0700

    s3: libsmb: Add namecache_store_sa(). Doesn't store ports and takes a samba_sockaddr array.
    
    Now uses ipstr_list_make_sa(). Now convert
    the callers, remove namecache_store() and
    then rename namecache_store_sa() back to namecache_store().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 7835e2cb480d3749a3ebbd4ab69188743df5277b
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:40:10 2020 -0700

    s3: libsmb: Add internal ipstr_list_make_sa().
    
    Duplicates ipstr_list_make() with samba_sockaddr, but doesn't store
    ports. The duplication is temporary as the ipstr_list_make() function
    will go away once namecache_store is converted to samba_sockaddr.
    
    Compiles but commented out as not yet used.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 39ecff712f0aa6f8c86c3dcad12b068d7b8ccdb7
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:33:20 2020 -0700

    s3: libsmb: Cleanup - resolve_name() get names from internal_resolve_names() which is guaranteed not to return zero addresses.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit c6cc05f5976913ab3c4f47396775769c7dc07902
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:23:08 2020 -0700

    s3: libsmb: Remove commented out wrapper for internal_resolve_name().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit f36a0be9a7628e212c7bbad1889cfc50a32ba472
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:14:10 2020 -0700

    s3: libsmb: Comment out wrapper function internal_resolve_name(). Rename _internal_resolve_name() -> internal_resolve_name().
    
    We can now remove the wrapper.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 57349b65cc4323ae757a48b7a878bf9861728cd1
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 11:12:17 2020 -0700

    s3: libsmb: Remove now unused dup_ip_service_array().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 68e12688f2b4986ad4b4e222ae4340d4e4e10a5b
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 19:05:28 2020 -0700

    s3: libsmb: Finally change _internal_resolve_name() to return a talloc'ed ip_service array.
    
    The wrapper internal_resolve_name() is now functionaly identical to _internal_resolve_name()
    so we can remove it and rename _internal_resolve_name() back to internal_resolve_name().
    
    dup_ip_service_array() is now no longer used, so comment it
    out as it's a staic function.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 863ab1af625291d809d7e5e721145e46a18d863d
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 16:42:29 2020 -0700

    s3: libsmb: Make _internal_resolve_name() return a size_t pointer for count.
    
    Getting closer to being a idential to the wrapper function
    internal_resolve_name() which we can then remove.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 31674946b777fbadaf892f4b2e988990053e0fd0
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 16:38:32 2020 -0700

    s3: libsmb: _internal_resolve_name() code cleanup.
    
    Only set *return_iplist just before success return.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 5e819231b3a7b518ef44c0477fcb01b152a7d842
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 16:34:57 2020 -0700

    s3: libsmb: _internal_resolve_name() code cleanup.
    
    Only set *return_count just before success return.
    Preparing to move all counts to size_t.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit e68e0402cce7a370512dbbd1da5e4b3a7a828eb2
Author: Noel Power <noel.power at suse.com>
Date:   Thu Sep 3 19:22:21 2020 -0700

    s3/libsmb: Cleanup coding in convert_ss2service()
    
    Don't update out params when unsuccessful
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6b0b726105e5a239c7c638d5e58f10c3f5f4678f
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:57:27 2020 -0700

    s3: libsmb: Cleanup coding in convert_ss2service().
    
    Will make it easier to return a talloc'ed array.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 9e4b5349f23464846da7b57fd36a5597b41e51c8
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:54:49 2020 -0700

    s3: libsmb: Change convert_ss2service() and it's one caller to take and return unsigned counts.
    
    Getting closer to making _internal_resolve_name() return a pointer to size_t
    for a count.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit cb01b5e433dacec1217281e69041b322e37a18a3
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:45:35 2020 -0700

    s3: libsmb: Make namecache_store() take an unsigned count.
    
    Counts can never be negative.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit f39ff1367a191d71f54f6184e848537b7c309c10
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:43:46 2020 -0700

    s3: libsmb: _internal_resolve_name(). Remove unused free(s).
    
    *return_iplist is guaranteeded to be always NULL here.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 4d4bf8eedbefad4fa27a33e4b51b943e3d4acd08
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:42:15 2020 -0700

    s3: libsmb: Convert namecache_fetch() and it's only caller to return a talloc'ed array of struct samba_sockaddr.
    
    Eventually everything will be talloced arrays of samba_sockaddr.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 9ffb18856bf128de635af4d9dd1e1582295778c2
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:26:54 2020 -0700

    s3: libsmb: Cleanup the code to do one address return given an IP address to _internal_resolve_name().
    
    Will make easier to move to talloc later.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit aa20df217c4601ce8243f4d51eeed12c4d6cfb1d
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:16:48 2020 -0700

    s3: libsmb: Change remove_duplicate_addrs2() to take and return size_t, not int.
    
    Will make converting _internal_resolve_name() to return a size_t easier.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit e065fc8e2840ec7af07228641b89fb772f96ca9d
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:59:14 2020 -0700

    s3: libsmb: Move talloc_stackframe() initialization to the front of _internal_resolve_name().
    
    Ensure we free correctly on all exit paths.
    This will allow us to move the internal calls to
    talloc more easily.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit f5bb322e66d9d9475dda8ac6aef39b7912b6dbad
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:56:50 2020 -0700

    s3: libsmb: Rename internal_resolve_name_talloc() -> internal_resolve_name().
    
    No more non-talloc callers.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit a68d329b4079dadef0dd2ca27c3a5bb697a040db
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:53:35 2020 -0700

    s3: libsmb: Remove internal_resolve_name() externally. All callers now use internal_resolve_name_talloc().
    
    Make the wrapped internal_resolve_name() function static as _internal_resolve_name().
    
    Now we can rename the callers back from internal_resolve_name_talloc() -> internal_resolve_name()
    as all external callers are talloc-based.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit e5fd57d6e578c9b46088ebe548e4d24ee61fd2ac
Author: Noel Power <noel.power at suse.com>
Date:   Thu Sep 3 19:11:08 2020 -0700

    s3/libsmb: Cleanup, don't modify out params except on success
    
    All callers don't use out params on failure.
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit a16d023c15aa00aa12a927f6a3c3b5876022c988
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:47:55 2020 -0700

    s3: libsmb: Make discover_dc_netbios() use internal_resolve_name_talloc().
    
    No more external users of internal_resolve_name().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit fed4b6341c96316251e5384fa96ad60ae7b28261
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:41:15 2020 -0700

    s3: libsmb: Make get_dc_list() use internal_resolve_name_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 37eaee03e0e48ec5e7b5a4704cfa93e8ab95f78f
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:35:22 2020 -0700

    s3: libsmb: Make get_pdc_ip() use internal_resolve_name_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 55b589e9b04a7db97c3d344c90da846f3b8509d1
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:32:15 2020 -0700

    s3: libsmb: Make find_master_ip() use internal_resolve_name_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 12e346d9d8019a149c765ea92463919f91aca16a
Author: Noel Power <noel.power at suse.com>
Date:   Thu Sep 3 19:07:08 2020 -0700

    s3/libsmb: resolve_name_list don't update out params except for success
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 505272a893dc3bc3bf177b8a11cc2cd8be33bad0
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:30:02 2020 -0700

    s3: libsmb: Make resolve_name_list() use internal_resolve_name_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit e18eb94f427de874c0b094189d8a3f0316b6430a
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:28:12 2020 -0700

    s3: libsmb: namequery - Make resolve_name() use internal_resolve_name_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit c6fc75a73bd630f03842e9a39805d58c59422ce3
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:25:07 2020 -0700

    s3: libsmb: namequery - Add internal_resolve_name_talloc().
    
    This is a wrapper function for internal_resolve_name()
    that converts the replies from malloc() -> talloc().
    
    Now to move the callers, and I can move the talloc
    code down one level again.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit c0ccdd7038ac85cdbad0a39bedcbee0a08c39896
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:31:53 2020 -0700

    s3: libsmb: Make get_dc_list() internal to namequery.c return talloc'ed ip_service array.
    
    Moving closer to the target of making internal_resolve_name()
    use talloc.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 973ca8a5c01afef49a774cca49d4b0000b29f366
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:19:31 2020 -0700

    s3: libsmb: Cleanup - use early return in get_dc_list().
    
    No logic change. Makes later code changes clearer.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 46f7ab8f37046fadd86573b396b8c485255ab928
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:13:08 2020 -0700

    s3: libsmb: Change get_dc_list() to return a size_t count parameter.
    
    Remove paranoia checks and casts from callers, move internally.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit b9bc1e59bd84b35dcb98de73be2e13bb3254415b
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:07:18 2020 -0700

    s3: libsmb: Change to an early return in get_dc_list().
    
    No logic change. Will make later code changes clearer.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 3b3f92a2fa7bdf528009576cc8c1bf0905d9008a
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:05:06 2020 -0700

    s3: libsmb: Cleanup - rename ctx -> frame for a talloc_stackframe to match modern coding standards.
    
    We will be passing in a real TALLOC_CTX soon.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 23fb64f35a6a888538ebbfcff78ad8e30451f123
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:03:31 2020 -0700

    s3: libsmb: Rename get_sorted_dc_list_talloc() -> get_sorted_dc_list()
    
    There are no non-talloc callers.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit a0984e5064216edafe4b83011dc1042ca64d5194
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:01:18 2020 -0700

    s3: libsmb: Remove get_sorted_dc_list().
    
    No more callers.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit e8b7162415d0869eb302847cf4ce31e45438999f
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:00:00 2020 -0700

    s3: winbindd: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 1d6c3c2dea223f22c3c3166de1a2d100376ee02a
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:56:00 2020 -0700

    s3: net lookup: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit b4164093cfe8c2fd527e8c3e264025cc4e4790e3
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:53:07 2020 -0700

    s3: libsmb: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit fbc2031800c1dafce5080ec527547345286f0c93
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:50:46 2020 -0700

    s3: libads: Move callers of get_sorted_dc_list() -> get_sorted_dc_list_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit f305a140d103caea589f969d7cf087f53cd7e846
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:47:44 2020 -0700

    s3: libsmb: Add get_sorted_dc_list_talloc().
    
    Talloc version of get_sorted_dc_list_talloc().
    Makes use of dup_ip_service_array().
    Now to move the callers.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 6deb23c6187da770b03ebe313138506fb6cde0e7
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:43:32 2020 -0700

    s3: libads: Rename get_kdc_list_talloc() -> get_kdc_list().
    
    It's the only version now.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit b7182c4417675721a73fc543d88312cda60af988
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:39:54 2020 -0700

    s3: libsmb: Remove now unused get_kdc_list() (non-talloc version).
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 11226af33e1570bc4a54a951981bba29c8a912a4
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:38:31 2020 -0700

    s3: utils: net_lookup. Convert to use get_kdc_list_talloc().
    
    No more users of get_kdc_list().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 5307b0e319a08220c02f6eacfdac45d4af2bb19a
Author: Noel Power <noel.power at suse.com>
Date:   Fri Sep 4 12:02:58 2020 +0100

    s3/libads: Cleanup() get_kdc_ip_string, free kdc_str on error
    
    kdc_str will be cleaned up when the passed ctx is freed,
    it just seems odd that we now return NULL without cleaning up allocated mem.
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 9d62c3e98197d0c73c26a10545c39026b38f0fb7
Author: Noel Power <noel.power at suse.com>
Date:   Fri Sep 4 10:38:27 2020 +0100

    s3/libads: Only set result to kdc_str on success
    
    Prior to this change result was set even when any or all errors
    occured in the function.
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 8e1b6602f51f9599a46ad62a9796ed7a2bfcdfc6
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:30:36 2020 -0700

    s3: libads: Make get_kdc_ip_string() use get_kdc_list_talloc().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit e8a491691dad5c30228e90f5702115befbe3da00
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 11:26:33 2020 -0700

    s3: libsmb: Add get_kdc_list_talloc().
    
    Talloc version of get_kdc_list(). Makes use of dup_ip_service_array().
    Now to move the callers.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 02016acb2d8b7b5432406942e49d229fe1d024b5
Author: Jeremy Allison <jra at samba.org>
Date:   Tue Aug 25 10:22:10 2020 -0700

    s3: libsmb: Add utility funtion dup_ip_service_array().
    
    Preparing to return ip_service arrays as talloc, not
    malloc. Commented out as not yet used.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit 6bee431be3ce005b5ae547ffb50e4bdfb5aca902
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 15:20:22 2020 -0700

    s3: libsmb: Cleanup - Use helper variable for return from namecache_fetch() in internal_resolve_name().
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit a4073ae55c37e85891255073b4c162eb23c382f6
Author: Noel Power <npower at samba.org>
Date:   Wed Sep 2 10:52:08 2020 -0700

    s3: libsmb: Cleanup in resolve_name_list().
    
    Don't modify out params (unless successful result).
    
    Signed-off-by: Noel Power <npower at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 6c28d7151160e64a3f449e4dc34ade4fcb3e1298
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Aug 27 09:49:05 2020 -0700

    s3: libsmb: Cleanup - correctly error on sockaddr_storage_to_samba_sockaddr() fail.
    
    Instead of jumping out and leaking the memory onto ctx,
    skip bad conversions and error out if there are no addresses
    to return (and cleanup the memory there).
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit b95eea6b292dd0c11feb7921af33329711918655
Author: Noel Power <noel.power at suse.com>
Date:   Thu Sep 3 19:03:52 2020 -0700

    s3: libsmb: Cleanup - ensure we initialize all stack variables to 'safe' values when calling resolve_name_list()
    
    Signed-off-by: Noel Power <noel.power at suse.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 13acac25cb48ec39a0b35abb272de727f19bb236
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Sep 2 10:05:48 2020 -0700

    s3: libsmb: Cleanup - ensure we initialize all stack variables to 'safe' values when calling get_sorted_dc_list() that may not touch returns on error.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit c4c00d626cd9ebe118e6f9c16ef1b0575d29f39b
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Sep 2 09:58:30 2020 -0700

    s3: libsmb: Cleanup - ensure we initialize all stack variables to 'safe' values when calling get_kdc_list() that may not touch returns on error.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

commit f11dce99cc3a3e0b13fcb0d41d2db5cce07240db
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 13:45:43 2020 -0700

    s3: libsmb: discover_dc_netbios(). Remember to free on error return.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Noel Power <npower at samba.org>

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

Summary of changes:
 source3/include/proto.h        |  11 +-
 source3/libads/kerberos.c      |  61 ++++-
 source3/libads/ldap.c          |  29 +-
 source3/libsmb/cliconnect.c    |   5 +-
 source3/libsmb/dsgetdcname.c   |  50 ++--
 source3/libsmb/namecache.c     | 127 +++++----
 source3/libsmb/namequery.c     | 599 +++++++++++++++++++++++++++--------------
 source3/libsmb/namequery.h     |  26 +-
 source3/libsmb/namequery_dc.c  |  16 +-
 source3/torture/torture.c      |   6 +-
 source3/utils/net_lookup.c     |  32 ++-
 source3/winbindd/winbindd_cm.c |  66 +++--
 12 files changed, 674 insertions(+), 354 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index 506e2e80fa1..3641849fbe1 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -678,12 +678,13 @@ NTSTATUS dos_to_ntstatus(uint8_t eclass, uint32_t ecode);
 
 bool namecache_store(const char *name,
 			int name_type,
-			int num_names,
-			struct ip_service *ip_list);
-bool namecache_fetch(const char *name,
+			size_t num_names,
+			struct samba_sockaddr *sa_list);
+bool namecache_fetch(TALLOC_CTX *ctx,
+			const char *name,
 			int name_type,
-			struct ip_service **ip_list,
-			int *num_names);
+			struct samba_sockaddr **sa_list,
+			size_t *num_names);
 bool namecache_delete(const char *name, int name_type);
 void namecache_flush(void);
 bool namecache_status_store(const char *keyname, int keyname_type,
diff --git a/source3/libads/kerberos.c b/source3/libads/kerberos.c
index 1db285cd29a..d02d4d881e7 100644
--- a/source3/libads/kerberos.c
+++ b/source3/libads/kerberos.c
@@ -424,10 +424,10 @@ static char *get_kdc_ip_string(char *mem_ctx,
 	struct ip_service *ip_srv_site = NULL;
 	struct ip_service *ip_srv_nonsite = NULL;
 	struct samba_sockaddr sa = {0};
-	int count_site = 0;
-	int count_nonsite;
+	size_t count_site = 0;
+	size_t count_nonsite;
 	size_t num_dcs;
-	struct sockaddr_storage *dc_addrs;
+	struct sockaddr_storage *dc_addrs = NULL;
 	struct tsocket_address **dc_addrs2 = NULL;
 	const struct tsocket_address * const *dc_addrs3 = NULL;
 	char *result = NULL;
@@ -444,6 +444,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
 
 	ok = sockaddr_storage_to_samba_sockaddr(&sa, pss);
 	if (!ok) {
+		TALLOC_FREE(kdc_str);
 		goto out;
 	}
 
@@ -453,19 +454,49 @@ static char *get_kdc_ip_string(char *mem_ctx,
 	 */
 
 	if (sitename) {
-		get_kdc_list(realm, sitename, &ip_srv_site, &count_site);
-		DEBUG(10, ("got %d addresses from site %s search\n", count_site,
-			   sitename));
+		status = get_kdc_list(talloc_tos(),
+					realm,
+					sitename,
+					&ip_srv_site,
+					&count_site);
+		if (!NT_STATUS_IS_OK(status)) {
+			DBG_ERR("get_kdc_list fail %s\n",
+				nt_errstr(status));
+			TALLOC_FREE(kdc_str);
+			goto out;
+		}
+		DBG_DEBUG("got %zu addresses from site %s search\n",
+			count_site,
+			sitename);
 	}
 
 	/* Get all KDC's. */
 
-	get_kdc_list(realm, NULL, &ip_srv_nonsite, &count_nonsite);
-	DEBUG(10, ("got %d addresses from site-less search\n", count_nonsite));
+	status = get_kdc_list(talloc_tos(),
+					realm,
+					NULL,
+					&ip_srv_nonsite,
+					&count_nonsite);
+	if (!NT_STATUS_IS_OK(status)) {
+		DBG_ERR("get_kdc_list (site-less) fail %s\n",
+			nt_errstr(status));
+		TALLOC_FREE(kdc_str);
+		goto out;
+	}
+	DBG_DEBUG("got %zu addresses from site-less search\n", count_nonsite);
+
+	if (count_site + count_nonsite < count_site) {
+		/* Wrap check. */
+		DBG_ERR("get_kdc_list_talloc (site-less) fail wrap error\n");
+		TALLOC_FREE(kdc_str);
+		goto out;
+	}
+
 
 	dc_addrs = talloc_array(talloc_tos(), struct sockaddr_storage,
 				count_site + count_nonsite);
 	if (dc_addrs == NULL) {
+		TALLOC_FREE(kdc_str);
 		goto out;
 	}
 
@@ -477,6 +508,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
 		ok = sockaddr_storage_to_samba_sockaddr(&ip_sa,
 						&ip_srv_site[i].ss);
 		if (!ok) {
+			TALLOC_FREE(kdc_str);
 			goto out;
 		}
 
@@ -492,6 +524,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
 		ok = sockaddr_storage_to_samba_sockaddr(&ip_sa,
 						&ip_srv_nonsite[i].ss);
 		if (!ok) {
+			TALLOC_FREE(kdc_str);
 			goto out;
 		}
 
@@ -507,9 +540,11 @@ static char *get_kdc_ip_string(char *mem_ctx,
 
 	DBG_DEBUG("%zu additional KDCs to test\n", num_dcs);
 	if (num_dcs == 0) {
+		TALLOC_FREE(kdc_str);
 		goto out;
 	}
 	if (dc_addrs2 == NULL) {
+		TALLOC_FREE(kdc_str);
 		goto out;
 	}
 
@@ -526,6 +561,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
 			status = map_nt_error_from_unix(errno);
 			DEBUG(2,("Failed to create tsocket_address for %s - %s\n",
 				 addr, nt_errstr(status)));
+			TALLOC_FREE(kdc_str);
 			goto out;
 		}
 	}
@@ -543,6 +579,7 @@ static char *get_kdc_ip_string(char *mem_ctx,
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(10,("get_kdc_ip_string: cldap_multi_netlogon failed: "
 			  "%s\n", nt_errstr(status)));
+		TALLOC_FREE(kdc_str);
 		goto out;
 	}
 
@@ -557,19 +594,19 @@ static char *get_kdc_ip_string(char *mem_ctx,
 		new_kdc_str = talloc_asprintf(mem_ctx, "%s\t\tkdc = %s\n",
 					      kdc_str,
 					      print_canonical_sockaddr_with_port(mem_ctx, &dc_addrs[i]));
+		TALLOC_FREE(kdc_str);
 		if (new_kdc_str == NULL) {
 			goto out;
 		}
-		TALLOC_FREE(kdc_str);
 		kdc_str = new_kdc_str;
 	}
 
+	result = kdc_str;
 out:
 	DEBUG(10, ("get_kdc_ip_string: Returning %s\n", kdc_str));
 
-	result = kdc_str;
-	SAFE_FREE(ip_srv_site);
-	SAFE_FREE(ip_srv_nonsite);
+	TALLOC_FREE(ip_srv_site);
+	TALLOC_FREE(ip_srv_nonsite);
 	TALLOC_FREE(frame);
 	return result;
 }
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c
index 2fc9b2009b6..8fbe34a20b7 100755
--- a/source3/libads/ldap.c
+++ b/source3/libads/ldap.c
@@ -383,15 +383,20 @@ static NTSTATUS cldap_ping_list(ADS_STRUCT *ads,const char *domain,
 static NTSTATUS resolve_and_ping_netbios(ADS_STRUCT *ads,
 					 const char *domain, const char *realm)
 {
-	int count, i;
-	struct ip_service *ip_list;
+	size_t i;
+	size_t count = 0;
+	struct ip_service *ip_list = NULL;
 	NTSTATUS status;
 
 	DEBUG(6, ("resolve_and_ping_netbios: (cldap) looking for domain '%s'\n",
 		  domain));
 
-	status = get_sorted_dc_list(domain, NULL, &ip_list, &count,
-				    false);
+	status = get_sorted_dc_list(talloc_tos(),
+				domain,
+				NULL,
+				&ip_list,
+				&count,
+				false);
 	if (!NT_STATUS_IS_OK(status)) {
 		return status;
 	}
@@ -417,7 +422,7 @@ static NTSTATUS resolve_and_ping_netbios(ADS_STRUCT *ads,
 
 	status = cldap_ping_list(ads, domain, ip_list, count);
 
-	SAFE_FREE(ip_list);
+	TALLOC_FREE(ip_list);
 
 	return status;
 }
@@ -430,23 +435,27 @@ static NTSTATUS resolve_and_ping_netbios(ADS_STRUCT *ads,
 static NTSTATUS resolve_and_ping_dns(ADS_STRUCT *ads, const char *sitename,
 				     const char *realm)
 {
-	int count;
+	size_t count = 0;
 	struct ip_service *ip_list = NULL;
 	NTSTATUS status;
 
 	DEBUG(6, ("resolve_and_ping_dns: (cldap) looking for realm '%s'\n",
 		  realm));
 
-	status = get_sorted_dc_list(realm, sitename, &ip_list, &count,
-				    true);
+	status = get_sorted_dc_list(talloc_tos(),
+				realm,
+				sitename,
+				&ip_list,
+				&count,
+				true);
 	if (!NT_STATUS_IS_OK(status)) {
-		SAFE_FREE(ip_list);
+		TALLOC_FREE(ip_list);
 		return status;
 	}
 
 	status = cldap_ping_list(ads, realm, ip_list, count);
 
-	SAFE_FREE(ip_list);
+	TALLOC_FREE(ip_list);
 
 	return status;
 }
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index abfd18bfaf1..bdc709f3e01 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -2535,8 +2535,9 @@ static struct tevent_req *cli_connect_sock_send(
 {
 	struct tevent_req *req, *subreq;
 	struct cli_connect_sock_state *state;
-	struct sockaddr_storage *addrs;
-	unsigned i, num_addrs;
+	struct sockaddr_storage *addrs = NULL;
+	unsigned i;
+	unsigned num_addrs = 0;
 	NTSTATUS status;
 
 	req = tevent_req_create(mem_ctx, &state,
diff --git a/source3/libsmb/dsgetdcname.c b/source3/libsmb/dsgetdcname.c
index 128004a0f6a..01e7a42cd77 100644
--- a/source3/libsmb/dsgetdcname.c
+++ b/source3/libsmb/dsgetdcname.c
@@ -443,22 +443,23 @@ static NTSTATUS discover_dc_netbios(TALLOC_CTX *mem_ctx,
 {
 	NTSTATUS status;
 	enum nbt_name_type name_type = NBT_NAME_LOGON;
-	struct ip_service *iplist;
-	int i;
+	struct ip_service *iplist = NULL;
+	size_t i;
 	struct ip_service_name *dclist = NULL;
-	int count;
+	size_t count;
 	static const char *resolve_order[] = { "lmhosts", "wins", "bcast", NULL };
 
-	*returned_dclist = NULL;
-	*returned_count = 0;
-
 	if (flags & DS_PDC_REQUIRED) {
 		name_type = NBT_NAME_PDC;
 	}
 
-	status = internal_resolve_name(domain_name, name_type, NULL,
-				       &iplist, &count,
-				       resolve_order);
+	status = internal_resolve_name(mem_ctx,
+					domain_name,
+					name_type,
+					NULL,
+					&iplist,
+					&count,
+					resolve_order);
 	if (!NT_STATUS_IS_OK(status)) {
 		DEBUG(10,("discover_dc_netbios: failed to find DC\n"));
 		return status;
@@ -466,7 +467,7 @@ static NTSTATUS discover_dc_netbios(TALLOC_CTX *mem_ctx,
 
 	dclist = talloc_zero_array(mem_ctx, struct ip_service_name, count);
 	if (!dclist) {
-		SAFE_FREE(iplist);
+		TALLOC_FREE(iplist);
 		return NT_STATUS_NO_MEMORY;
 	}
 
@@ -480,20 +481,29 @@ static NTSTATUS discover_dc_netbios(TALLOC_CTX *mem_ctx,
 
 		ok = sockaddr_storage_to_samba_sockaddr(&r->sa, &iplist[i].ss);
 		if (!ok) {
-			SAFE_FREE(iplist);
+			TALLOC_FREE(iplist);
+			TALLOC_FREE(dclist);
 			return NT_STATUS_INVALID_PARAMETER;
 		}
 		r->hostname = talloc_strdup(mem_ctx, addr);
 		if (!r->hostname) {
-			SAFE_FREE(iplist);
+			TALLOC_FREE(iplist);
+			TALLOC_FREE(dclist);
 			return NT_STATUS_NO_MEMORY;
 		}
 
 	}
 
+	TALLOC_FREE(iplist);
+
+	/* Paranoia in casting size_t -> int. */
+	if ((int)count < 0) {
+		TALLOC_FREE(dclist);
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
 	*returned_dclist = dclist;
 	*returned_count = count;
-	SAFE_FREE(iplist);
 
 	return NT_STATUS_OK;
 }
@@ -1054,7 +1064,6 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
 				   int num_dcs,
 				   struct netr_DsRGetDCNameInfo **info)
 {
-	struct ip_service ip_list;
 	enum nbt_name_type name_type = NBT_NAME_LOGON;
 	NTSTATUS status;
 	int i;
@@ -1090,15 +1099,15 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
 
 		generate_random_buffer((uint8_t *)&val, 2);
 
-		ip_list.ss = dclist[i].sa.u.ss;
-		ip_list.port = 0;
-
 		status = nbt_getdc(msg_ctx, 10, &dclist[i].sa.u.ss, domain_name,
 				   NULL, my_acct_name, ACB_WSTRUST, nt_version,
 				   mem_ctx, &nt_version, &dc_name, &r);
 		if (NT_STATUS_IS_OK(status)) {
 			store_cache = true;
-			namecache_store(dc_name, NBT_NAME_SERVER, 1, &ip_list);
+			namecache_store(dc_name,
+					NBT_NAME_SERVER,
+					1,
+					&dclist[i].sa);
 			goto make_reply;
 		}
 
@@ -1127,7 +1136,10 @@ static NTSTATUS process_dc_netbios(TALLOC_CTX *mem_ctx,
 
 			map_netlogon_samlogon_response(r);
 
-			namecache_store(tmp_dc_name, NBT_NAME_SERVER, 1, &ip_list);
+			namecache_store(tmp_dc_name,
+					NBT_NAME_SERVER,
+					1,
+					&dclist[i].sa);
 
 			goto make_reply;
 		}
diff --git a/source3/libsmb/namecache.c b/source3/libsmb/namecache.c
index fb4a4aac8c8..66147bab7f2 100644
--- a/source3/libsmb/namecache.c
+++ b/source3/libsmb/namecache.c
@@ -23,12 +23,13 @@
 
 #include "includes.h"
 #include "lib/gencache.h"
+#include "libsmb/namequery.h"
 
 #define IPSTR_LIST_SEP	","
 #define IPSTR_LIST_CHAR	','
 
 /**
- * Allocate and initialise an ipstr list using ip adresses
+ * Allocate and initialise an ipstr list using samba_sockaddr ip adresses
  * passed as arguments.
  *
  * @param ctx TALLOC_CTX to use
@@ -37,15 +38,15 @@
  * @return pointer to allocated ip string
  **/
 
-static char *ipstr_list_make(TALLOC_CTX *ctx,
-			const struct ip_service *ip_list,
-			int ip_count)
+static char *ipstr_list_make_sa(TALLOC_CTX *ctx,
+			const struct samba_sockaddr *sa_list,
+			size_t ip_count)
 {
 	char *ipstr_list = NULL;
-	int i;
+	size_t i;
 
 	/* arguments checking */
-	if (ip_list == NULL) {
+	if (sa_list == NULL) {
 		return NULL;
 	}
 
@@ -55,21 +56,21 @@ static char *ipstr_list_make(TALLOC_CTX *ctx,
 		char *new_str = NULL;
 
 		print_sockaddr(addr_buf,
-			       sizeof(addr_buf),
-			       &ip_list[i].ss);
+				sizeof(addr_buf),
+				&sa_list[i].u.ss);
 
-		if (ip_list[i].ss.ss_family == AF_INET) {
-			/* IPv4 */
+		if (sa_list[i].u.ss.ss_family == AF_INET) {
+			/* IPv4 - port no longer used, store 0 */
 			new_str = talloc_asprintf(ctx,
-						  "%s:%d",
-						  addr_buf,
-						  ip_list[i].port);
+						"%s:%d",
+						addr_buf,
+						0);
 		} else {
-			/* IPv6 */
+			/* IPv6 - port no longer used, store 0 */
 			new_str = talloc_asprintf(ctx,
-						  "[%s]:%d",
-						  addr_buf,
-						  ip_list[i].port);
+						"[%s]:%d",
+						addr_buf,
+						0);
 		}
 		if (new_str == NULL) {
 			TALLOC_FREE(ipstr_list);
@@ -89,10 +90,10 @@ static char *ipstr_list_make(TALLOC_CTX *ctx,
 			 * live with it.
 			 */
 			char *tmp = talloc_asprintf(ctx,
-						    "%s%s%s",
-						    ipstr_list,
-						    IPSTR_LIST_SEP,
-						    new_str);
+						"%s%s%s",
+						ipstr_list,
+						IPSTR_LIST_SEP,
+						new_str);
 			if (tmp == NULL) {
 				TALLOC_FREE(new_str);
 				TALLOC_FREE(ipstr_list);
@@ -114,35 +115,47 @@ static char *ipstr_list_make(TALLOC_CTX *ctx,
  *
  * @param ipstr ip string list to be parsed
  * @param ip_list pointer to array of ip addresses which is
- *        allocated by this function and must be freed by caller
+ *        talloced by this function and must be freed by caller
  * @return number of successfully parsed addresses
  **/
 
-static int ipstr_list_parse(const char *ipstr_list, struct ip_service **ip_list)
+static int ipstr_list_parse(TALLOC_CTX *ctx,
+			const char *ipstr_list,
+			struct samba_sockaddr **sa_list_out)
 {
-	TALLOC_CTX *frame;
+	TALLOC_CTX *frame = talloc_stackframe();
+	struct samba_sockaddr *sa_list = NULL;
 	char *token_str = NULL;
 	size_t i, count;
+	size_t array_size;
 
-	if (!ipstr_list || !ip_list)
-		return 0;
+	*sa_list_out = NULL;
 
-	count = count_chars(ipstr_list, IPSTR_LIST_CHAR) + 1;
-	if ( (*ip_list = SMB_MALLOC_ARRAY(struct ip_service, count)) == NULL ) {
-		DBG_ERR("malloc failed for %lu entries\n",
-					(unsigned long)count);
+	array_size = count_chars(ipstr_list, IPSTR_LIST_CHAR) + 1;
+	sa_list = talloc_zero_array(frame,
+				struct samba_sockaddr,
+				array_size);
+	if (sa_list == NULL) {


-- 
Samba Shared Repository



More information about the samba-cvs mailing list