aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/ypldap
diff options
context:
space:
mode:
authorMarcelo Araujo <araujo@FreeBSD.org>2017-05-26 03:27:06 +0000
committerMarcelo Araujo <araujo@FreeBSD.org>2017-05-26 03:27:06 +0000
commit85a9cb4440ddb5043c89bb085f4a5c6c43d5f3db (patch)
treed1d612526049734002c0d915852811d4b89ef144 /usr.sbin/ypldap
parent8bf4606408257f6e6eb440f169c83e6707049e3b (diff)
Notes
Diffstat (limited to 'usr.sbin/ypldap')
-rw-r--r--usr.sbin/ypldap/aldap.c23
1 files changed, 6 insertions, 17 deletions
diff --git a/usr.sbin/ypldap/aldap.c b/usr.sbin/ypldap/aldap.c
index f66c3cccc5c8..4fb6608ec3f0 100644
--- a/usr.sbin/ypldap/aldap.c
+++ b/usr.sbin/ypldap/aldap.c
@@ -1212,30 +1212,19 @@ char *
parseval(char *p, size_t len)
{
char hex[3];
- char *cp = p, *buffer, *newbuffer;
- size_t size, newsize, i, j;
+ char *buffer;
+ size_t i, j;
- size = 50;
- if ((buffer = calloc(1, size)) == NULL)
+ if ((buffer = calloc(1, len + 1)) == NULL)
return NULL;
for (i = j = 0; j < len; i++) {
- if (i >= size) {
- newsize = size + 1024;
- if ((newbuffer = realloc(buffer, newsize)) == NULL) {
- free(buffer);
- return (NULL);
- }
- buffer = newbuffer;
- size = newsize;
- }
-
- if (cp[j] == '\\') {
- strlcpy(hex, cp + j + 1, sizeof(hex));
+ if (p[j] == '\\') {
+ strlcpy(hex, p + j + 1, sizeof(hex));
buffer[i] = (char)strtoumax(hex, NULL, 16);
j += 3;
} else {
- buffer[i] = cp[j];
+ buffer[i] = p[j];
j++;
}
}