FreeBSD Bugzilla – Attachment 65331 Details for
Bug 96840
[libc] [patch] getgrent() does not return large groups via NIS
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
getgrent.c.diff
getgrent.c.diff (text/plain), 2.48 KB, created by
Kirk Webb
on 2006-05-05 23:40:14 UTC
(
hide
)
Description:
getgrent.c.diff
Filename:
MIME Type:
Creator:
Kirk Webb
Created:
2006-05-05 23:40:14 UTC
Size:
2.48 KB
patch
obsolete
>--- getgrent.c Fri May 5 15:46:28 2006 >+++ /usr/src/lib/libc/gen/getgrent.c Fri May 5 15:44:13 2006 >@@ -967,7 +967,6 @@ > int *errnop, keylen, resultlen, rv; > > name = NULL; >- key = NULL; > gid = (gid_t)-1; > how = (enum nss_lookup_type)mdata; > switch (how) { >@@ -1017,16 +1016,19 @@ > result = NULL; > if (how == nss_lt_all) { > if (st->key == NULL) >- rv = yp_first(st->domain, map, &key, >- &keylen, &result, &resultlen); >+ rv = yp_first(st->domain, map, &st->key, >+ &st->keylen, &result, &resultlen); > else { >- rv = yp_next(st->domain, map, >- st->key, st->keylen, >- &key, &keylen, &result, &resultlen); >+ key = st->key; >+ keylen = st->keylen; >+ st->key = NULL; >+ rv = yp_next(st->domain, map, key, keylen, >+ &st->key, &st->keylen, &result, >+ &resultlen); >+ free(key); > } > if (rv != 0) { > free(result); >- free(key); > free(st->key); > st->key = NULL; > if (rv == YPERR_NOMORE) { >@@ -1052,35 +1054,16 @@ > * terminator, alignment padding, and one (char *) > * pointer for the member list terminator. > */ >- if (resultlen >= bufsize - _ALIGNBYTES - sizeof(char *)) { >- if (how == nss_lt_all) { >- free(key); >- } >- goto erange; >- } >+ if (resultlen >= bufsize - _ALIGNBYTES - sizeof(char *)) >+ goto erange; > memcpy(buffer, result, resultlen); > buffer[resultlen] = '\0'; > free(result); > rv = __gr_match_entry(buffer, resultlen, how, name, gid); >- if (rv == NS_SUCCESS) { >+ if (rv == NS_SUCCESS) > rv = __gr_parse_entry(buffer, resultlen, grp, > &buffer[resultlen+1], bufsize - resultlen - 1, > errnop); >- if (*errnop == ERANGE) { >- if (how == nss_lt_all) { >- free(key); >- } >- goto erange; >- } >- } >- if (how == nss_lt_all) { >- if (st->key != NULL) { >- free(st->key); >- } >- st->key = key; >- st->keylen = keylen; >- key = NULL; >- } > } while (how == nss_lt_all && !(rv & NS_TERMINATE)); > fin: > if (rv == NS_SUCCESS && retval != NULL)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 96840
: 65331