Changeset 652 for trunk/sx/sasl_gsasl.c

Show
Ignore:
Timestamp:
09/08/08 11:20:20 (5 months ago)
Author:
smoku
Message:

Merged GSSAPI support patch by Jelmer Vernooij

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/sx/sasl_gsasl.c

    r624 r652  
    5757  char *service; 
    5858  char *hostname; 
    59   char *gssapi_display_name; 
    6059  char *realm; 
    6160#ifndef GSASL_NO_OBSOLETE 
     
    158157            return; 
    159158        } 
     159    } else if (NULL != gsasl_property_fast(sd, GSASL_GSSAPI_DISPLAY_NAME)) { 
     160        creds.authzid = strdup(gsasl_property_fast(sd, GSASL_GSSAPI_DISPLAY_NAME)); 
     161        authzid = NULL; 
    160162    } else { 
    161163        /* override unchecked arbitrary authzid */ 
     
    177179} 
    178180 
    179 /** make the stream suthenticated second time round */ 
     181/** make the stream authenticated second time round */ 
    180182static void _sx_sasl_stream(sx_t s, sx_plugin_t p) { 
    181183    Gsasl_session *sd = (Gsasl_session *) s->plugin_data[p->index]; 
     
    621623            return GSASL_NEEDS_MORE; 
    622624 
     625        case GSASL_SERVICE: 
     626            gsasl_property_set(sd, GSASL_SERVICE, "xmpp"); 
     627            return GSASL_OK; 
     628 
     629        case GSASL_HOSTNAME: 
     630            {  
     631                char hostname[256]; 
     632                /* get hostname */ 
     633                hostname[0] = '\0'; 
     634                gethostname(hostname, 256); 
     635                hostname[255] = '\0'; 
     636 
     637                gsasl_property_set(sd, GSASL_HOSTNAME, hostname); 
     638           } 
     639           return GSASL_OK; 
     640 
    623641        case GSASL_VALIDATE_SIMPLE: 
    624642            /* GSASL_AUTHID, GSASL_AUTHZID, GSASL_PASSWORD */ 
     
    635653                return GSASL_AUTHENTICATION_ERROR; 
    636654 
     655        case GSASL_VALIDATE_GSSAPI: 
     656            /* GSASL_AUTHZID, GSASL_GSSAPI_DISPLAY_NAME */ 
     657            creds.authnid = gsasl_property_fast(sd, GSASL_GSSAPI_DISPLAY_NAME); 
     658            if(!creds.authnid) return GSASL_NO_AUTHID; 
     659            creds.authzid = gsasl_property_fast(sd, GSASL_AUTHZID); 
     660            if(!creds.authzid) return GSASL_NO_AUTHZID; 
     661            gsasl_property_set(sd, GSASL_AUTHID, creds.authnid); 
     662            return GSASL_OK; 
     663 
    637664        case GSASL_VALIDATE_ANONYMOUS: 
    638665            /* GSASL_ANONYMOUS_TOKEN */