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.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Noel Power <npo...@samba.org> Autobuild-Date(master): Mon Sep 7 14:46:58 UTC 2020 on sn-devel-184 commit 170051d61eb17955d93db88ab729dc53a60604b1 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 2989d736c4a95c73ccb6d828362425b30d580337 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 9da8d26fe069189ca920b23ae541da9848515749 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 3dad456d8cb4fa2b03396cce9c04c07d6c3c96c7 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 4c81f39012c5a1858161ba8f9a61393eb2ab3c9f Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 1593231e0ef0d36fad7779f2f22b40a284706b9b Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 0e59fee2917f0fbd9c2c8fc04d0161af486beb64 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 7835e2cb480d3749a3ebbd4ab69188743df5277b Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 39ecff712f0aa6f8c86c3dcad12b068d7b8ccdb7 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit c6cc05f5976913ab3c4f47396775769c7dc07902 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit f36a0be9a7628e212c7bbad1889cfc50a32ba472 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 57349b65cc4323ae757a48b7a878bf9861728cd1 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 68e12688f2b4986ad4b4e222ae4340d4e4e10a5b Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 863ab1af625291d809d7e5e721145e46a18d863d Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 31674946b777fbadaf892f4b2e988990053e0fd0 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 5e819231b3a7b518ef44c0477fcb01b152a7d842 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit e68e0402cce7a370512dbbd1da5e4b3a7a828eb2 Author: Noel Power <noel.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 6b0b726105e5a239c7c638d5e58f10c3f5f4678f Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 9e4b5349f23464846da7b57fd36a5597b41e51c8 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit cb01b5e433dacec1217281e69041b322e37a18a3 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit f39ff1367a191d71f54f6184e848537b7c309c10 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 4d4bf8eedbefad4fa27a33e4b51b943e3d4acd08 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 9ffb18856bf128de635af4d9dd1e1582295778c2 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit aa20df217c4601ce8243f4d51eeed12c4d6cfb1d Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit e065fc8e2840ec7af07228641b89fb772f96ca9d Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit f5bb322e66d9d9475dda8ac6aef39b7912b6dbad Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit a68d329b4079dadef0dd2ca27c3a5bb697a040db Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit e5fd57d6e578c9b46088ebe548e4d24ee61fd2ac Author: Noel Power <noel.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit a16d023c15aa00aa12a927f6a3c3b5876022c988 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit fed4b6341c96316251e5384fa96ad60ae7b28261 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 37eaee03e0e48ec5e7b5a4704cfa93e8ab95f78f Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 55b589e9b04a7db97c3d344c90da846f3b8509d1 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 12e346d9d8019a149c765ea92463919f91aca16a Author: Noel Power <noel.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 505272a893dc3bc3bf177b8a11cc2cd8be33bad0 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit e18eb94f427de874c0b094189d8a3f0316b6430a Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit c6fc75a73bd630f03842e9a39805d58c59422ce3 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit c0ccdd7038ac85cdbad0a39bedcbee0a08c39896 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 973ca8a5c01afef49a774cca49d4b0000b29f366 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 46f7ab8f37046fadd86573b396b8c485255ab928 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit b9bc1e59bd84b35dcb98de73be2e13bb3254415b Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 3b3f92a2fa7bdf528009576cc8c1bf0905d9008a Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 23fb64f35a6a888538ebbfcff78ad8e30451f123 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit a0984e5064216edafe4b83011dc1042ca64d5194 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit e8b7162415d0869eb302847cf4ce31e45438999f Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 1d6c3c2dea223f22c3c3166de1a2d100376ee02a Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit b4164093cfe8c2fd527e8c3e264025cc4e4790e3 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit fbc2031800c1dafce5080ec527547345286f0c93 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit f305a140d103caea589f969d7cf087f53cd7e846 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 6deb23c6187da770b03ebe313138506fb6cde0e7 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit b7182c4417675721a73fc543d88312cda60af988 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 11226af33e1570bc4a54a951981bba29c8a912a4 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 5307b0e319a08220c02f6eacfdac45d4af2bb19a Author: Noel Power <noel.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 9d62c3e98197d0c73c26a10545c39026b38f0fb7 Author: Noel Power <noel.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 8e1b6602f51f9599a46ad62a9796ed7a2bfcdfc6 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit e8a491691dad5c30228e90f5702115befbe3da00 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 02016acb2d8b7b5432406942e49d229fe1d024b5 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit 6bee431be3ce005b5ae547ffb50e4bdfb5aca902 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit a4073ae55c37e85891255073b4c162eb23c382f6 Author: Noel Power <npo...@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 <npo...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 6c28d7151160e64a3f449e4dc34ade4fcb3e1298 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit b95eea6b292dd0c11feb7921af33329711918655 Author: Noel Power <noel.po...@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.po...@suse.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 13acac25cb48ec39a0b35abb272de727f19bb236 Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit c4c00d626cd9ebe118e6f9c16ef1b0575d29f39b Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@samba.org> commit f11dce99cc3a3e0b13fcb0d41d2db5cce07240db Author: Jeremy Allison <j...@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 <j...@samba.org> Reviewed-by: Noel Power <npo...@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