diff options
Diffstat (limited to 'usr.bin/ldap')
-rw-r--r-- | usr.bin/ldap/ber.c | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/usr.bin/ldap/ber.c b/usr.bin/ldap/ber.c index 981595fc4ce..f2543f23bbe 100644 --- a/usr.bin/ldap/ber.c +++ b/usr.bin/ldap/ber.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ber.c,v 1.16 2018/07/31 11:37:18 rob Exp $ */ +/* $OpenBSD: ber.c,v 1.17 2018/07/31 19:38:09 rob Exp $ */ /* * Copyright (c) 2007, 2012 Reyk Floeter <reyk@openbsd.org> @@ -430,6 +430,32 @@ ber_string2oid(const char *oidstr, struct ber_oid *o) return (0); } +int +ber_oid_cmp(struct ber_oid *a, struct ber_oid *b) +{ + size_t i; + for (i = 0; i < BER_MAX_OID_LEN; i++) { + if (a->bo_id[i] != 0) { + if (a->bo_id[i] == b->bo_id[i]) + continue; + else if (a->bo_id[i] < b->bo_id[i]) { + /* b is a successor of a */ + return (1); + } else { + /* b is a predecessor of a */ + return (-1); + } + } else if (b->bo_id[i] != 0) { + /* b is larger, but a child of a */ + return (2); + } else + break; + } + + /* b and a are identical */ + return (0); +} + struct ber_element * ber_add_oid(struct ber_element *prev, struct ber_oid *o) { @@ -756,6 +782,15 @@ ber_scanf_elements(struct ber_element *ber, char *fmt, ...) } +ssize_t +ber_get_writebuf(struct ber *b, void **buf) +{ + if (b->br_wbuf == NULL) + return -1; + *buf = b->br_wbuf; + return (b->br_wend - b->br_wbuf); +} + /* * write ber elements to the write buffer * @@ -795,6 +830,13 @@ ber_write_elements(struct ber *ber, struct ber_element *root) return (len); } +void +ber_set_readbuf(struct ber *b, void *buf, size_t len) +{ + b->br_rbuf = b->br_rptr = buf; + b->br_rend = (u_int8_t *)buf + len; +} + /* * read ber elements from the read buffer * @@ -896,6 +938,26 @@ ber_calc_len(struct ber_element *root) return (root->be_len + size); } +void +ber_set_application(struct ber *b, unsigned int (*cb)(struct ber_element *)) +{ + b->br_application = cb; +} + +void +ber_set_writecallback(struct ber_element *elm, void (*cb)(void *, size_t), + void *arg) +{ + elm->be_cb = cb; + elm->be_cbarg = arg; +} + +void +ber_free(struct ber *b) +{ + free(b->br_wbuf); +} + /* * internal functions */ @@ -1204,42 +1266,6 @@ ber_read_element(struct ber *ber, struct ber_element *elm) return totlen; } -void -ber_set_readbuf(struct ber *b, void *buf, size_t len) -{ - b->br_rbuf = b->br_rptr = buf; - b->br_rend = (u_int8_t *)buf + len; -} - -ssize_t -ber_get_writebuf(struct ber *b, void **buf) -{ - if (b->br_wbuf == NULL) - return -1; - *buf = b->br_wbuf; - return (b->br_wend - b->br_wbuf); -} - -void -ber_set_application(struct ber *b, unsigned int (*cb)(struct ber_element *)) -{ - b->br_application = cb; -} - -void -ber_set_writecallback(struct ber_element *elm, void (*cb)(void *, size_t), - void *arg) -{ - elm->be_cb = cb; - elm->be_cbarg = arg; -} - -void -ber_free(struct ber *b) -{ - free(b->br_wbuf); -} - static ssize_t ber_getc(struct ber *b, u_char *c) { @@ -1266,29 +1292,3 @@ ber_read(struct ber *ber, void *buf, size_t len) return len; } - -int -ber_oid_cmp(struct ber_oid *a, struct ber_oid *b) -{ - size_t i; - for (i = 0; i < BER_MAX_OID_LEN; i++) { - if (a->bo_id[i] != 0) { - if (a->bo_id[i] == b->bo_id[i]) - continue; - else if (a->bo_id[i] < b->bo_id[i]) { - /* b is a successor of a */ - return (1); - } else { - /* b is a predecessor of a */ - return (-1); - } - } else if (b->bo_id[i] != 0) { - /* b is larger, but a child of a */ - return (2); - } else - break; - } - - /* b and a are identical */ - return (0); -} |