X-Git-Url: https://git.hcoop.net/hcoop/debian/libnss-afs.git/blobdiff_plain/43d1801e7ebb08fe927747e1de8eefa0ae294957..be93aa7b0ef9b5b58a15e03a0bf47a8b5cf8e9fc:/nss_afs.c diff --git a/nss_afs.c b/nss_afs.c index 11d9fb3..9c9740c 100644 --- a/nss_afs.c +++ b/nss_afs.c @@ -131,6 +131,7 @@ enum nss_status ptsid2name(int uid, char **buffer, int *buflen) { lnames.namelist_len = 0; if (ubik_Call(PR_IDToName,pruclient,0,&lid,&lnames) != PRSUCCESS) { + perror("ubik_Call() in ptsid2name() failed\n"); pthread_mutex_unlock(&mutex); return NSS_STATUS_UNAVAIL; } @@ -178,6 +179,7 @@ enum nss_status ptsname2id(char *name, uid_t* uid) { lnames.namelist_len = 1; if (ubik_Call(PR_NameToID,pruclient,0,&lnames,&lid) != PRSUCCESS) { + perror("ubik_Call() in ptsname2id() failed\n"); pthread_mutex_unlock(&mutex); return NSS_STATUS_UNAVAIL; } @@ -237,7 +239,10 @@ int init_afs() { /* time out requests after 5 seconds to avoid hanging things */ rx_SetRxDeadTime(5); - if (pr_Initialize(0L,AFSDIR_CLIENT_ETC_DIRPATH, 0)) break; + if (pr_Initialize(0L,AFSDIR_CLIENT_ETC_DIRPATH, 0)) { + perror("pr_Initialize() failed\n"); + break; + } afs_initialized = 1; pthread_mutex_unlock(&mutex); @@ -405,6 +410,14 @@ enum nss_status fill_result_buf(uid_t uid, result_buf->pw_shell = buffer; if ( get_shell(result_buf->pw_name,&buffer,&buflen) ) break; +#ifdef LIMIT_USERNAME_CHARS + if ( strlen(result_buf->pw_name) > LIMIT_USERNAME_CHARS ) { + result_buf->pw_name[LIMIT_USERNAME_CHARS] = '\0'; + buflen = buflen + ( buffer - &result_buf->pw_name[LIMIT_USERNAME_CHARS+1] ); + buffer = &result_buf->pw_name[LIMIT_USERNAME_CHARS+1]; + } +#endif + *errnop = errno; return NSS_STATUS_SUCCESS; } while(0); @@ -436,14 +449,6 @@ enum nss_status _nss_afs_getpwuid_r (uid_t uid, return temp; } -#ifdef LIMIT_USERNAME_CHARS - if ( strlen(result_buf->pw_name) > LIMIT_USERNAME_CHARS ) { - result_buf->pw_name[LIMIT_USERNAME_CHARS] = '\0'; - buflen = buflen + ( buffer - &result_buf->pw_name[LIMIT_USERNAME_CHARS+1] ); - buffer = &result_buf->pw_name[LIMIT_USERNAME_CHARS+1]; - } -#endif - return fill_result_buf(uid, name, result_buf, buffer, buflen, errnop); }