Changeset 5364:8017c8074f62 for imap

Show
Ignore:
Timestamp:
2008-04-29 10:38:57 (7 months ago)
Author:
Wilfried Goesgens <dothebart@…>
Branch:
HEAD
Message:

Print GSSAPI status messages to debug log on error.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • imap/auth_gss.c

    r4463 r5364  
    4242#define GSS_AUTH_P_INTEGRITY 2 
    4343#define GSS_AUTH_P_PRIVACY   4 
     44static void print_gss_error(OM_uint32 err_maj, OM_uint32 err_min) 
     45{ 
     46        OM_uint32 maj_stat, min_stat;  
     47        OM_uint32 msg_ctx = 0; 
     48        gss_buffer_desc status_string; 
     49        char buf_maj[512]; 
     50        char buf_min[512]; 
     51         
     52        do 
     53        { 
     54                maj_stat = gss_display_status (&min_stat, 
     55                                               err_maj, 
     56                                               GSS_C_GSS_CODE, 
     57                                               GSS_C_NO_OID, 
     58                                               &msg_ctx, 
     59                                               &status_string); 
     60                if (GSS_ERROR(maj_stat)) 
     61                        break; 
     62                strncpy(buf_maj, (char*) status_string.value, sizeof(buf_maj)); 
     63                gss_release_buffer(&min_stat, &status_string); 
     64                 
     65                maj_stat = gss_display_status (&min_stat, 
     66                                               err_min, 
     67                                               GSS_C_MECH_CODE, 
     68                                               GSS_C_NULL_OID, 
     69                                               &msg_ctx, 
     70                                               &status_string); 
     71                if (!GSS_ERROR(maj_stat)) 
     72                { 
     73                        strncpy(buf_min, (char*) status_string.value, sizeof(buf_min)); 
     74                        gss_release_buffer(&min_stat, &status_string); 
     75                } 
     76        } while (!GSS_ERROR(maj_stat) && msg_ctx != 0); 
     77         
     78        dprint (2, (debugfile, "((%s:%d )(%s:%d))", buf_maj, err_maj, buf_min, err_min)); 
     79} 
    4480 
    4581/* imap_auth_gss: AUTH=GSSAPI support. */ 
     
    96132  if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED) 
    97133  { 
     134    print_gss_error(maj_stat, min_stat); 
    98135    dprint (1, (debugfile, "Error acquiring credentials - no TGT?\n")); 
    99136    gss_release_name (&min_stat, &target_name); 
     
    152189    if (maj_stat != GSS_S_COMPLETE && maj_stat != GSS_S_CONTINUE_NEEDED) 
    153190    { 
     191      print_gss_error(maj_stat, min_stat); 
    154192      dprint (1, (debugfile, "Error exchanging credentials\n")); 
    155193      gss_release_name (&min_stat, &target_name); 
     
    183221  if (maj_stat != GSS_S_COMPLETE) 
    184222  { 
     223    print_gss_error(maj_stat, min_stat); 
    185224    dprint (2, (debugfile, "Couldn't unwrap security level data\n")); 
    186225    gss_release_buffer (&min_stat, &send_token);