summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/getgrent.c
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>1996-12-27 19:28:46 +0000
committerwpaul <wpaul@FreeBSD.org>1996-12-27 19:28:46 +0000
commit2456fc0b4bd454a5e480dc9ee6da285f454de8b5 (patch)
treeb3899e41109595c94a952b728bb8f15ac2b7d3c4 /lib/libc/gen/getgrent.c
parent4fe1563f048bdf7002bd5c57edb9f8d551063830 (diff)
downloadFreeBSD-src-2456fc0b4bd454a5e480dc9ee6da285f454de8b5.zip
FreeBSD-src-2456fc0b4bd454a5e480dc9ee6da285f454de8b5.tar.gz
Small yet significant tweaks/cleanups:
- getpwent: o adjunctbuf should be NUL terminated after copying o _pw_breakout_yp() needs to know the length of the buffer returned from YP so it can properly NUL terminate its local buffer. - getgrent: o YP buffers should be YPMAXRECORD + 2 bytes long and NUL terminated. (Previously they were hardcoded to 1024 bytes.) - getnetgrent: o YP data should be copied with snprintf(), not sprintf() These are 2.2 candidates. I will wait a few days to make sure these don't break anything and then, if there are no objections, move them to the 2.2 branch.
Diffstat (limited to 'lib/libc/gen/getgrent.c')
-rw-r--r--lib/libc/gen/getgrent.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/libc/gen/getgrent.c b/lib/libc/gen/getgrent.c
index e2cefb9..47d229e 100644
--- a/lib/libc/gen/getgrent.c
+++ b/lib/libc/gen/getgrent.c
@@ -473,7 +473,7 @@ static int
_getypgroup(struct group *gr, const char *name, char *map)
{
char *result, *s;
- static char resultbuf[1024];
+ static char resultbuf[YPMAXRECORD + 2];
int resultlen;
if(!_gr_yp_domain) {
@@ -490,6 +490,7 @@ _getypgroup(struct group *gr, const char *name, char *map)
if(resultlen >= sizeof resultbuf) return 0;
strncpy(resultbuf, result, resultlen);
+ resultbuf[resultlen] = '\0';
free(result);
return(_gr_breakout_yp(gr, resultbuf));
@@ -502,7 +503,7 @@ _nextypgroup(struct group *gr)
static char *key;
static int keylen;
char *lastkey, *result;
- static char resultbuf[1024];
+ static char resultbuf[YPMAXRECORD + 2];
int resultlen;
int rv;
@@ -537,7 +538,8 @@ unpack:
goto tryagain;
}
- strcpy(resultbuf, result);
+ strncpy(resultbuf, result, resultlen);
+ resultbuf[resultlen] = '\0';
free(result);
if((result = strchr(resultbuf, '\n')) != NULL)
*result = '\0';
OpenPOWER on IntegriCloud