The branch, master has been updated via ac7974a Fixes an obvious copy-paste error in source3/utils/net_dns.c via d2e1437 lib: dns: Clean up allocated structure on error exit. via 773a16b pdb_ldap: Don't use autofree if "mods" still changes via 0b1f4db nss_wins: Fix the hostent setup via d3569ca nss_wins: ip_pton expects the raw IP address from 2ef0c9a dbcheck: Avoid pathological behaviour in operational module
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit ac7974a64e9bee8caf9e418f46e6570eb857c1bd Author: Richard Sharpe <rsha...@nutanix.com> Date: Wed Apr 20 20:56:05 2016 -0700 Fixes an obvious copy-paste error in source3/utils/net_dns.c Signed-off-by: Richard Sharpe <rsha...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Volker Lendecke <v...@samba.org> Autobuild-Date(master): Fri Apr 22 10:45:30 CEST 2016 on sn-devel-144 commit d2e143708ff336894b65f413adc71a5990dc9995 Author: Jeremy Allison <j...@samba.org> Date: Thu Apr 21 17:35:37 2016 -0700 lib: dns: Clean up allocated structure on error exit. Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Richard Sharpe <rsha...@samba.org> commit 773a16ba86482d0f1fcc9f3f147e512adba2f2e3 Author: Volker Lendecke <v...@samba.org> Date: Fri Mar 4 10:51:33 2016 +0100 pdb_ldap: Don't use autofree if "mods" still changes This will prevent some use-after-free's, potentially it might for example fix bugzilla 11851. Not directly related, but it's a crash related to ldap-backed user creation. Signed-off-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0b1f4db325bb0ed9171619c874908ee25327bba9 Author: Tom Mortensen <t...@lime-technology.com> Date: Sat Apr 16 10:57:12 2016 +0200 nss_wins: Fix the hostent setup This can never have been tested.... Signed-off-by: Tom Mortensen <t...@lime-technology.com> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d3569ca2711d21ac87ff539662333ad315a2a618 Author: Tom Mortensen <t...@lime-technology.com> Date: Sat Apr 16 10:57:12 2016 +0200 nss_wins: ip_pton expects the raw IP address Signed-off-by: Tom Mortensen <t...@lime-technology.com> Reviewed-by: Volker Lendecke <v...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/addns/dnsgss.c | 10 ++++++---- nsswitch/wins.c | 13 +++++++++---- source3/passdb/pdb_ldap.c | 8 +++++++- source3/utils/net_dns.c | 1 - 4 files changed, 22 insertions(+), 10 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/addns/dnsgss.c b/lib/addns/dnsgss.c index f7ed1d1..fd1af7e 100644 --- a/lib/addns/dnsgss.c +++ b/lib/addns/dnsgss.c @@ -89,6 +89,8 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx, struct gss_buffer_desc_struct input_desc, *input_ptr, output_desc; OM_uint32 major, minor; OM_uint32 ret_flags; + struct dns_request *req = NULL; + struct dns_buffer *buf = NULL; DNS_ERROR err; gss_OID_desc krb5_oid_desc = @@ -112,9 +114,7 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx, if (output_desc.length != 0) { - struct dns_request *req; struct dns_rrec *rec; - struct dns_buffer *buf; time_t t = time(NULL); @@ -143,12 +143,13 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx, if (!ERR_DNS_IS_OK(err)) goto error; - err = dns_marshall_request(req, req, &buf); + err = dns_marshall_request(mem_ctx, req, &buf); if (!ERR_DNS_IS_OK(err)) goto error; err = dns_send(conn, buf); if (!ERR_DNS_IS_OK(err)) goto error; + TALLOC_FREE(buf); TALLOC_FREE(req); } @@ -162,7 +163,6 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx, if (major == GSS_S_CONTINUE_NEEDED) { struct dns_request *resp; - struct dns_buffer *buf; struct dns_tkey_record *tkey; struct dns_rrec *tkey_answer = NULL; uint16_t i; @@ -210,6 +210,8 @@ static DNS_ERROR dns_negotiate_gss_ctx_int( TALLOC_CTX *mem_ctx, error: + TALLOC_FREE(buf); + TALLOC_FREE(req); return err; } diff --git a/nsswitch/wins.c b/nsswitch/wins.c index 3243ffb..fc65c03 100644 --- a/nsswitch/wins.c +++ b/nsswitch/wins.c @@ -47,7 +47,7 @@ NSS_STATUS _nss_wins_gethostbyname2_r(const char *name, int af, struct hostent * static char *lookup_byname_backend(const char *name) { const char *p; - char *ip; + char *ip, *ipp; size_t nbt_len; wbcErr result; @@ -65,6 +65,11 @@ static char *lookup_byname_backend(const char *name) return NULL; } + ipp = strchr(ip, '\t'); + if (ipp != NULL) { + *ipp = '\0'; + } + return ip; } @@ -275,7 +280,7 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he, } if ((he->h_addr_list = (char **)get_static( - &buffer, &buflen, i * sizeof(char *))) == NULL) { + &buffer, &buflen, 2 * sizeof(char *))) == NULL) { nss_status = NSS_STATUS_TRYAGAIN; goto out; } @@ -286,9 +291,9 @@ _nss_wins_gethostbyname_r(const char *hostname, struct hostent *he, goto out; } - memcpy(he->h_addr_list[i], &in, INADDRSZ); + memcpy(he->h_addr_list[0], &in, INADDRSZ); - he->h_addr_list[0] = NULL; + he->h_addr_list[1] = NULL; /* Set h_addr_type and h_length */ diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index 50ab3a7..4383785 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -5291,10 +5291,10 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, } init_okay = init_ldap_from_sam(ldap_state, entry, &mods, user, pdb_element_is_set_or_changed); - smbldap_talloc_autofree_ldapmod(tmp_ctx, mods); if (!init_okay) { DEBUG(1,("ldapsam_create_user: Unable to fill user structs\n")); + ldap_mods_free(mods, true); return NT_STATUS_UNSUCCESSFUL; } @@ -5312,12 +5312,14 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, if (!sid_compose(&group_sid, get_global_sam_sid(), DOMAIN_RID_USERS) || !sid_to_gid(&group_sid, &gid)) { DEBUG (0, ("ldapsam_create_user: Unable to get the Domain Users gid: bailing out!\n")); + ldap_mods_free(mods, true); return NT_STATUS_INVALID_PRIMARY_GROUP; } /* lets allocate a new userid for this user */ if (!winbind_allocate_uid(&uid)) { DEBUG (0, ("ldapsam_create_user: Unable to allocate a new user id: bailing out!\n")); + ldap_mods_free(mods, true); return NT_STATUS_UNSUCCESSFUL; } @@ -5354,6 +5356,7 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, escape_name = escape_rdn_val_string_alloc(name); if (!escape_name) { DEBUG (0, ("ldapsam_create_user: Out of memory!\n")); + ldap_mods_free(mods, true); return NT_STATUS_NO_MEMORY; } @@ -5367,6 +5370,7 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, if (!homedir || !shell || !uidstr || !gidstr || !dn) { DEBUG (0, ("ldapsam_create_user: Out of memory!\n")); + ldap_mods_free(mods, true); return NT_STATUS_NO_MEMORY; } @@ -5385,6 +5389,8 @@ static NTSTATUS ldapsam_create_user(struct pdb_methods *my_methods, rc = smbldap_modify(ldap_state->smbldap_state, dn, mods); } + ldap_mods_free(mods, true); + if (rc != LDAP_SUCCESS) { DEBUG(0,("ldapsam_create_user: failed to create a new user [%s] (dn = %s)\n", name ,dn)); return NT_STATUS_UNSUCCESSFUL; diff --git a/source3/utils/net_dns.c b/source3/utils/net_dns.c index 7a04459..3b9730a 100644 --- a/source3/utils/net_dns.c +++ b/source3/utils/net_dns.c @@ -72,7 +72,6 @@ DNS_ERROR DoDNSUpdate(char *pszServerName, if (!ERR_DNS_IS_OK(err)) goto error; err = dns_update_transaction(mem_ctx, conn, req, &resp); - if (!ERR_DNS_IS_OK(err)) goto error; if (!ERR_DNS_IS_OK(err)) { DEBUG(3,("DoDNSUpdate: failed to probe DNS\n")); -- Samba Shared Repository