diff options
| author | Xin LI <delphij@FreeBSD.org> | 2009-05-28 21:52:00 +0000 |
|---|---|---|
| committer | Xin LI <delphij@FreeBSD.org> | 2009-05-28 21:52:00 +0000 |
| commit | 5bc4843143b9c918dbf7a3ffbd1fb10c4d332ef7 (patch) | |
| tree | a5870204a8f4b9ca769d2e2817f3316c7cfdd9ce /lib/libc | |
| parent | 877b77c5fbc5621d49466f1f386ef81248a161ad (diff) | |
Notes
Diffstat (limited to 'lib/libc')
| -rw-r--r-- | lib/libc/gen/getcap.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/libc/gen/getcap.c b/lib/libc/gen/getcap.c index 0f0bb207a8d1..32d66d484f5f 100644 --- a/lib/libc/gen/getcap.c +++ b/lib/libc/gen/getcap.c @@ -189,7 +189,7 @@ getent(char **cap, u_int *len, char **db_array, int fd, const char *name, { DB *capdbp; char *r_end, *rp, **db_p; - int myfd, eof, foundit, retval, clen; + int myfd, eof, foundit, retval; char *record, *cbuf; int tc_not_resolved; char pbuf[_POSIX_PATH_MAX]; @@ -251,14 +251,16 @@ getent(char **cap, u_int *len, char **db_array, int fd, const char *name, return (retval); } /* save the data; close frees it */ - clen = strlen(record); - cbuf = malloc(clen + 1); - memcpy(cbuf, record, clen + 1); + cbuf = strdup(record); if (capdbp->close(capdbp) < 0) { free(cbuf); return (-2); } - *len = clen; + if (cbuf == NULL) { + errno = ENOMEM; + return (-2); + } + *len = strlen(cbuf); *cap = cbuf; return (retval); } else { |
