diff options
author | 2010-06-05 15:27:35 +0000 | |
---|---|---|
committer | 2010-06-05 15:27:35 +0000 | |
commit | e519884f848a62c5b6dd2acc2e62204fefb7f31d (patch) | |
tree | 2e7607c3037fd46adc78a77b95f0ec7f5e1fb884 | |
parent | usage line and error out if pkg foo. (diff) | |
download | wireguard-openbsd-e519884f848a62c5b6dd2acc2e62204fefb7f31d.tar.xz wireguard-openbsd-e519884f848a62c5b6dd2acc2e62204fefb7f31d.zip |
Minimize changes against the ber.c in snmpd and ypldap. This also fixes an
erroneous protocol error return in ldap_extended(), which prevented
StartTLS from working.
-rw-r--r-- | usr.sbin/ldapd/ber.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/usr.sbin/ldapd/ber.c b/usr.sbin/ldapd/ber.c index 602bbe7074d..f6662c75eae 100644 --- a/usr.sbin/ldapd/ber.c +++ b/usr.sbin/ldapd/ber.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ber.c,v 1.1 2010/05/31 17:36:31 martinh Exp $ */ +/* $OpenBSD: ber.c,v 1.2 2010/06/05 15:27:35 martinh Exp $ */ /* * Copyright (c) 2007 Reyk Floeter <reyk@vantronix.net> @@ -26,13 +26,13 @@ #include <stdlib.h> #include <err.h> /* XXX for debug output */ #include <stdio.h> /* XXX for debug output */ -#include <string.h> +#include <strings.h> #include <unistd.h> #include <stdarg.h> -#include <stdint.h> #include "ber.h" + #define BER_TYPE_CONSTRUCTED 0x20 /* otherwise primitive */ #define BER_TYPE_SINGLE_MAX 30 #define BER_TAG_MASK 0x1f @@ -624,7 +624,7 @@ ber_scanf_elements(struct ber_element *ber, char *fmt, ...) bzero(parent, sizeof(struct ber_element *) * _MAX_SEQ); va_start(ap, fmt); - while (*fmt != '\0' && ber != NULL) { + while (*fmt) { switch (*fmt++) { case 'B': ptr = va_arg(ap, void **); @@ -717,6 +717,8 @@ ber_scanf_elements(struct ber_element *ber, char *fmt, ...) goto fail; } + if (ber->be_next == NULL) + continue; ber = ber->be_next; } va_end(ap); @@ -735,7 +737,9 @@ ber_scanf_elements(struct ber_element *ber, char *fmt, ...) * ber holds the socket * root fully populated element tree * - * returns number of bytes written, or -1 on error and sets errno + * returns: + * >=0 number of bytes written + * -1 on failure and sets errno */ int ber_write_elements(struct ber *ber, struct ber_element *root) |