=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ldap/aldap.c,v retrieving revision 1.8 retrieving revision 1.9 diff -c -r1.8 -r1.9 *** src/usr.bin/ldap/aldap.c 2019/09/10 14:35:32 1.8 --- src/usr.bin/ldap/aldap.c 2019/10/24 12:39:26 1.9 *************** *** 1,4 **** ! /* $OpenBSD: aldap.c,v 1.8 2019/09/10 14:35:32 martijn Exp $ */ /* * Copyright (c) 2008 Alexander Schrijver --- 1,4 ---- ! /* $OpenBSD: aldap.c,v 1.9 2019/10/24 12:39:26 tb Exp $ */ /* * Copyright (c) 2008 Alexander Schrijver *************** *** 74,80 **** tls_free(al->tls); } close(al->fd); ! ber_free(&al->ber); evbuffer_free(al->buf); free(al); --- 74,80 ---- tls_free(al->tls); } close(al->fd); ! ober_free(&al->ber); evbuffer_free(al->buf); free(al); *************** *** 90,96 **** return NULL; a->buf = evbuffer_new(); a->fd = fd; ! ber_set_application(&a->ber, aldap_application); return a; } --- 90,96 ---- return NULL; a->buf = evbuffer_new(); a->fd = fd; ! ober_set_application(&a->ber, aldap_application); return a; } *************** *** 130,142 **** size_t len, done; ssize_t error, wrote; ! len = ber_calc_len(root); ! error = ber_write_elements(&ldap->ber, root); ! ber_free_elements(root); if (error == -1) return -1; ! ber_get_writebuf(&ldap->ber, &ptr); done = 0; data = ptr; while (len > 0) { --- 130,142 ---- size_t len, done; ssize_t error, wrote; ! len = ober_calc_len(root); ! error = ober_write_elements(&ldap->ber, root); ! ober_free_elements(root); if (error == -1) return -1; ! ober_get_writebuf(&ldap->ber, &ptr); done = 0; data = ptr; while (len > 0) { *************** *** 163,172 **** { struct ber_element *root = NULL, *ber; ! if ((root = ber_add_sequence(NULL)) == NULL) goto fail; ! ber = ber_printf_elements(root, "d{tst", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_EXTENDED, LDAP_STARTTLS_OID, BER_CLASS_CONTEXT, 0); if (ber == NULL) { ldap->err = ALDAP_ERR_OPERATION_FAILED; --- 163,172 ---- { struct ber_element *root = NULL, *ber; ! if ((root = ober_add_sequence(NULL)) == NULL) goto fail; ! ber = ober_printf_elements(root, "d{tst", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_EXTENDED, LDAP_STARTTLS_OID, BER_CLASS_CONTEXT, 0); if (ber == NULL) { ldap->err = ALDAP_ERR_OPERATION_FAILED; *************** *** 179,185 **** return (ldap->msgid); fail: if (root != NULL) ! ber_free_elements(root); ldap->err = ALDAP_ERR_OPERATION_FAILED; return (-1); --- 179,185 ---- return (ldap->msgid); fail: if (root != NULL) ! ober_free_elements(root); ldap->err = ALDAP_ERR_OPERATION_FAILED; return (-1); *************** *** 195,204 **** if (bindcred == NULL) bindcred = ""; ! if ((root = ber_add_sequence(NULL)) == NULL) goto fail; ! elm = ber_printf_elements(root, "d{tdsst", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_BIND, VERSION, binddn, bindcred, BER_CLASS_CONTEXT, LDAP_AUTH_SIMPLE); if (elm == NULL) --- 195,204 ---- if (bindcred == NULL) bindcred = ""; ! if ((root = ober_add_sequence(NULL)) == NULL) goto fail; ! elm = ober_printf_elements(root, "d{tdsst", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_BIND, VERSION, binddn, bindcred, BER_CLASS_CONTEXT, LDAP_AUTH_SIMPLE); if (elm == NULL) *************** *** 213,219 **** return (ldap->msgid); fail: if (root != NULL) ! ber_free_elements(root); ldap->err = ALDAP_ERR_OPERATION_FAILED; return (-1); --- 213,219 ---- return (ldap->msgid); fail: if (root != NULL) ! ober_free_elements(root); ldap->err = ALDAP_ERR_OPERATION_FAILED; return (-1); *************** *** 224,232 **** { struct ber_element *root = NULL, *elm; ! if ((root = ber_add_sequence(NULL)) == NULL) goto fail; ! elm = ber_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_UNBIND_30); if (elm == NULL) goto fail; --- 224,232 ---- { struct ber_element *root = NULL, *elm; ! if ((root = ober_add_sequence(NULL)) == NULL) goto fail; ! elm = ober_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_UNBIND_30); if (elm == NULL) goto fail; *************** *** 240,246 **** return (ldap->msgid); fail: if (root != NULL) ! ber_free_elements(root); ldap->err = ALDAP_ERR_OPERATION_FAILED; --- 240,246 ---- return (ldap->msgid); fail: if (root != NULL) ! ober_free_elements(root); ldap->err = ALDAP_ERR_OPERATION_FAILED; *************** *** 255,264 **** struct ber_element *root = NULL, *ber, *c; int i; ! if ((root = ber_add_sequence(NULL)) == NULL) goto fail; ! ber = ber_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_SEARCH); if (ber == NULL) { ldap->err = ALDAP_ERR_OPERATION_FAILED; --- 255,264 ---- struct ber_element *root = NULL, *ber, *c; int i; ! if ((root = ober_add_sequence(NULL)) == NULL) goto fail; ! ber = ober_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, LDAP_REQ_SEARCH); if (ber == NULL) { ldap->err = ALDAP_ERR_OPERATION_FAILED; *************** *** 266,272 **** } c = ber; ! ber = ber_printf_elements(ber, "sEEddb", basedn, (long long)scope, (long long)LDAP_DEREF_NEVER, sizelimit, timelimit, typesonly); if (ber == NULL) { --- 266,272 ---- } c = ber; ! ber = ober_printf_elements(ber, "sEEddb", basedn, (long long)scope, (long long)LDAP_DEREF_NEVER, sizelimit, timelimit, typesonly); if (ber == NULL) { *************** *** 279,289 **** goto fail; } ! if ((ber = ber_add_sequence(ber)) == NULL) goto fail; if (attrs != NULL) for (i = 0; attrs[i] != NULL; i++) { ! if ((ber = ber_add_string(ber, attrs[i])) == NULL) goto fail; } --- 279,289 ---- goto fail; } ! if ((ber = ober_add_sequence(ber)) == NULL) goto fail; if (attrs != NULL) for (i = 0; attrs[i] != NULL; i++) { ! if ((ber = ober_add_string(ber, attrs[i])) == NULL) goto fail; } *************** *** 301,307 **** fail: if (root != NULL) ! ber_free_elements(root); return (-1); } --- 301,307 ---- fail: if (root != NULL) ! ober_free_elements(root); return (-1); } *************** *** 316,345 **** c.br_wbuf = NULL; ! ber = ber_add_sequence(NULL); if (page == NULL) { ! if (ber_printf_elements(ber, "ds", 50, "") == NULL) goto fail; } else { ! if (ber_printf_elements(ber, "dx", 50, page->cookie, page->cookie_len) == NULL) goto fail; } ! if ((len = ber_write_elements(&c, ber)) < 1) goto fail; ! if (ber_printf_elements(elm, "{t{sx", 2, 0, LDAP_PAGED_OID, c.br_wbuf, (size_t)len) == NULL) goto fail; ! ber_free_elements(ber); ! ber_free(&c); return len; fail: if (ber != NULL) ! ber_free_elements(ber); ! ber_free(&c); return (-1); } --- 316,345 ---- c.br_wbuf = NULL; ! ber = ober_add_sequence(NULL); if (page == NULL) { ! if (ober_printf_elements(ber, "ds", 50, "") == NULL) goto fail; } else { ! if (ober_printf_elements(ber, "dx", 50, page->cookie, page->cookie_len) == NULL) goto fail; } ! if ((len = ober_write_elements(&c, ber)) < 1) goto fail; ! if (ober_printf_elements(elm, "{t{sx", 2, 0, LDAP_PAGED_OID, c.br_wbuf, (size_t)len) == NULL) goto fail; ! ober_free_elements(ber); ! ober_free(&c); return len; fail: if (ber != NULL) ! ober_free_elements(ber); ! ober_free(&c); return (-1); } *************** *** 377,386 **** } if (EVBUFFER_LENGTH(ldap->buf) > 0) { ! ber_set_readbuf(&ldap->ber, EVBUFFER_DATA(ldap->buf), EVBUFFER_LENGTH(ldap->buf)); errno = 0; ! m->msg = ber_read_elements(&ldap->ber, NULL); if (errno != 0 && errno != ECANCELED) { goto parsefail; } --- 377,386 ---- } if (EVBUFFER_LENGTH(ldap->buf) > 0) { ! ober_set_readbuf(&ldap->ber, EVBUFFER_DATA(ldap->buf), EVBUFFER_LENGTH(ldap->buf)); errno = 0; ! m->msg = ober_read_elements(&ldap->ber, NULL); if (errno != 0 && errno != ECANCELED) { goto parsefail; } *************** *** 393,399 **** LDAP_DEBUG("message", m->msg); ! if (ber_scanf_elements(m->msg, "{ite", &msgid, &class, &type, &a) != 0) goto parsefail; m->msgid = msgid; m->message_type = type; --- 393,399 ---- LDAP_DEBUG("message", m->msg); ! if (ober_scanf_elements(m->msg, "{ite", &msgid, &class, &type, &a) != 0) goto parsefail; m->msgid = msgid; m->message_type = type; *************** *** 407,423 **** case LDAP_RES_MODRDN: case LDAP_RES_COMPARE: case LDAP_RES_SEARCH_RESULT: ! if (ber_scanf_elements(m->protocol_op, "{EeSe", &m->body.res.rescode, &m->dn, &m->body.res.diagmsg) != 0) goto parsefail; if (m->body.res.rescode == LDAP_REFERRAL) { a = m->body.res.diagmsg->be_next; ! if (ber_scanf_elements(a, "{e", &m->references) != 0) goto parsefail; } if (m->msg->be_sub) { for (ep = m->msg->be_sub; ep != NULL; ep = ep->be_next) { ! ber_scanf_elements(ep, "t", &class, &type); if (class == 2 && type == 0) m->page = aldap_parse_page_control(ep->be_sub->be_sub, ep->be_sub->be_sub->be_len); --- 407,423 ---- case LDAP_RES_MODRDN: case LDAP_RES_COMPARE: case LDAP_RES_SEARCH_RESULT: ! if (ober_scanf_elements(m->protocol_op, "{EeSe", &m->body.res.rescode, &m->dn, &m->body.res.diagmsg) != 0) goto parsefail; if (m->body.res.rescode == LDAP_REFERRAL) { a = m->body.res.diagmsg->be_next; ! if (ober_scanf_elements(a, "{e", &m->references) != 0) goto parsefail; } if (m->msg->be_sub) { for (ep = m->msg->be_sub; ep != NULL; ep = ep->be_next) { ! ober_scanf_elements(ep, "t", &class, &type); if (class == 2 && type == 0) m->page = aldap_parse_page_control(ep->be_sub->be_sub, ep->be_sub->be_sub->be_len); *************** *** 426,441 **** m->page = NULL; break; case LDAP_RES_SEARCH_ENTRY: ! if (ber_scanf_elements(m->protocol_op, "{eS{e", &m->dn, &m->body.search.attrs) != 0) goto parsefail; break; case LDAP_RES_SEARCH_REFERENCE: ! if (ber_scanf_elements(m->protocol_op, "{e", &m->references) != 0) goto parsefail; break; case LDAP_RES_EXTENDED: ! if (ber_scanf_elements(m->protocol_op, "{E", &m->body.res.rescode) != 0) { goto parsefail; } --- 426,441 ---- m->page = NULL; break; case LDAP_RES_SEARCH_ENTRY: ! if (ober_scanf_elements(m->protocol_op, "{eS{e", &m->dn, &m->body.search.attrs) != 0) goto parsefail; break; case LDAP_RES_SEARCH_REFERENCE: ! if (ober_scanf_elements(m->protocol_op, "{e", &m->references) != 0) goto parsefail; break; case LDAP_RES_EXTENDED: ! if (ober_scanf_elements(m->protocol_op, "{E", &m->body.res.rescode) != 0) { goto parsefail; } *************** *** 460,490 **** struct aldap_page_control *page; b.br_wbuf = NULL; ! ber_scanf_elements(control, "ss", &oid, &encoded); ! ber_set_readbuf(&b, encoded, control->be_next->be_len); ! elm = ber_read_elements(&b, NULL); if ((page = malloc(sizeof(struct aldap_page_control))) == NULL) { if (elm != NULL) ! ber_free_elements(elm); ! ber_free(&b); return NULL; } ! ber_scanf_elements(elm->be_sub, "is", &page->size, &s); page->cookie_len = elm->be_sub->be_next->be_len; if ((page->cookie = malloc(page->cookie_len)) == NULL) { if (elm != NULL) ! ber_free_elements(elm); ! ber_free(&b); free(page); return NULL; } memcpy(page->cookie, s, page->cookie_len); ! ber_free_elements(elm); ! ber_free(&b); return page; } --- 460,490 ---- struct aldap_page_control *page; b.br_wbuf = NULL; ! ober_scanf_elements(control, "ss", &oid, &encoded); ! ober_set_readbuf(&b, encoded, control->be_next->be_len); ! elm = ober_read_elements(&b, NULL); if ((page = malloc(sizeof(struct aldap_page_control))) == NULL) { if (elm != NULL) ! ober_free_elements(elm); ! ober_free(&b); return NULL; } ! ober_scanf_elements(elm->be_sub, "is", &page->size, &s); page->cookie_len = elm->be_sub->be_next->be_len; if ((page->cookie = malloc(page->cookie_len)) == NULL) { if (elm != NULL) ! ober_free_elements(elm); ! ober_free(&b); free(page); return NULL; } memcpy(page->cookie, s, page->cookie_len); ! ober_free_elements(elm); ! ober_free(&b); return page; } *************** *** 499,505 **** aldap_freemsg(struct aldap_message *msg) { if (msg->msg) ! ber_free_elements(msg->msg); free(msg); } --- 499,505 ---- aldap_freemsg(struct aldap_message *msg) { if (msg->msg) ! ober_free_elements(msg->msg); free(msg); } *************** *** 517,523 **** if (msg->dn == NULL) return NULL; ! if (ber_get_string(msg->dn, &dn) == -1) return NULL; return utoa(dn); --- 517,523 ---- if (msg->dn == NULL) return NULL; ! if (ober_get_string(msg->dn, &dn) == -1) return NULL; return utoa(dn); *************** *** 553,559 **** if (msg->body.res.diagmsg == NULL) return NULL; ! if (ber_get_string(msg->body.res.diagmsg, &s) == -1) return NULL; return utoa(s); --- 553,559 ---- if (msg->body.res.diagmsg == NULL) return NULL; ! if (ober_get_string(msg->body.res.diagmsg, &s) == -1) return NULL; return utoa(s); *************** *** 569,575 **** return (-1); for (i = 0, a = msg->body.search.attrs; ! a != NULL && ber_get_eoc(a) != 0; i++, a = a->be_next) ; --- 569,575 ---- return (-1); for (i = 0, a = msg->body.search.attrs; ! a != NULL && ober_get_eoc(a) != 0; i++, a = a->be_next) ; *************** *** 587,593 **** if (msg->body.search.attrs == NULL) goto fail; ! if (ber_scanf_elements(msg->body.search.attrs, "{s(e)}e", &key, &b, &c) != 0) goto fail; --- 587,593 ---- if (msg->body.search.attrs == NULL) goto fail; ! if (ober_scanf_elements(msg->body.search.attrs, "{s(e)}e", &key, &b, &c) != 0) goto fail; *************** *** 619,628 **** LDAP_DEBUG("attr", msg->body.search.iter); ! if (ber_get_eoc(msg->body.search.iter) == 0) goto notfound; ! if (ber_scanf_elements(msg->body.search.iter, "{s(e)}e", &key, &a, &b) != 0) goto fail; --- 619,628 ---- LDAP_DEBUG("attr", msg->body.search.iter); ! if (ober_get_eoc(msg->body.search.iter) == 0) goto notfound; ! if (ober_scanf_elements(msg->body.search.iter, "{s(e)}e", &key, &a, &b) != 0) goto fail; *************** *** 658,666 **** for (a = msg->body.search.attrs;;) { if (a == NULL) goto notfound; ! if (ber_get_eoc(a) == 0) goto notfound; ! if (ber_scanf_elements(a, "{s(e", &descr, &b) != 0) goto fail; if (strcasecmp(descr, inkey) == 0) goto attrfound; --- 658,666 ---- for (a = msg->body.search.attrs;;) { if (a == NULL) goto notfound; ! if (ober_get_eoc(a) == 0) goto notfound; ! if (ober_scanf_elements(a, "{s(e", &descr, &b) != 0) goto fail; if (strcasecmp(descr, inkey) == 0) goto attrfound; *************** *** 864,870 **** for (a = elm, i = 0; a != NULL && a->be_type == BER_TYPE_OCTETSTRING; a = a->be_next, i++) ! (void) ber_get_ostring(a, &(ret->str[i])); return ret; } --- 864,870 ---- for (a = elm, i = 0; a != NULL && a->be_type == BER_TYPE_OCTETSTRING; a = a->be_next, i++) ! (void) ober_get_ostring(a, &(ret->str[i])); return ret; } *************** *** 893,900 **** return (NULL); if (*cp != '\0') { ! ber_free_elements(elm); ! ber_link_elements(ber, NULL); errno = EINVAL; return (NULL); } --- 893,900 ---- return (NULL); if (*cp != '\0') { ! ober_free_elements(elm); ! ober_link_elements(ber, NULL); errno = EINVAL; return (NULL); } *************** *** 941,950 **** else type = LDAP_FILT_OR; ! if ((elm = ber_add_set(prev)) == NULL) goto callfail; root = elm; ! ber_set_header(elm, BER_CLASS_CONTEXT, type); if (*++cp != '(') /* opening `(` of filter */ goto syntaxfail; --- 941,950 ---- else type = LDAP_FILT_OR; ! if ((elm = ober_add_set(prev)) == NULL) goto callfail; root = elm; ! ober_set_header(elm, BER_CLASS_CONTEXT, type); if (*++cp != '(') /* opening `(` of filter */ goto syntaxfail; *************** *** 960,968 **** break; case '!': /* NOT */ ! if ((root = ber_add_sequence(prev)) == NULL) goto callfail; ! ber_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_NOT); cp++; /* now points to sub-filter */ if ((elm = ldap_do_parse_search_filter(root, &cp)) == NULL) --- 960,968 ---- break; case '!': /* NOT */ ! if ((root = ober_add_sequence(prev)) == NULL) goto callfail; ! ober_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_NOT); cp++; /* now points to sub-filter */ if ((elm = ldap_do_parse_search_filter(root, &cp)) == NULL) *************** *** 1004,1021 **** if (strncmp(attr_val, "*)", 2) == 0) { cp++; /* point to trailing `)` */ if ((root = ! ber_add_nstring(prev, attr_desc, len)) == NULL) goto bad; ! ber_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_PRES); break; } ! if ((root = ber_add_sequence(prev)) == NULL) goto callfail; ! ber_set_header(root, BER_CLASS_CONTEXT, type); ! if ((elm = ber_add_nstring(root, attr_desc, len)) == NULL) goto callfail; len = strcspn(attr_val, "*)"); --- 1004,1021 ---- if (strncmp(attr_val, "*)", 2) == 0) { cp++; /* point to trailing `)` */ if ((root = ! ober_add_nstring(prev, attr_desc, len)) == NULL) goto bad; ! ober_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_PRES); break; } ! if ((root = ober_add_sequence(prev)) == NULL) goto callfail; ! ober_set_header(root, BER_CLASS_CONTEXT, type); ! if ((elm = ober_add_nstring(root, attr_desc, len)) == NULL) goto callfail; len = strcspn(attr_val, "*)"); *************** *** 1030,1038 **** cp = attr_val; ! ber_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_SUBS); ! if ((elm = ber_add_sequence(elm)) == NULL) goto callfail; for (initial = 1;; cp++, initial = 0) { --- 1030,1038 ---- cp = attr_val; ! ober_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_SUBS); ! if ((elm = ober_add_sequence(elm)) == NULL) goto callfail; for (initial = 1;; cp++, initial = 0) { *************** *** 1059,1070 **** if ((parsed_val = parseval(attr_val, len)) == NULL) goto callfail; ! elm = ber_add_nstring(elm, parsed_val, strlen(parsed_val)); free(parsed_val); if (elm == NULL) goto callfail; ! ber_set_header(elm, BER_CLASS_CONTEXT, type); if (type == LDAP_FILT_SUBS_FIN) break; } --- 1059,1070 ---- if ((parsed_val = parseval(attr_val, len)) == NULL) goto callfail; ! elm = ober_add_nstring(elm, parsed_val, strlen(parsed_val)); free(parsed_val); if (elm == NULL) goto callfail; ! ober_set_header(elm, BER_CLASS_CONTEXT, type); if (type == LDAP_FILT_SUBS_FIN) break; } *************** *** 1073,1079 **** if ((parsed_val = parseval(attr_val, len)) == NULL) goto callfail; ! elm = ber_add_nstring(elm, parsed_val, strlen(parsed_val)); free(parsed_val); if (elm == NULL) goto callfail; --- 1073,1079 ---- if ((parsed_val = parseval(attr_val, len)) == NULL) goto callfail; ! elm = ober_add_nstring(elm, parsed_val, strlen(parsed_val)); free(parsed_val); if (elm == NULL) goto callfail; *************** *** 1089,1096 **** callfail: bad: if (root != NULL) ! ber_free_elements(root); ! ber_link_elements(prev, NULL); return (NULL); } --- 1089,1096 ---- callfail: bad: if (root != NULL) ! ober_free_elements(root); ! ober_link_elements(prev, NULL); return (NULL); } *************** *** 1112,1118 **** struct ber_oid o; /* calculate lengths */ ! ber_calc_len(root); switch (root->be_encoding) { case BER_TYPE_SEQUENCE: --- 1112,1118 ---- struct ber_oid o; /* calculate lengths */ ! ober_calc_len(root); switch (root->be_encoding) { case BER_TYPE_SEQUENCE: *************** *** 1242,1269 **** switch (root->be_encoding) { case BER_TYPE_BOOLEAN: ! if (ber_get_boolean(root, &d) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "%s(%d)\n", d ? "true" : "false", d); break; case BER_TYPE_INTEGER: ! if (ber_get_integer(root, &v) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "value %lld\n", v); break; case BER_TYPE_ENUMERATED: ! if (ber_get_enumerated(root, &v) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "value %lld\n", v); break; case BER_TYPE_BITSTRING: ! if (ber_get_bitstring(root, (void *)&buf, &len) == -1) { fprintf(stderr, "\n"); break; } --- 1242,1269 ---- switch (root->be_encoding) { case BER_TYPE_BOOLEAN: ! if (ober_get_boolean(root, &d) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "%s(%d)\n", d ? "true" : "false", d); break; case BER_TYPE_INTEGER: ! if (ober_get_integer(root, &v) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "value %lld\n", v); break; case BER_TYPE_ENUMERATED: ! if (ober_get_enumerated(root, &v) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "value %lld\n", v); break; case BER_TYPE_BITSTRING: ! if (ober_get_bitstring(root, (void *)&buf, &len) == -1) { fprintf(stderr, "\n"); break; } *************** *** 1273,1286 **** fprintf(stderr, "\n"); break; case BER_TYPE_OBJECT: ! if (ber_get_oid(root, &o) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "\n"); break; case BER_TYPE_OCTETSTRING: ! if (ber_get_nstring(root, (void *)&buf, &len) == -1) { fprintf(stderr, "\n"); break; } --- 1273,1286 ---- fprintf(stderr, "\n"); break; case BER_TYPE_OBJECT: ! if (ober_get_oid(root, &o) == -1) { fprintf(stderr, "\n"); break; } fprintf(stderr, "\n"); break; case BER_TYPE_OCTETSTRING: ! if (ober_get_nstring(root, (void *)&buf, &len) == -1) { fprintf(stderr, "\n"); break; }