Package: krb5-auth-dialog
Version: 3.2.1-1
Severity: important
User:     [email protected]
Usertags: debian-edu

On a Debian Edu Wheezy diskless workstation, a user login end up without
a working Kerberos ticket (because it uses ldm which in turn do not
handle PAM properly), and this in turn exposes a crash bug in
krb5-auth-dialog.

The machine in question get a short hostname (ltsp4115 or similar), and
while kinit is able to use the settings in /etc/resolv.conf to figure
out the Kerberos realm (using SRV records in DNS), krb5-auth-dialog is
not.

Thus when I klick on the panel icon to ask for a kerberos ticket,
instead of getting the password dialog prompt, I get a dialog stating
that it could not find the realm.  The dialog states (translated from
Norwegian):

  Kerberos authentication error

  Could not get kerberos ticket: 'unable to find realm of host ltsp4115'
  [OK]

If I start a terminal and run kinit there, I can set a password but
krb5-auth-dialog imediately crashes.  Here is the valgrind output from
the crash run:

==7338== Memcheck, a memory error detector
==7338== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==7338== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==7338== Command: krb5-auth-dialog
==7338== 
==7338== Conditional jump or move depends on uninitialised value(s)
==7338==    at 0x551751E: ??? (in /usr/lib/i386-linux-gnu/libpixman-1.so.0.26.0)
==7338==    by 0x5503987: ??? (in /usr/lib/i386-linux-gnu/libpixman-1.so.0.26.0)
==7338==    by 0x54BA133: pixman_image_composite32 (in 
/usr/lib/i386-linux-gnu/libpixman-1.so.0.26.0)
==7338==    by 0x5134A1C: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x5178EEB: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x5169554: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x516A03E: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x7F: ???
==7338== 
==7338== Conditional jump or move depends on uninitialised value(s)
==7338==    at 0x551778E: ??? (in /usr/lib/i386-linux-gnu/libpixman-1.so.0.26.0)
==7338==    by 0x5503987: ??? (in /usr/lib/i386-linux-gnu/libpixman-1.so.0.26.0)
==7338==    by 0x54BA133: pixman_image_composite32 (in 
/usr/lib/i386-linux-gnu/libpixman-1.so.0.26.0)
==7338==    by 0x5134A1C: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x5178EEB: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x5169554: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x516A03E: ??? (in /usr/lib/i386-linux-gnu/libcairo.so.2.11200.2)
==7338==    by 0x51A: ???
==7338== 
==7338== Conditional jump or move depends on uninitialised value(s)
==7338==    at 0x7EE7621: ??? (in /usr/lib/i386-linux-gnu/librsvg-2.so.2.36.1)
==7338==    by 0x7EE8485: rsvg_handle_get_pixbuf_sub (in 
/usr/lib/i386-linux-gnu/librsvg-2.so.2.36.1)
==7338==    by 0x7EE8502: rsvg_handle_get_pixbuf (in 
/usr/lib/i386-linux-gnu/librsvg-2.so.2.36.1)
==7338==    by 0x5BD9ACF: ??? (in 
/usr/lib/i386-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so)
==7338==    by 0x4F632BA: gdk_pixbuf_loader_close (in 
/usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0.2600.1)
==7338==    by 0x4F5F14C: ??? (in 
/usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0.2600.1)
==7338==    by 0x4F60CA6: gdk_pixbuf_new_from_stream_at_scale (in 
/usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0.2600.1)
==7338==    by 0x42B877D: ??? (in /usr/lib/i386-linux-gnu/libgtk-3.so.0.400.2)
==7338==    by 0x42BB7E0: gtk_icon_info_load_icon (in 
/usr/lib/i386-linux-gnu/libgtk-3.so.0.400.2)
==7338==    by 0x42BBD14: gtk_icon_info_load_symbolic_for_context (in 
/usr/lib/i386-linux-gnu/libgtk-3.so.0.400.2)
==7338==    by 0x42B65F5: ??? (in /usr/lib/i386-linux-gnu/libgtk-3.so.0.400.2)
==7338==    by 0x43744FE: ??? (in /usr/lib/i386-linux-gnu/libgtk-3.so.0.400.2)
==7338== 
** Message: No plugins to load

