krb5 commit: Avoid assertion failure in error_message

Greg Hudson ghudson at MIT.EDU
Fri Jan 17 15:58:55 EST 2014


https://github.com/krb5/krb5/commit/6bdaa746fec1cf29adcbe5b8e65c4b8993770b84
commit 6bdaa746fec1cf29adcbe5b8e65c4b8993770b84
Author: Greg Hudson <ghudson at mit.edu>
Date:   Thu Jan 16 11:32:10 2014 -0500

    Avoid assertion failure in error_message
    
    r17942 added a call to get_thread_buffer in the first part of
    error_message, prior to the call to com_err_initialize.  This can
    cause an assertion failure from k5_getspecific if error_message is
    called on a system error before any other com_err functions are
    called.  Move the initialization call earlier to prevent this.
    
    ticket: 7822 (new)
    target_version: 1.12.2
    tags: pullup

 src/util/et/error_message.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/util/et/error_message.c b/src/util/et/error_message.c
index 50ede70..fb72396 100644
--- a/src/util/et/error_message.c
+++ b/src/util/et/error_message.c
@@ -121,6 +121,9 @@ error_message(long code)
     char *cp, *cp1;
     const struct error_table *table;
 
+    if (CALL_INIT_FUNCTION(com_err_initialize))
+        return 0;
+
     l_offset = (unsigned long)code & ((1<<ERRCODE_RANGE)-1);
     offset = l_offset;
     table_num = ((unsigned long)code - l_offset) & ERRCODE_MAX;
@@ -155,8 +158,6 @@ error_message(long code)
         goto oops;
     }
 
-    if (CALL_INIT_FUNCTION(com_err_initialize))
-        return 0;
     k5_mutex_lock(&et_list_lock);
     dprintf(("scanning list for %x\n", table_num));
     for (e = et_list; e != NULL; e = e->next) {


More information about the cvs-krb5 mailing list