Volker Lendecke
2016-Mar-06 14:12 UTC
[Samba] Segmentation Fault when trying to set root samba password, IPA as a backend
On Fri, Mar 04, 2016 at 04:16:44PM +0000, Rowland penny wrote:> On 04/03/16 09:58, Volker Lendecke wrote: > >On Fri, Mar 04, 2016 at 10:53:17AM +0100, Volker Lendecke wrote: > >>On Wed, Mar 02, 2016 at 09:23:34AM +0000, Rowland penny wrote: > >>>OK, here is the output: > >>Can you try the attached (UNTESTED!) patch? > >> > >>Thanks, > >Gna, should have at least compiled it.... > > > >New patch :-) > > > >Volker > > > > Sorry Volker, it didn't work :-( > > It still segfaults and valgrind now shows more errors, see attached filesHmm. Looked pretty closely, but I don't see how this can happen, and I am out of the openldap config business long enough that I don't get this set up quickly. Can you run that under gdb? Set a breakpoint for smbldap_talloc_autofree_ldapmod with break smbldap_talloc_autofree_ldapmod run -a ldap05 and when it hits the breakpoint, can you send me the output of "bt full"? Thanks, Volker -- SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen phone: +49-551-370000-0, fax: +49-551-370000-9 AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen http://www.sernet.de, mailto:kontakt at sernet.de
Rowland penny
2016-Mar-06 14:47 UTC
[Samba] Segmentation Fault when trying to set root samba password, IPA as a backend
On 06/03/16 14:12, Volker Lendecke wrote:> On Fri, Mar 04, 2016 at 04:16:44PM +0000, Rowland penny wrote: >> On 04/03/16 09:58, Volker Lendecke wrote: >>> On Fri, Mar 04, 2016 at 10:53:17AM +0100, Volker Lendecke wrote: >>>> On Wed, Mar 02, 2016 at 09:23:34AM +0000, Rowland penny wrote: >>>>> OK, here is the output: >>>> Can you try the attached (UNTESTED!) patch? >>>> >>>> Thanks, >>> Gna, should have at least compiled it.... >>> >>> New patch :-) >>> >>> Volker >>> >> Sorry Volker, it didn't work :-( >> >> It still segfaults and valgrind now shows more errors, see attached files > Hmm. Looked pretty closely, but I don't see how this can happen, and > I am out of the openldap config business long enough that I don't get > this set up quickly.> > Can you run that under gdb? Set a breakpoint for > smbldap_talloc_autofree_ldapmod with > > break smbldap_talloc_autofree_ldapmod > run -a ldap05 > > and when it hits the breakpoint, can you send me the output > of "bt full"? > > Thanks, > > Volker >Hi Volker, I started the VM and tried what you said, it seemed to work ok, but the user wasn't added to ldap, so I tried adding another user 'smbpasswd -a ldap07' and this worked without segfaulting. I then tried to add another user and this time it did segfault, so I ran gdb again and got this: root at testpdc:~# gdb smbpasswd GNU gdb (Debian 7.7.1+dfsg-5) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i586-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>. Find the GDB manual and other documentation resources online at: <http://www.gnu.org/software/gdb/documentation/>. For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from smbpasswd...done. (gdb) break smbldap_talloc_autofree_ldapmod Function "smbldap_talloc_autofree_ldapmod" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (smbldap_talloc_autofree_ldapmod) pending. (gdb) run -a ldap09 Starting program: /usr/local/samba/bin/smbpasswd -a ldap09 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/i386-linux-gnu/i686/cmov/libthread_db.so.1". New SMB password: Retype new SMB password: Breakpoint 1, smbldap_talloc_autofree_ldapmod (mem_ctx=0x80032f78, mod=0x80011a98) at ../source3/lib/smbldap.c:274 274 if (mod == NULL) { (gdb) bt full #0 smbldap_talloc_autofree_ldapmod (mem_ctx=0x80032f78, mod=0x80011a98) at ../source3/lib/smbldap.c:274 handle = 0xbffff988 __FUNCTION__ = "smbldap_talloc_autofree_ldapmod" #1 0xb7d45b5b in ldapsam_get_new_rid (priv=0x80027aa8, rid=0xbffffb58) at ../source3/passdb/pdb_ldap.c:4854 smbldap_state = 0x80027fc0 result = 0x80036740 entry = 0x80036740 mods = 0x80011a98 status = {v = 0} value = 0x0 rc = -2147280760 nextRid = 1012 dn = 0xb70dbd06 "LDAPMessage *" mem_ctx = 0x80032f78 __FUNCTION__ = "ldapsam_get_new_rid" #2 0xb7d45c33 in ldapsam_new_rid_internal (methods=0x80027e28, rid=0xbffffb58) at ../source3/passdb/pdb_ldap.c:4882 result = {v = 0} i = 0 #3 0xb7d46bd3 in ldapsam_create_user (my_methods=0x80027e28, tmp_ctx=0x8001e888, name=0x800081c0 <user_name> "ldap09", acb_info=16, ---Type <return> to continue, or q <return> to quit--- rid=0xbffffb58) at ../source3/passdb/pdb_ldap.c:5248 ldap_state = 0x80027aa8 entry = 0x0 result = 0x8001d468 num_result = 0 is_machine = false add_posix = true init_okay = false mods = 0x0 user = 0x80036600 filter = 0x80028468 "(&(uid=ldap09)(objectClass=posixAccount))" username = 0x0 homedir = 0xb7dadf10 <incomplete sequence \370\215> gidstr = 0x800338f0 "\200\064f\267\200\064f\267" uidstr = 0xb7185e30 <incomplete sequence \355> shell = 0x1 <error: Cannot access memory at address 0x1> dn = 0x0 group_sid = {sid_rev_num = 101 'e', num_auths = 0 '\000', id_auth = "\000\000!\330\027\267", sub_auths = {0, 0, 3084355880, 3071827504, 0, 0, 101, 3071793185, 0, 0, 2147706368, 2147706320, 3071787687, 3071793110, 3071752196}} user_sid = {sid_rev_num = 159 '\237', num_auths = -71 '\271', id_auth = "\022\267h\324\001\200", sub_auths = {0, 2147706368, ---Type <return> to continue, or q <return> to quit--- 3084553151, 2147647744, 0, 3071457625, 3084265071, 3221224576, 0, 3221224168, 3084108032, 2147603560, 2147603560, 3221224136, 2147706368}} gid = 4294967295 uid = 4294967295 ret = {v = 3084574480} rc = 0 __FUNCTION__ = "ldapsam_create_user" #4 0xb7d6346f in pdb_create_user (mem_ctx=0x8001e888, name=0x800081c0 <user_name> "ldap09", flags=16, rid=0xbffffb58) at ../source3/passdb/pdb_interface.c:542 pdb = 0x80027e28 #5 0xb7d54402 in local_password_change ( user_name=0x800081c0 <user_name> "ldap09", local_flags=577, new_passwd=0x800118b8 "p4ssword", pp_err_str=0xbffffbb8, pp_msg_str=0xbffffbbc) at ../source3/passdb/passdb.c:745 tosctx = 0x8001e888 sam_pass = 0x80028100 acb = 16 rid = 0 result = {v = 0} user_exists = false ret = -1 ---Type <return> to continue, or q <return> to quit--- #6 0x800034ac in password_change (remote_mach=0x0, username=0x800081c0 <user_name> "ldap09", old_passwd=0x0, new_pw=0x800118b8 "p4ssword", local_flags=577) at ../source3/utils/smbpasswd.c:264 ret = {v = 0} err_str = 0x0 msg_str = 0x0 #7 0x80003c88 in process_root (local_flags=577) at ../source3/utils/smbpasswd.c:466 pwd = 0x1 result = 0 old_passwd = 0x0 __FUNCTION__ = "process_root" #8 0x800041ad in main (argc=3, argv=0xbffffd14) at ../source3/utils/smbpasswd.c:627 ok = true frame = 0x8001e888 local_flags = 577 ret = 3 (gdb) quit A debugging session is active. Inferior 1 [process 2108] will be killed. Quit anyway? (y or n) y The user wasn't added to ldap, is it supposed to be when smbpasswd is run the way you suggested, or I am I doing something wrong? Rowland
Volker Lendecke
2016-Mar-06 15:17 UTC
[Samba] Segmentation Fault when trying to set root samba password, IPA as a backend
On Sun, Mar 06, 2016 at 02:47:42PM +0000, Rowland penny wrote:> Hi Volker, I started the VM and tried what you said, it seemed to > work ok, but the user wasn't added to ldap, so I tried adding > another user 'smbpasswd -a ldap07' and this worked without > segfaulting. I then tried to add another user and this time it did > segfault, so I ran gdb again and got this:Is that a test VM that you could give me access to? This use of the autofree thingy seems okay, we'd need the next use. Volker -- SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen phone: +49-551-370000-0, fax: +49-551-370000-9 AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen http://www.sernet.de, mailto:kontakt at sernet.de