** (krb5-auth-dialog:7338): WARNING **: Could not initialize NMClient 
/org/freedesktop/NetworkManager: The name org.freedesktop.NetworkManager was 
not provided by any .service files

(krb5-auth-dialog:7338): GLib-GIO-CRITICAL **: GApplication subclass 'KaApplet' 
failed to chain up on ::startup (from start of override function)
==7338== Invalid read of size 4
==7338==    at 0x40F3F47: krb5_principal_compare (in 
/usr/lib/i386-linux-gnu/libkrb5.so.26.0.0)
==7338==    by 0x804EB45: ??? (in /usr/bin/krb5-auth-dialog)
==7338==    by 0x53ED20C: ffi_call (in /usr/lib/i386-linux-gnu/libffi.so.5.0.10)
==7338==    by 0x4810C79: g_cclosure_marshal_generic_va (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x4810120: ??? (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x4829278: g_signal_emit_valist (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x4829CD2: g_signal_emit (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x46EDA70: ??? (in 
/usr/lib/i386-linux-gnu/libgio-2.0.so.0.3200.4)
==7338==    by 0x48A018F: ??? (in /lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==    by 0x48A26D2: g_main_context_dispatch (in 
/lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==    by 0x48A2A6F: ??? (in /lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==    by 0x48A2B50: g_main_context_iteration (in 
/lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==7338== 
==7338== 
==7338== Process terminating with default action of signal 11 (SIGSEGV)
==7338==  Access not within mapped region at address 0x0
==7338==    at 0x40F3F47: krb5_principal_compare (in 
/usr/lib/i386-linux-gnu/libkrb5.so.26.0.0)
==7338==    by 0x804EB45: ??? (in /usr/bin/krb5-auth-dialog)
==7338==    by 0x53ED20C: ffi_call (in /usr/lib/i386-linux-gnu/libffi.so.5.0.10)
==7338==    by 0x4810C79: g_cclosure_marshal_generic_va (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x4810120: ??? (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x4829278: g_signal_emit_valist (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x4829CD2: g_signal_emit (in 
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0.3200.4)
==7338==    by 0x46EDA70: ??? (in 
/usr/lib/i386-linux-gnu/libgio-2.0.so.0.3200.4)
==7338==    by 0x48A018F: ??? (in /lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==    by 0x48A26D2: g_main_context_dispatch (in 
/lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==    by 0x48A2A6F: ??? (in /lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==    by 0x48A2B50: g_main_context_iteration (in 
/lib/i386-linux-gnu/libglib-2.0.so.0.3200.4)
==7338==  If you believe this happened as a result of a stack
==7338==  overflow in your program's main thread (unlikely but
==7338==  possible), you can try to increase the size of the
==7338==  main thread stack using the --main-stacksize= flag.
==7338==  The main thread stack size used in this run was 8388608.
==7338== 
==7338== HEAP SUMMARY:
==7338==     in use at exit: 1,620,516 bytes in 23,147 blocks
==7338==   total heap usage: 83,987 allocs, 60,840 frees, 6,257,291 bytes 
allocated
==7338== 
==7338== LEAK SUMMARY:
==7338==    definitely lost: 1,792 bytes in 6 blocks
==7338==    indirectly lost: 6,460 bytes in 320 blocks
==7338==      possibly lost: 1,041,607 bytes in 14,392 blocks
==7338==    still reachable: 570,657 bytes in 8,429 blocks
==7338==         suppressed: 0 bytes in 0 blocks
==7338== Rerun with --leak-check=full to see details of leaked memory
==7338== 
==7338== For counts of detected and suppressed errors, rerun with: -v
==7338== Use --track-origins=yes to see where uninitialised values come from
==7338== ERROR SUMMARY: 11 errors from 4 contexts (suppressed: 177 from 12)

Can you change krb5-auth-dialog to use the same algorithm as kinit to
figure out the realm, to get it working also for hosts without a domain
part in their name?

Can you fix the crash?

And if you are able to fix these things, can you fix them in Wheezy too?

-- 
Happy hacking
Petter Reinholdtsen


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to