Changeset 74

Show
Ignore:
Timestamp:
08/10/06 13:33:04 (2 years ago)
Author:
smoku
Message:

integrated Juha Heinanen's authreg_pam realm handling

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/c2s/authreg_pam.c

    r2 r74  
    6464    struct pam_conv conv; 
    6565    pam_handle_t *pam; 
    66     int ret; 
     66    int ret, user_len, realm_len; 
     67    char *user_realm = 0; 
    6768 
    6869    conv.conv = _ar_pam_conversation; 
    6970    conv.appdata_ptr = password; 
    7071 
    71     ret = pam_start("jabberd", username, &conv, &pam); 
     72    if (realm) { 
     73        realm_len = strlen(realm); 
     74        if (realm_len > 0) { 
     75            user_len = strlen(username); 
     76            user_realm = malloc(user_len + realm_len + 2); 
     77            strcpy(user_realm, username); 
     78            *(user_realm + user_len) = '@'; 
     79            strcpy(user_realm + user_len + 1, realm); 
     80        } 
     81    } 
     82    if (user_realm) { 
     83        ret = pam_start("jabberd", user_realm, &conv, &pam); 
     84    } else { 
     85        ret = pam_start("jabberd", username, &conv, &pam); 
     86    } 
     87    if (user_realm) free(user_realm); 
    7288    if(ret != PAM_SUCCESS) { 
    7389        log_write(ar->c2s->log, LOG_ERR, "pam: couldn't initialise PAM: %s", pam_strerror(NULL, ret));