The branch, master has been updated via d1278f0 pidl:Samba3/ServerNDR: normalize {RETURN_TYPE} by using mapTypeName() via 4602c86 Convert uint64 to uint64_t via 0dde210 Covert all uint32/16/8 to _t in source3/rpc_server. via fff774e s3: IPv6 enabled DNS connections for ADS client from 57568f1 Convert all uint32/16/8 to _t in a grab-bag of remaining files.
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit d1278f081bbb1e3e9904450916993712eff2d9df Author: Stefan Metzmacher <me...@samba.org> Date: Fri May 15 08:34:42 2015 +0200 pidl:Samba3/ServerNDR: normalize {RETURN_TYPE} by using mapTypeName() Signed-off-by: Stefan Metzmacher <me...@samba.org> Reviewed-by: Richard Sharpe <realrichardsha...@gmail.com> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri May 15 22:19:38 CEST 2015 on sn-devel-104 commit 4602c86d58d0c7c37922a56bd4a3bfd9beb5a971 Author: Richard Sharpe <rsha...@samba.org> Date: Fri May 15 07:38:04 2015 -0700 Convert uint64 to uint64_t We seemed to have very few uses of that. Signed-off-by: Richard Sharpe <rsha...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 0dde2106bb9a3be356e5feef8db172888a8cc8cf Author: Richard Sharpe <rsha...@samba.org> Date: Thu May 14 18:08:27 2015 -0700 Covert all uint32/16/8 to _t in source3/rpc_server. This can be committed regardless of the state of the PIDL changes. Signed-off-by: Richard Sharpe <rsha...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit fff774eda3ed04d319232b108a94282af24cc6b0 Author: David Holder <david.hol...@erion.co.uk> Date: Wed May 13 15:10:47 2015 +0100 s3: IPv6 enabled DNS connections for ADS client This patch makes DNS client connections protocol independent. For example DNS updates. This makes IPv6-only clients possible. Signed-off-by: David Holder <david.hol...@erion.co.uk> Reviewed-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Böhme <r...@sernet.de> ----------------------------------------------------------------------- Summary of changes: lib/addns/dns.h | 2 +- lib/addns/dnssock.c | 127 +++++++++++++++++--------- pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm | 2 +- source3/libnet/libnet_samsync_display.c | 2 +- source3/libnet/libnet_samsync_passdb.c | 6 +- source3/locking/locking.c | 2 +- source3/locking/proto.h | 2 +- source3/registry/reg_parse_prs.c | 2 +- source3/registry/reg_parse_prs.h | 2 +- source3/rpc_server/echo/srv_echo_nt.c | 10 +- source3/rpc_server/eventlog/srv_eventlog_nt.c | 10 +- source3/rpc_server/lsa/srv_lsa_nt.c | 38 ++++---- source3/rpc_server/samr/srv_samr_chgpasswd.c | 18 ++-- source3/rpc_server/samr/srv_samr_nt.c | 98 ++++++++++---------- source3/rpc_server/spoolss/srv_spoolss_nt.c | 14 +-- source3/rpc_server/srv_access_check.c | 2 +- source3/rpc_server/srv_access_check.h | 2 +- source3/rpc_server/srvsvc/srv_srvsvc_nt.c | 20 ++-- source3/rpc_server/svcctl/srv_svcctl_nt.c | 14 +-- source3/rpc_server/winreg/srv_winreg_nt.c | 2 +- source3/winbindd/winbindd_cache.c | 2 +- 21 files changed, 210 insertions(+), 167 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/addns/dns.h b/lib/addns/dns.h index bf2ade3..de1897b 100644 --- a/lib/addns/dns.h +++ b/lib/addns/dns.h @@ -222,7 +222,7 @@ struct dns_update_request { struct dns_connection { int32_t hType; int s; - struct sockaddr RecvAddr; + struct sockaddr_storage RecvAddr; }; struct dns_buffer { diff --git a/lib/addns/dnssock.c b/lib/addns/dnssock.c index 13649b5..b1d794d 100644 --- a/lib/addns/dnssock.c +++ b/lib/addns/dnssock.c @@ -27,6 +27,7 @@ #include <sys/time.h> #include <unistd.h> #include "system/select.h" +#include "../lib/util/debug.h" static int destroy_dns_connection(struct dns_connection *conn) { @@ -40,78 +41,118 @@ static DNS_ERROR dns_tcp_open( const char *nameserver, TALLOC_CTX *mem_ctx, struct dns_connection **result ) { - uint32_t ulAddress; - struct hostent *pHost; - struct sockaddr_in s_in; + struct addrinfo hints; + struct addrinfo *ai_result = NULL; + struct addrinfo *rp; struct dns_connection *conn; - int res; + int ret; + char service[16]; + + snprintf(service, sizeof(service), "%d", DNS_TCP_PORT); if (!(conn = talloc(mem_ctx, struct dns_connection))) { return ERROR_DNS_NO_MEMORY; } - if ( (ulAddress = inet_addr( nameserver )) == INADDR_NONE ) { - if ( (pHost = gethostbyname( nameserver )) == NULL ) { - TALLOC_FREE(conn); - return ERROR_DNS_INVALID_NAME_SERVER; - } - memcpy( &ulAddress, pHost->h_addr, pHost->h_length ); - } + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = 0; + hints.ai_protocol = IPPROTO_TCP; - conn->s = socket( PF_INET, SOCK_STREAM, 0 ); - if (conn->s == -1) { + ret = getaddrinfo(nameserver, service, &hints, &ai_result); + if (ret != 0) { + DEBUG(1,("dns_tcp_open: getaddrinfo: %s\n", gai_strerror(ret))); TALLOC_FREE(conn); - return ERROR_DNS_CONNECTION_FAILED; + return ERROR_DNS_INVALID_NAME_SERVER; } - talloc_set_destructor(conn, destroy_dns_connection); + for (rp = ai_result; rp != NULL; rp = rp->ai_next) { + conn->s = socket(rp->ai_family, + rp->ai_socktype, + rp->ai_protocol); + if (conn->s == -1) { + continue; + } + do { + ret = connect(conn->s, rp->ai_addr, rp->ai_addrlen); + } while ((ret == -1) && (errno == EINTR)); + if (ret != -1) { + /* Successful connect */ + break; + } + close(conn->s); + } - s_in.sin_family = AF_INET; - s_in.sin_addr.s_addr = ulAddress; - s_in.sin_port = htons( DNS_TCP_PORT ); + freeaddrinfo(ai_result); - do { - res = connect(conn->s, (struct sockaddr*)&s_in, sizeof( s_in )); - } while ((res == -1) && (errno == EINTR)); - if (res == -1) { + /* Failed to connect with any address */ + if (rp == NULL) { TALLOC_FREE(conn); return ERROR_DNS_CONNECTION_FAILED; } - conn->hType = DNS_TCP; + talloc_set_destructor(conn, destroy_dns_connection); + conn->hType = DNS_TCP; *result = conn; return ERROR_DNS_SUCCESS; } /******************************************************************** -********************************************************************/ + * ********************************************************************/ static DNS_ERROR dns_udp_open( const char *nameserver, TALLOC_CTX *mem_ctx, struct dns_connection **result ) { - unsigned long ulAddress; - struct hostent *pHost; - struct sockaddr_in RecvAddr; + struct addrinfo hints; + struct addrinfo *ai_result = NULL; + struct addrinfo *rp; + struct sockaddr_storage RecvAddr; struct dns_connection *conn; + int ret; + socklen_t RecvAddrLen; + char service[16]; + + snprintf(service, sizeof(service), "%d", DNS_UDP_PORT); if (!(conn = talloc(NULL, struct dns_connection))) { return ERROR_DNS_NO_MEMORY; } - if ( (ulAddress = inet_addr( nameserver )) == INADDR_NONE ) { - if ( (pHost = gethostbyname( nameserver )) == NULL ) { - TALLOC_FREE(conn); - return ERROR_DNS_INVALID_NAME_SERVER; + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_flags = 0; + hints.ai_protocol = IPPROTO_UDP; + + ret = getaddrinfo(nameserver, service, &hints, &ai_result); + if (ret != 0) { + DEBUG(1,("dns_ucp_open:getaddrinfo: %s\n", gai_strerror(ret))); + TALLOC_FREE(conn); + return ERROR_DNS_INVALID_NAME_SERVER; + } + + for (rp = ai_result; rp != NULL; rp = rp->ai_next) { + conn->s = socket(rp->ai_family, + rp->ai_socktype, + rp->ai_protocol); + if (conn->s == -1) { + continue; + } + ret = connect(conn->s, rp->ai_addr, rp->ai_addrlen); + if (ret != -1) { + /* Successful connect */ + break; } - memcpy( &ulAddress, pHost->h_addr, pHost->h_length ); + close(conn->s); } - /* Create a socket for sending data */ + freeaddrinfo(ai_result); - conn->s = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP ); - if (conn->s == -1) { + /* Failed to connect with any address */ + if (rp == NULL) { TALLOC_FREE(conn); return ERROR_DNS_CONNECTION_FAILED; } @@ -119,16 +160,18 @@ static DNS_ERROR dns_udp_open( const char *nameserver, talloc_set_destructor(conn, destroy_dns_connection); /* Set up the RecvAddr structure with the IP address of - the receiver (in this example case "123.456.789.1") - and the specified port number. */ + the receiver and the specified port number. */ - ZERO_STRUCT(RecvAddr); - RecvAddr.sin_family = AF_INET; - RecvAddr.sin_port = htons( DNS_UDP_PORT ); - RecvAddr.sin_addr.s_addr = ulAddress; + RecvAddrLen = sizeof(RecvAddr); + if (getpeername(conn->s, + (struct sockaddr *)&RecvAddr, + &RecvAddrLen) == -1) { + TALLOC_FREE(conn); + return ERROR_DNS_CONNECTION_FAILED; + } conn->hType = DNS_UDP; - memcpy( &conn->RecvAddr, &RecvAddr, sizeof( struct sockaddr_in ) ); + memcpy(&conn->RecvAddr, &RecvAddr, sizeof(struct sockaddr_storage)); *result = conn; return ERROR_DNS_SUCCESS; diff --git a/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm b/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm index e8d2bf9..bff23e2 100644 --- a/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm +++ b/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm @@ -124,7 +124,7 @@ sub CallWithStruct($$$$) if ($fn->{RETURN_TYPE}) { $ret = "r->out.result = $ret"; - $proto = "$fn->{RETURN_TYPE} $proto"; + $proto = mapTypeName($fn->{RETURN_TYPE})." $proto"; } else { $proto = "void $proto"; } diff --git a/source3/libnet/libnet_samsync_display.c b/source3/libnet/libnet_samsync_display.c index d503ffb..034a23f 100644 --- a/source3/libnet/libnet_samsync_display.c +++ b/source3/libnet/libnet_samsync_display.c @@ -98,7 +98,7 @@ static void display_domain_info(struct netr_DELTA_DOMAIN *r) nt_errstr(status)); } - u_logout = uint64s_nt_time_to_unix_abs((const uint64 *)&r->force_logoff_time); + u_logout = uint64s_nt_time_to_unix_abs((const uint64_t *)&r->force_logoff_time); d_printf("Domain name: %s\n", r->domain_name.string); diff --git a/source3/libnet/libnet_samsync_passdb.c b/source3/libnet/libnet_samsync_passdb.c index cb057a9..cf5bef1 100644 --- a/source3/libnet/libnet_samsync_passdb.c +++ b/source3/libnet/libnet_samsync_passdb.c @@ -689,9 +689,9 @@ static NTSTATUS fetch_domain_info(TALLOC_CTX *mem_ctx, nt_errstr(status)); } - u_max_age = uint64s_nt_time_to_unix_abs((uint64 *)&r->max_password_age); - u_min_age = uint64s_nt_time_to_unix_abs((uint64 *)&r->min_password_age); - u_logout = uint64s_nt_time_to_unix_abs((uint64 *)&r->force_logoff_time); + u_max_age = uint64s_nt_time_to_unix_abs((uint64_t *)&r->max_password_age); + u_min_age = uint64s_nt_time_to_unix_abs((uint64_t *)&r->min_password_age); + u_logout = uint64s_nt_time_to_unix_abs((uint64_t *)&r->force_logoff_time); domname = r->domain_name.string; if (!domname) { diff --git a/source3/locking/locking.c b/source3/locking/locking.c index 9dce85a..7b8bc84 100644 --- a/source3/locking/locking.c +++ b/source3/locking/locking.c @@ -345,7 +345,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx, ****************************************************************************/ NTSTATUS do_lock_cancel(files_struct *fsp, - uint64 smblctx, + uint64_t smblctx, uint64_t count, uint64_t offset, enum brl_flavour lock_flav) diff --git a/source3/locking/proto.h b/source3/locking/proto.h index 75faa94..652ec2a 100644 --- a/source3/locking/proto.h +++ b/source3/locking/proto.h @@ -132,7 +132,7 @@ NTSTATUS do_unlock(struct messaging_context *msg_ctx, uint64_t offset, enum brl_flavour lock_flav); NTSTATUS do_lock_cancel(files_struct *fsp, - uint64 smblctx, + uint64_t smblctx, uint64_t count, uint64_t offset, enum brl_flavour lock_flav); diff --git a/source3/registry/reg_parse_prs.c b/source3/registry/reg_parse_prs.c index 834ba18..feec7cb 100644 --- a/source3/registry/reg_parse_prs.c +++ b/source3/registry/reg_parse_prs.c @@ -390,7 +390,7 @@ bool prs_uint32(const char *name, prs_struct *ps, int depth, uint32_t *data32) /******************************************************************* Stream a uint64_struct ********************************************************************/ -bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64) +bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64_t *data64) { if (UNMARSHALLING(ps)) { uint32_t high, low; diff --git a/source3/registry/reg_parse_prs.h b/source3/registry/reg_parse_prs.h index 1bbbabd..ee65f51 100644 --- a/source3/registry/reg_parse_prs.h +++ b/source3/registry/reg_parse_prs.h @@ -74,7 +74,7 @@ char *prs_mem_get(prs_struct *ps, uint32_t extra_size); void prs_switch_type(prs_struct *ps, bool io); bool prs_uint16(const char *name, prs_struct *ps, int depth, uint16_t *data16); bool prs_uint32(const char *name, prs_struct *ps, int depth, uint32_t *data32); -bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64); +bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64_t *data64); bool prs_uint8s(bool charmode, const char *name, prs_struct *ps, int depth, uint8_t *data8s, int len); #endif diff --git a/source3/rpc_server/echo/srv_echo_nt.c b/source3/rpc_server/echo/srv_echo_nt.c index f1bb5d3..5fd1a2e 100644 --- a/source3/rpc_server/echo/srv_echo_nt.c +++ b/source3/rpc_server/echo/srv_echo_nt.c @@ -48,7 +48,7 @@ void _echo_EchoData(struct pipes_struct *p, struct echo_EchoData *r) return; } - r->out.out_data = talloc_array(p->mem_ctx, uint8, r->in.len); + r->out.out_data = talloc_array(p->mem_ctx, uint8_t, r->in.len); memcpy( r->out.out_data, r->in.in_data, r->in.len ); return; } @@ -67,7 +67,7 @@ void _echo_SinkData(struct pipes_struct *p, struct echo_SinkData *r) void _echo_SourceData(struct pipes_struct *p, struct echo_SourceData *r) { - uint32 i; + uint32_t i; DEBUG(10, ("_echo_SourceData\n")); @@ -76,7 +76,7 @@ void _echo_SourceData(struct pipes_struct *p, struct echo_SourceData *r) return; } - r->out.data = talloc_array(p->mem_ctx, uint8, r->in.len ); + r->out.data = talloc_array(p->mem_ctx, uint8_t, r->in.len ); for (i = 0; i < r->in.len; i++ ) { r->out.data[i] = i & 0xff; @@ -97,7 +97,7 @@ NTSTATUS _echo_TestCall2(struct pipes_struct *p, struct echo_TestCall2 *r) return NT_STATUS_OK; } -uint32 _echo_TestSleep(struct pipes_struct *p, struct echo_TestSleep *r) +uint32_t _echo_TestSleep(struct pipes_struct *p, struct echo_TestSleep *r) { smb_msleep(r->in.seconds * 1000); return 0; @@ -115,7 +115,7 @@ void _echo_TestSurrounding(struct pipes_struct *p, struct echo_TestSurrounding * return; } -uint16 _echo_TestDoublePointer(struct pipes_struct *p, struct echo_TestDoublePointer *r) +uint16_t _echo_TestDoublePointer(struct pipes_struct *p, struct echo_TestDoublePointer *r) { p->fault_state = DCERPC_FAULT_OP_RNG_ERROR; return 0; diff --git a/source3/rpc_server/eventlog/srv_eventlog_nt.c b/source3/rpc_server/eventlog/srv_eventlog_nt.c index a3e719a..ce27dd5 100644 --- a/source3/rpc_server/eventlog/srv_eventlog_nt.c +++ b/source3/rpc_server/eventlog/srv_eventlog_nt.c @@ -41,11 +41,11 @@ typedef struct { char *logname; ELOG_TDB *etdb; - uint32 current_record; - uint32 num_records; - uint32 oldest_entry; - uint32 flags; - uint32 access_granted; + uint32_t current_record; + uint32_t num_records; + uint32_t oldest_entry; + uint32_t flags; + uint32_t access_granted; } EVENTLOG_INFO; /******************************************************************** diff --git a/source3/rpc_server/lsa/srv_lsa_nt.c b/source3/rpc_server/lsa/srv_lsa_nt.c index ef18963..1e3f9f9 100644 --- a/source3/rpc_server/lsa/srv_lsa_nt.c +++ b/source3/rpc_server/lsa/srv_lsa_nt.c @@ -65,7 +65,7 @@ enum lsa_handle_type { struct lsa_info { struct dom_sid sid; const char *name; - uint32 access; + uint32_t access; enum lsa_handle_type type; struct security_descriptor *sd; }; @@ -134,7 +134,7 @@ static NTSTATUS lookup_lsa_rids(TALLOC_CTX *mem_ctx, int flags, uint32_t *pmapped_count) { - uint32 mapped_count, i; + uint32_t mapped_count, i; SMB_ASSERT(num_entries <= MAX_LOOKUP_SIDS); @@ -143,7 +143,7 @@ static NTSTATUS lookup_lsa_rids(TALLOC_CTX *mem_ctx, for (i = 0; i < num_entries; i++) { struct dom_sid sid; - uint32 rid; + uint32_t rid; int dom_idx; const char *full_name; const char *domain; @@ -215,9 +215,9 @@ static NTSTATUS lookup_lsa_sids(TALLOC_CTX *mem_ctx, uint32_t num_entries, struct lsa_String *name, int flags, - uint32 *pmapped_count) + uint32_t *pmapped_count) { - uint32 mapped_count, i; + uint32_t mapped_count, i; SMB_ASSERT(num_entries <= MAX_LOOKUP_SIDS); @@ -226,7 +226,7 @@ static NTSTATUS lookup_lsa_sids(TALLOC_CTX *mem_ctx, for (i = 0; i < num_entries; i++) { struct dom_sid sid; - uint32 rid; + uint32_t rid; int dom_idx; const char *full_name; const char *domain; @@ -386,8 +386,8 @@ NTSTATUS _lsa_OpenPolicy2(struct pipes_struct *p, { struct security_descriptor *psd = NULL; size_t sd_size; - uint32 des_access = r->in.access_mask; - uint32 acc_granted; + uint32_t des_access = r->in.access_mask; + uint32_t acc_granted; NTSTATUS status; if (p->transport != NCACN_NP && p->transport != NCALRPC) { @@ -634,7 +634,7 @@ NTSTATUS _lsa_QueryInfoPolicy(struct pipes_struct *p, case LSA_POLICY_INFO_AUDIT_EVENTS: { - uint32 policy_def = LSA_AUDIT_POLICY_ALL; + uint32_t policy_def = LSA_AUDIT_POLICY_ALL; /* check if the user has enough rights */ if (!(handle->access & LSA_POLICY_VIEW_AUDIT_INFORMATION)) { @@ -810,7 +810,7 @@ static NTSTATUS _lsa_lookup_sids_internal(struct pipes_struct *p, int i; const struct dom_sid **sids = NULL; struct lsa_RefDomainList *ref = NULL; - uint32 mapped_count = 0; + uint32_t mapped_count = 0; struct lsa_dom_info *dom_infos = NULL; struct lsa_name_info *name_infos = NULL; struct lsa_TranslatedName2 *names = NULL; @@ -912,7 +912,7 @@ NTSTATUS _lsa_LookupSids(struct pipes_struct *p, NTSTATUS status; struct lsa_info *handle; int num_sids = r->in.sids->num_sids; - uint32 mapped_count = 0; + uint32_t mapped_count = 0; struct lsa_RefDomainList *domains = NULL; struct lsa_TranslatedName *names_out = NULL; struct lsa_TranslatedName2 *names = NULL; @@ -994,7 +994,7 @@ static NTSTATUS _lsa_LookupSids_common(struct pipes_struct *p, NTSTATUS status; struct lsa_info *handle; int num_sids = r->in.sids->num_sids; - uint32 mapped_count = 0; + uint32_t mapped_count = 0; struct lsa_RefDomainList *domains = NULL; struct lsa_TranslatedName2 *names = NULL; bool check_policy = true; @@ -1143,10 +1143,10 @@ NTSTATUS _lsa_LookupNames(struct pipes_struct *p, NTSTATUS status = NT_STATUS_NONE_MAPPED; struct lsa_info *handle; struct lsa_String *names = r->in.names; - uint32 num_entries = r->in.num_names; + uint32_t num_entries = r->in.num_names; struct lsa_RefDomainList *domains = NULL; struct lsa_TranslatedSid *rids = NULL; - uint32 mapped_count = 0; + uint32_t mapped_count = 0; int flags = 0; if (p->transport != NCACN_NP && p->transport != NCALRPC) { @@ -1279,10 +1279,10 @@ static NTSTATUS _lsa_LookupNames_common(struct pipes_struct *p, NTSTATUS status; struct lsa_info *handle; struct lsa_String *names = r->in.names; - uint32 num_entries = r->in.num_names; + uint32_t num_entries = r->in.num_names; struct lsa_RefDomainList *domains = NULL; struct lsa_TranslatedSid3 *trans_sids = NULL; - uint32 mapped_count = 0; + uint32_t mapped_count = 0; int flags = 0; bool check_policy = true; @@ -2546,8 +2546,8 @@ NTSTATUS _lsa_EnumPrivs(struct pipes_struct *p, struct lsa_EnumPrivs *r) { struct lsa_info *handle; - uint32 i; -- Samba Shared Repository