Segfault with "net ads password"

James Willard james at whispering.org
Fri Nov 1 23:05:24 GMT 2002


Andrew,
 
It seems like you're right about the null pointer. Given the code block
you mentioned, I rebuilt with --enable-krb5developer and ran gdb over it
again with a breakpoint at net_ads_password() and displaying ads,
ads->auth, and ads->auth.kdc_server. The following is the output from
gdb at the line just before line 885 where kerberos_set_password() is
called:
 
3: ads->auth = {realm = 0x0, password = 0x0, user_name = 0x0, kdc_server
= 0x0, flags = 0, time_offset = 0}
2: ads->auth.kdc_server = 0x0
1: ads = (ADS_STRUCT *) 0x81af8e0

And of course, the call itself... null values and all...
(usernames/passwords substituted)
 
(gdb) 
kerberos_set_password (kpasswd_server=0x0, auth_principal=0x815c560
Admin at DOMAIN.COM, 
    auth_password=0x815c57c "Adminpass", target_principal=0xbffffbe5
User at DOMAIN.COM, 
    new_password=0x81535a0 "User", time_offset=0) at
libads/krb5_setpw.c:470
470         return krb5_set_password(kpasswd_server, target_principal,
new_password, time_offset);

Ok, this officially goes beyond my abilities... who maintains the "net
ads" portion of Samba that could help me look into this further?
 
Thanks,
 
James Willard
james at whispering.org
 

-----Original Message-----
From: Esh, Andrew [mailto:AEsh at tricord.com] 
Sent: Friday, November 01, 2002 4:54 PM
To: 'James Willard'; samba-technical at samba.org
Subject: RE: Segfault with "net ads password"
Importance: High



Looks like this bit of code is failing: 

utils/net_ads.c, lines 877-886, function "net_ads_password" 

    /* use the realm so we can eventually change passwords for users 
    in realms other than default */ 
    if (!(ads = ads_init(realm, NULL, NULL))) return -1; 

    asprintf(&prompt, "Enter new password for %s:", argv[0]); 

    new_password = getpass(prompt); 

    ret = kerberos_set_password(ads->auth.kdc_server, auth_principal, 
                                auth_password, argv[0], new_password,
ads->auth.time_offset); 

the last line is reached with "ads->auth.kdc_server" as a bad (null?)
pointer.  The "ads_init" function creates the ads structure and zeroes
it. It doesn't appear to me as though "ads_init" initializes ads->auth,
and I don't see where else it gets set.

-----Original Message----- 
From: James Willard [mailto:james at whispering.org] 
Sent: Friday, November 01, 2002 2:23 PM 
To: samba-technical at samba.org 
Subject: RE: Segfault with "net ads password" 


And as a follow-up to myself... The following is a backtrace from gdb: 

Program received signal SIGSEGV, Segmentation fault. 
0x080ec329 in interpret_addr () 
(gdb) bt 
#0  0x080ec329 in interpret_addr () 
#1  0x080ec462 in interpret_addr2 () 
#2  0x080efbe0 in open_udp_socket () 
#3  0x0810f56c in krb5_set_password () 
#4  0x0810fdbf in kerberos_set_password () 
#5  0x0806b17c in net_ads_password () 
#6  0x08068690 in net_run_function () 
#7  0x0806b51c in net_ads () 
#8  0x08068690 in net_run_function () 
#9  0x080697d3 in main () 
#10 0x42017589 in __libc_start_main () from /lib/i686/libc.so.6 

Thanks, 

James Willard 
james at whispering.org 

-----Original Message----- 
From: samba-technical-admin at lists.samba.org 
[mailto:samba-technical-admin at lists.samba.org] On Behalf Of James 
Willard 
Sent: Friday, November 01, 2002 2:12 PM 
To: samba-technical at samba.org 
Subject: Segfault with "net ads password" 


Hi, 

I'm trying to troubleshoot a problem I've been having for the past 
several weeks with "net ads password" attempting to change a users' 
password. I'm using the Samba 3.0 CVS tree updated this morning (even 
though there has been no difference in behavior in the past month or 
so). I'm running: 

net ads password UserName at DOMAIN.COM -U Admin at REALM.COM%Password 

I receive a prompt: 

Enter new password for UserName at DOMAIN.COM: 

I enter a password and then it segfaults. Below are excerpts from a 
strace: 

... 
write(3, "kadmin", 6)                   = 6 
write(3, "\0\0\0\10", 4)                = 4 
write(3, "changepw", 8)                 = 8 
... 
write(3, "\0\0\0\0", 4)                 = 4 
write(3, NULL, 0)                       = 0 
fcntl64(3, F_SETLKW, {type=F_UNLCK, whence=SEEK_SET, start=0, len=0}) = 
0 
close(3)                                = 0 
time(NULL)                              = 1036176903 
gettimeofday({1036176903, 994633}, NULL) = 0 gettimeofday({1036176903, 
995109}, NULL) = 0 
--- SIGSEGV (Segmentation fault) --- 
+++ killed by SIGSEGV +++ 

The operating system is RedHat Linux 7.3 on a PIII with krb5-1.2.5 and 
openldap-2.1.4 

What other information would be useful in tracking down this bug? 

Thanks, 

James Willard 
james at whispering.org 

-------------- next part --------------
HTML attachment scrubbed and removed


More information about the samba-technical mailing list