diff options
| author | Marcelo Araujo <araujo@FreeBSD.org> | 2017-05-26 03:27:06 +0000 |
|---|---|---|
| committer | Marcelo Araujo <araujo@FreeBSD.org> | 2017-05-26 03:27:06 +0000 |
| commit | 85a9cb4440ddb5043c89bb085f4a5c6c43d5f3db (patch) | |
| tree | d1d612526049734002c0d915852811d4b89ef144 /usr.sbin/ypldap | |
| parent | 8bf4606408257f6e6eb440f169c83e6707049e3b (diff) | |
Notes
Diffstat (limited to 'usr.sbin/ypldap')
| -rw-r--r-- | usr.sbin/ypldap/aldap.c | 23 |
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++; } } |
