summaryrefslogtreecommitdiff
path: root/source3/winbindd
AgeCommit message (Collapse)AuthorFilesLines
2011-04-29s3: Avoid a potential 100% CPU loop in winbinddVolker Lendecke1-0/+27
In the clustering case if ctdb is unhappy, winbindd_reinit_after_fork fails. This can lead to an endless loop depending on the scheduling of the parent vs child. Parent forks, child is immediately scheduled and exits. Parent gets SIGCHLD, parent is then scheduled before it sends the request out to the child. Parent tries to fork again immediately. The code before this patch did not really take into account that reinit_after_fork can fail. The code now sends the result of winbindd_reinit_after_fork to the parent and the parent only considers the child alive when it got NT_STATUS_OK. This was seen in 3.4 winbind. winbind has changed significantly since then, so it might be possible that this does not happen anymore in exactly this way. But passing up the status of reinit_after_fork and only consider the child alive when that's ok is the correct thing to do anyway. Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Fri Apr 29 17:58:19 CEST 2011 on sn-devel-104
2011-04-29s3: Make winbindd_reinit_after_fork return NTSTATUSVolker Lendecke4-12/+23
2011-04-29s3: In winbind, close parent/child socketsVolker Lendecke4-5/+15
This should further reduce fd load in winbind children
2011-04-29s3-tevent: only include ../lib/util/tevent wrappers where needed.Günther Deschner2-0/+3
Guenther Autobuild-User: Günther Deschner <gd@samba.org> Autobuild-Date: Fri Apr 29 14:00:30 CEST 2011 on sn-devel-104
2011-04-28s3: Close the winbind client fds after forkingVolker Lendecke1-0/+10
In an overload situation, the winbind helper child process inherits all those hundreds of fd's which it will never talk to. Close them. We (Christian Ambach and me) just saw a crash in libkrb5. Christian's analysis showed that libkrb5 also does select, probably exceeding FD_SETSIZE and crashing due to that reason. The parent winbind in theory does not do Kerberos at all, so this should fix that problem. The crash is interesting because the child process did not really crash. Somewhere in glibc backtrace() is called, probably due to an assert() or some explicit consistency check. This then somehow generates a signal probably due to corrupted memory structures. That signal triggers Samba to again call backtrace(). This blocks hard on a ptrace_once(). Sorry for the long backtrace here, but this *is* interesting. The child process blocking and not really crashing makes the situation worse: The parent process does not get told the child has crashed and more client sockets pile up. This patch is intended to put some relief on this problem by closing the majority of sockets the parent holds. (gdb) bt \#0 0x00002ad686a2b07b in pthread_once () from /lib64/libpthread.so.0 \#1 0x00002ad6867adf87 in backtrace () from /lib64/libc.so.6 \#2 0x00002ad683eab27c in log_stack_trace () at lib/util.c:1580 \#3 0x00002ad683eab34b in smb_panic (why=0x2ad6841c6ec3 "internal error") at lib/util.c:1481 \#4 0x00002ad683e9af3e in fault_report (sig=1) at lib/fault.c:52 \#5 sig_fault (sig=1) at lib/fault.c:75 #6 <signal handler called> \#7 0x00002ad68673b005 in _int_malloc () from /lib64/libc.so.6 \#8 0x00002ad68673c95d in calloc () from /lib64/libc.so.6 \#9 0x00002ad684503e25 in _dl_new_object () from /lib64/ld-linux-x86-64.so.2 \#10 0x00002ad6844ffadc in _dl_map_object_from_fd () from /lib64/ld-linux-x86-64.so.2 \#11 0x00002ad684501d43 in _dl_map_object () from /lib64/ld-linux-x86-64.so.2 \#12 0x00002ad68450ac8d in dl_open_worker () from /lib64/ld-linux-x86-64.so.2 \#13 0x00002ad684506ed6 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 \#14 0x00002ad68450a68c in _dl_open () from /lib64/ld-linux-x86-64.so.2 \#15 0x00002ad6867d0ba0 in do_dlopen () from /lib64/libc.so.6 \#16 0x00002ad684506ed6 in _dl_catch_error () from /lib64/ld-linux-x86-64.so.2 \#17 0x00002ad6867d0d07 in __libc_dlopen_mode () from /lib64/libc.so.6 \#18 0x00002ad6867adeea in init () from /lib64/libc.so.6 \#19 0x00002ad686a2b083 in pthread_once () from /lib64/libpthread.so.0 \#20 0x00002ad6867adf87 in backtrace () from /lib64/libc.so.6 \#21 0x00002ad68673285f in __libc_message () from /lib64/libc.so.6 \#22 0x00002ad68673a30f in _int_free () from /lib64/libc.so.6 \#23 0x00002ad68673a76b in free () from /lib64/libc.so.6 \#24 0x00002ad6853fe346 in krb5int_sendto () from /usr/lib64/libkrb5.so.3 \#25 0x00002ad6853fe511 in krb5_sendto_kdc () from /usr/lib64/libkrb5.so.3 \#26 0x00002ad6853df7c4 in ?? () from /usr/lib64/libkrb5.so.3 \#27 0x00002ad6853e0919 in krb5_get_init_creds () from /usr/lib64/libkrb5.so.3 \#28 0x00002ad6853e2a94 in krb5_get_init_creds_password () from /usr/lib64/libkrb5.so.3 \#29 0x00002ad684169ff1 in kerberos_kinit_password_ext (principal=0x2ad684702180 "<sanitized>", password=0x2ad6844c5bb0 "<sanitized>", time_offset=0, expire_time=0x2ad6846bf380, renew_till_time=0x0, cache_name=0x2ad6843cb3e0 "MEMORY:winbind_ccache", request_pac=false, add_netbios_addr=false, renewable_time=<value optimized out>, ntstatus=0x0) at libads/kerberos.c:223 \#30 0x00002ad68416a223 in ads_kinit_password (ads=0x2ad6846bf330) at libads/kerberos.c:327 \#31 0x00002ad68415f725 in ads_sasl_spnego_bind (ads=0x2ad6846bf330) at libads/sasl.c:812 \#32 0x00002ad68415dbc1 in ads_sasl_bind (ads=0x2ad6846bf330) at libads/sasl.c:1114 \#33 0x00002ad68415c09b in ads_connect (ads=0x2ad6846bf330) at libads/ldap.c:711 \#34 0x00002ad683e1b8f7 in ads_cached_connection (domain=0x2ad6846b07c0) at winbindd/winbindd_ads.c:124 \#35 0x00002ad683e1bc85 in sequence_number (domain=0x2ad6846b07c0, seq=0x2ad6846b0cd8) at winbindd/winbindd_ads.c:1233 \#36 0x00002ad683dffdd7 in refresh_sequence_number (domain=0x2ad6846b07c0, force=128) at winbindd/winbindd_cache.c:510 \#37 0x00002ad683e00520 in wcache_fetch (cache=<value optimized out>, domain=0x2ad6846b07c0, format=0x2ad68419901e "U/%s") at winbindd/winbindd_cache.c:638 \#38 0x00002ad683e04ac8 in query_user (domain=0x2ad6846b07c0, mem_ctx=0x2ad6846bc920, user_sid=0x7fff1d0cb8c0, info=0x7fff1d0cb810) at winbindd/winbindd_cache.c:1910 \#39 0x00002ad683df2d38 in winbindd_dual_userinfo (domain=0x2ad6846b07c0, state=0x7fff1d0cc9c0) at winbindd/winbindd_user.c:173 \#40 0x00002ad683e232e0 in fork_domain_child (child=0x2ad6846c2440) at winbindd/winbindd_dual.c:485 \#41 schedule_async_request (child=0x2ad6846c2440) at winbindd/winbindd_dual.c:319 \#42 0x00002ad683e229f2 in async_request_fail (state=0x2ad6846c1d00) at winbindd/winbindd_dual.c:214 \#43 0x00002ad683ebabec in run_events (ev=0x2ad6846aebf0, selrtn=0, read_fds=0x7fff1d0ce910, write_fds=<value optimized out>) at lib/events.c:123 \#44 0x00002ad683df08cb in process_loop (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at winbindd/winbindd.c:1113 \#45 main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at winbindd/winbindd.c:1437 Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Thu Apr 28 12:06:12 CEST 2011 on sn-devel-104
2011-04-28s3-libads: Use ldap_init_fd() to connect to AD server in socket_wrapperAndrew Bartlett1-3/+3
This means that we control the connection setup, don't rely on signals for timeouts and the connection uses socket_wrapper where that is required in our test environment. According to bug reports, this method is also used by curl and other tools, so we are not the first to (ab)use the OpenLDAP libs in this way. It is ONLY enabled for socket_wrapper at this time, as this is the best way to get 'make test' working for S3 winbind tests in an S4 domain. Andrew Bartlett
2011-04-28s3-libads Pass a struct sockaddr_storage to cldap routinesAndrew Bartlett1-1/+11
This avoids these routines doing a DNS lookup that has already been done, and ensures that the emulated DNS lookup isn't thrown away. Andrew Bartlett
2011-04-27Remove fstrings from client struct. Properly talloc strings (ensuring we ↵Jeremy Allison1-1/+6
never end up with a NULL pointer).
2011-04-27s3-winbind Use get_dyn_WINBINDD_SOCKET_DIR() to get the winbind pipe dirAndrew Bartlett1-1/+1
This ensures we follow the dynconfig convention for the socket directory, and makes it easier to ensure that the client and server both refer to the same socket. Andrew Bartlett
2011-04-25s3: Add a 10-second timeout for the 445 or netbios connection to a DCVolker Lendecke1-2/+2
2011-04-24s3:rpc_client: map fault codes to NTSTATUS with dcerpc_fault_to_nt_status()Stefan Metzmacher3-10/+10
Most fault codes have a NTSTATUS representation, so use that. This brings the fault handling in common with the source4/librpc/rpc code, which make it possible to share more highlevel code, between source3 and source4 as the error checking can be the same now. metze Autobuild-User: Stefan Metzmacher <metze@samba.org> Autobuild-Date: Sun Apr 24 10:44:53 CEST 2011 on sn-devel-104
2011-04-24s3:winbindd: let winbindd_lookup_names() use dcerpc_binding_handle functionsStefan Metzmacher1-11/+20
metze
2011-04-24s3:winbindd: let winbindd_lookup_sids() dcerpc_binding_handle functionsStefan Metzmacher1-9/+19
metze
2011-04-13s3: Add some debug to winbindd_sids_to_xidsVolker Lendecke1-0/+6
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Export WINBINDD_SIDS_TO_XIDS via the winbind pipeVolker Lendecke3-0/+310
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Add wbint_Sids2UnixIDs idl & implementationVolker Lendecke1-0/+92
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Make idmap_find_domain publicVolker Lendecke2-1/+2
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Add is_domain_onlineVolker Lendecke2-0/+6
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Add winbindd_lookupsidsVolker Lendecke3-0/+154
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Add wb_lookupsidsVolker Lendecke2-0/+609
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Add wbint_LookupSidsVolker Lendecke3-0/+121
This will be called from wb_lookupsids to query remote DCs via lsa Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Make parse_sidlist publicVolker Lendecke3-34/+33
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3: Simplify parse_sidlistVolker Lendecke1-17/+9
Signed-off-by: Jeremy Allison <jra@samba.org>
2011-04-13s3-rpc_client: add and use rpc_client/rpc_client.h.Günther Deschner3-0/+3
Guenther
2011-04-12s3: add some forward declarations.Günther Deschner1-1/+1
Guenther
2011-04-06Fix bug 6966 - "allow trusted domains = no" not respected in winbind.Dmitry Butskoy1-6/+6
Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Wed Apr 6 23:37:27 CEST 2011 on sn-devel-104
2011-04-04s3:idmap_tdb2: fix build of tdb2Michael Adam1-0/+1
The include of system/filesys.h was removed from includes.h. ...
2011-04-01s3: Fix Coverity ID 1137: CONSTANT_EXPRESSION_RESULTVolker Lendecke1-2/+2
Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Fri Apr 1 09:35:19 CEST 2011 on sn-devel-104
2011-03-31s3-winbindd: Use the correct enums for samr_QueryDomainInfo.Andreas Schneider1-2/+2
2011-03-31s3-idmap: fix the build of idmap_hash on FreeBSD.Günther Deschner1-0/+1
Guenther
2011-03-30s3-passdb: move LOOKUP_NAME_ flags to passdb where they belong to.Günther Deschner2-0/+2
Guenther
2011-03-30s3: Fix Coverity ID 2237: REVERSE_INULLVolker Lendecke1-3/+1
2011-03-30s3-includes: only include ntdomain.h where needed.Günther Deschner5-0/+5
Guenther
2011-03-30s3-messages: make ndr_messaging.h part of messages.h.Günther Deschner3-3/+0
Guenther
2011-03-30s3-messages: only include messages.h where needed.Günther Deschner3-0/+3
Guenther
2011-03-30s3-auth: use auth.h where needed.Günther Deschner3-0/+3
Guenther
2011-03-30s3-libsmb: put namequery headers to nmblib.hGünther Deschner1-0/+1
We might find a better name for it and merge other namequery related things as well here... Guenther
2011-03-30s3-passdb: use passdb headers where needed.Günther Deschner10-0/+10
Guenther
2011-03-30s3-winbindd: copy acct_info to wb_acct_info so we dont need passdb for it.Günther Deschner9-29/+35
Guenther
2011-03-30s3-passdb: add passdb.h where needed.Günther Deschner1-0/+1
Guenther
2011-03-30s3-includes: only include system/filesys.h when needed.Günther Deschner3-0/+3
Guenther
2011-03-30s3-includes: only include system/passwd.h when needed.Günther Deschner1-0/+1
Guenther
2011-03-30s3-winbind: remove global inclusion of libwbclient.Günther Deschner1-0/+1
Guenther
2011-03-29Remove two unused labels.Jeremy Allison1-2/+0
Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Tue Mar 29 02:23:02 CEST 2011 on sn-devel-104
2011-03-28s3: Fix Coverity ID 2143: DEADCODEVolker Lendecke1-4/+0
Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Mon Mar 28 12:06:19 CEST 2011 on sn-devel-104
2011-03-28s3: Fix Coverity ID 2143: DEADCODEVolker Lendecke1-4/+0
2011-03-28s3: Fix Coverity ID 2173: FORWARD_NULLVolker Lendecke1-1/+1
2011-03-27s3: Fix Coverity ID 2296: UNUSED_VALUEVolker Lendecke1-3/+0
Autobuild-User: Volker Lendecke <vlendec@samba.org> Autobuild-Date: Sun Mar 27 12:12:35 CEST 2011 on sn-devel-104
2011-03-24s3-prototypes: remove protos of some dead functions.Günther Deschner2-3/+0
Guenther Autobuild-User: Günther Deschner <gd@samba.org> Autobuild-Date: Thu Mar 24 00:52:01 CET 2011 on sn-devel-104
2011-03-23s3: Fix Coverity ID 2203, NULL_RETURNSVolker Lendecke1-0/+4