krb5_free_data

Markus Moeller huaraz at moeller.plus.com
Sat Jun 21 19:28:18 EDT 2014


Hi Greg,

I see this in krb5 1.8.3

(gdb) where
#0  0x00007ffff5f911b5 in *__GI_raise (sig=<value optimized out>) at 
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff5f93fc0 in *__GI_abort () at abort.c:92
#2  0x00007ffff5fc75bb in __libc_message (do_abort=<value optimized out>, 
fmt=<value optimized out>) at ../sysdeps/unix/sysv/linux/libc_fatal.c:189
#3  0x00007ffff5fd0e16 in malloc_printerr (action=3, str=0x7ffff6088748 
"double free or corruption (fasttop)", ptr=<value optimized out>)
    at malloc.c:6267
#4  0x00007ffff5fd5b8c in *__GI___libc_free (mem=<value optimized out>) at 
malloc.c:3739
#5  0x00007ffff7939472 in krb5_free_data (context=<value optimized out>, 
val=0x6171f0) at ../../../../src/lib/krb5/krb/kfree.c:253
#6  0x00000000004051a4 in get_ad_groups (ad_groups=0x7fffffffaff0 "", 
context=0x60f9e0, pac=0x0) at negotiate_kerberos_pac.cc:464
#7  0x0000000000403265 in main (argc=5, argv=0x7fffffffe0e8) at 
negotiate_kerberos_auth.cc:419

and line 253 is free(val->data)

The code I have is the following and I get an error in krb5_pac_get_buffer: 
Invalid argument


ad_data = (krb5_data *)xmalloc(sizeof(krb5_data));

#define KERB_LOGON_INFO 1
    ret = krb5_pac_get_buffer(context, pac, KERB_LOGON_INFO, ad_data);
    if (check_k5_err(context, "krb5_pac_get_buffer", ret))
        goto k5clean;


k5clean:
    krb5_free_data(context, ad_data);

Maybe there is something wrong. I usually do not get this error, but I don't 
know why it happens sometimes.

Markus

-----Original Message----- 
From: Greg Hudson
Sent: Saturday, June 21, 2014 11:36 PM
To: Markus Moeller ; krbdev at mit.edu
Subject: Re: krb5_free_data

On 06/21/2014 05:17 PM, Markus Moeller wrote:
> Sorry I do not understand. Right now I get crashes as val->data is NULL.

free(NULL) does not crash.  See section 7.20.3.2 of:

    http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf

or:

    http://pubs.opengroup.org/onlinepubs/009695399/functions/free.html

We make this assumption all over the krb5 code base, as do many other
programs.  Perhaps the crashes you are seeing have another cause?




More information about the krbdev mailing list