From: megacz Date: Sun, 27 Apr 2008 20:00:51 +0000 (-0400) Subject: v1.07: fix highly-improbable segfault X-Git-Tag: 1.07 X-Git-Url: https://git.hcoop.net/hcoop/debian/libnss-afs.git/commitdiff_plain/e8c23dae9125f8d827c582ce62e2b7258cca2b6f v1.07: fix highly-improbable segfault --- diff --git a/debian/changelog b/debian/changelog index bde90e3..09a7324 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libnss-afs (1.07) unstable; urgency=low + + * fix highly-improbable segfault + + -- Adam Megacz Sun, 27 Apr 2008 15:56:36 -0400 + libnss-afs (1.06) unstable; urgency=low * clean up debianization diff --git a/nss_afs.c b/nss_afs.c index 11d9fb3..e05f53a 100644 --- a/nss_afs.c +++ b/nss_afs.c @@ -405,6 +405,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 +444,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); }