version 1.8, 2019/09/10 14:35:32 |
version 1.9, 2019/10/24 12:39:26 |
|
|
tls_free(al->tls); |
tls_free(al->tls); |
} |
} |
close(al->fd); |
close(al->fd); |
ber_free(&al->ber); |
ober_free(&al->ber); |
evbuffer_free(al->buf); |
evbuffer_free(al->buf); |
free(al); |
free(al); |
|
|
|
|
return NULL; |
return NULL; |
a->buf = evbuffer_new(); |
a->buf = evbuffer_new(); |
a->fd = fd; |
a->fd = fd; |
ber_set_application(&a->ber, aldap_application); |
ober_set_application(&a->ber, aldap_application); |
|
|
return a; |
return a; |
} |
} |
|
|
size_t len, done; |
size_t len, done; |
ssize_t error, wrote; |
ssize_t error, wrote; |
|
|
len = ber_calc_len(root); |
len = ober_calc_len(root); |
error = ber_write_elements(&ldap->ber, root); |
error = ober_write_elements(&ldap->ber, root); |
ber_free_elements(root); |
ober_free_elements(root); |
if (error == -1) |
if (error == -1) |
return -1; |
return -1; |
|
|
ber_get_writebuf(&ldap->ber, &ptr); |
ober_get_writebuf(&ldap->ber, &ptr); |
done = 0; |
done = 0; |
data = ptr; |
data = ptr; |
while (len > 0) { |
while (len > 0) { |
|
|
{ |
{ |
struct ber_element *root = NULL, *ber; |
struct ber_element *root = NULL, *ber; |
|
|
if ((root = ber_add_sequence(NULL)) == NULL) |
if ((root = ober_add_sequence(NULL)) == NULL) |
goto fail; |
goto fail; |
|
|
ber = ber_printf_elements(root, "d{tst", ++ldap->msgid, BER_CLASS_APP, |
ber = ober_printf_elements(root, "d{tst", ++ldap->msgid, BER_CLASS_APP, |
LDAP_REQ_EXTENDED, LDAP_STARTTLS_OID, BER_CLASS_CONTEXT, 0); |
LDAP_REQ_EXTENDED, LDAP_STARTTLS_OID, BER_CLASS_CONTEXT, 0); |
if (ber == NULL) { |
if (ber == NULL) { |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
|
|
return (ldap->msgid); |
return (ldap->msgid); |
fail: |
fail: |
if (root != NULL) |
if (root != NULL) |
ber_free_elements(root); |
ober_free_elements(root); |
|
|
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
return (-1); |
return (-1); |
|
|
if (bindcred == NULL) |
if (bindcred == NULL) |
bindcred = ""; |
bindcred = ""; |
|
|
if ((root = ber_add_sequence(NULL)) == NULL) |
if ((root = ober_add_sequence(NULL)) == NULL) |
goto fail; |
goto fail; |
|
|
elm = ber_printf_elements(root, "d{tdsst", ++ldap->msgid, BER_CLASS_APP, |
elm = ober_printf_elements(root, "d{tdsst", ++ldap->msgid, BER_CLASS_APP, |
LDAP_REQ_BIND, VERSION, binddn, bindcred, BER_CLASS_CONTEXT, |
LDAP_REQ_BIND, VERSION, binddn, bindcred, BER_CLASS_CONTEXT, |
LDAP_AUTH_SIMPLE); |
LDAP_AUTH_SIMPLE); |
if (elm == NULL) |
if (elm == NULL) |
|
|
return (ldap->msgid); |
return (ldap->msgid); |
fail: |
fail: |
if (root != NULL) |
if (root != NULL) |
ber_free_elements(root); |
ober_free_elements(root); |
|
|
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
return (-1); |
return (-1); |
|
|
{ |
{ |
struct ber_element *root = NULL, *elm; |
struct ber_element *root = NULL, *elm; |
|
|
if ((root = ber_add_sequence(NULL)) == NULL) |
if ((root = ober_add_sequence(NULL)) == NULL) |
goto fail; |
goto fail; |
elm = ber_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, |
elm = ober_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, |
LDAP_REQ_UNBIND_30); |
LDAP_REQ_UNBIND_30); |
if (elm == NULL) |
if (elm == NULL) |
goto fail; |
goto fail; |
|
|
return (ldap->msgid); |
return (ldap->msgid); |
fail: |
fail: |
if (root != NULL) |
if (root != NULL) |
ber_free_elements(root); |
ober_free_elements(root); |
|
|
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
|
|
|
|
struct ber_element *root = NULL, *ber, *c; |
struct ber_element *root = NULL, *ber, *c; |
int i; |
int i; |
|
|
if ((root = ber_add_sequence(NULL)) == NULL) |
if ((root = ober_add_sequence(NULL)) == NULL) |
goto fail; |
goto fail; |
|
|
ber = ber_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, |
ber = ober_printf_elements(root, "d{t", ++ldap->msgid, BER_CLASS_APP, |
LDAP_REQ_SEARCH); |
LDAP_REQ_SEARCH); |
if (ber == NULL) { |
if (ber == NULL) { |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
ldap->err = ALDAP_ERR_OPERATION_FAILED; |
|
|
} |
} |
|
|
c = ber; |
c = ber; |
ber = ber_printf_elements(ber, "sEEddb", basedn, (long long)scope, |
ber = ober_printf_elements(ber, "sEEddb", basedn, (long long)scope, |
(long long)LDAP_DEREF_NEVER, sizelimit, |
(long long)LDAP_DEREF_NEVER, sizelimit, |
timelimit, typesonly); |
timelimit, typesonly); |
if (ber == NULL) { |
if (ber == NULL) { |
|
|
goto fail; |
goto fail; |
} |
} |
|
|
if ((ber = ber_add_sequence(ber)) == NULL) |
if ((ber = ober_add_sequence(ber)) == NULL) |
goto fail; |
goto fail; |
if (attrs != NULL) |
if (attrs != NULL) |
for (i = 0; attrs[i] != NULL; i++) { |
for (i = 0; attrs[i] != NULL; i++) { |
if ((ber = ber_add_string(ber, attrs[i])) == NULL) |
if ((ber = ober_add_string(ber, attrs[i])) == NULL) |
goto fail; |
goto fail; |
} |
} |
|
|
|
|
|
|
fail: |
fail: |
if (root != NULL) |
if (root != NULL) |
ber_free_elements(root); |
ober_free_elements(root); |
|
|
return (-1); |
return (-1); |
} |
} |
|
|
|
|
c.br_wbuf = NULL; |
c.br_wbuf = NULL; |
|
|
ber = ber_add_sequence(NULL); |
ber = ober_add_sequence(NULL); |
|
|
if (page == NULL) { |
if (page == NULL) { |
if (ber_printf_elements(ber, "ds", 50, "") == NULL) |
if (ober_printf_elements(ber, "ds", 50, "") == NULL) |
goto fail; |
goto fail; |
} else { |
} else { |
if (ber_printf_elements(ber, "dx", 50, page->cookie, |
if (ober_printf_elements(ber, "dx", 50, page->cookie, |
page->cookie_len) == NULL) |
page->cookie_len) == NULL) |
goto fail; |
goto fail; |
} |
} |
|
|
if ((len = ber_write_elements(&c, ber)) < 1) |
if ((len = ober_write_elements(&c, ber)) < 1) |
goto fail; |
goto fail; |
if (ber_printf_elements(elm, "{t{sx", 2, 0, LDAP_PAGED_OID, |
if (ober_printf_elements(elm, "{t{sx", 2, 0, LDAP_PAGED_OID, |
c.br_wbuf, (size_t)len) == NULL) |
c.br_wbuf, (size_t)len) == NULL) |
goto fail; |
goto fail; |
|
|
ber_free_elements(ber); |
ober_free_elements(ber); |
ber_free(&c); |
ober_free(&c); |
return len; |
return len; |
fail: |
fail: |
if (ber != NULL) |
if (ber != NULL) |
ber_free_elements(ber); |
ober_free_elements(ber); |
ber_free(&c); |
ober_free(&c); |
|
|
return (-1); |
return (-1); |
} |
} |
|
|
} |
} |
|
|
if (EVBUFFER_LENGTH(ldap->buf) > 0) { |
if (EVBUFFER_LENGTH(ldap->buf) > 0) { |
ber_set_readbuf(&ldap->ber, EVBUFFER_DATA(ldap->buf), |
ober_set_readbuf(&ldap->ber, EVBUFFER_DATA(ldap->buf), |
EVBUFFER_LENGTH(ldap->buf)); |
EVBUFFER_LENGTH(ldap->buf)); |
errno = 0; |
errno = 0; |
m->msg = ber_read_elements(&ldap->ber, NULL); |
m->msg = ober_read_elements(&ldap->ber, NULL); |
if (errno != 0 && errno != ECANCELED) { |
if (errno != 0 && errno != ECANCELED) { |
goto parsefail; |
goto parsefail; |
} |
} |
|
|
|
|
LDAP_DEBUG("message", m->msg); |
LDAP_DEBUG("message", m->msg); |
|
|
if (ber_scanf_elements(m->msg, "{ite", &msgid, &class, &type, &a) != 0) |
if (ober_scanf_elements(m->msg, "{ite", &msgid, &class, &type, &a) != 0) |
goto parsefail; |
goto parsefail; |
m->msgid = msgid; |
m->msgid = msgid; |
m->message_type = type; |
m->message_type = type; |
|
|
case LDAP_RES_MODRDN: |
case LDAP_RES_MODRDN: |
case LDAP_RES_COMPARE: |
case LDAP_RES_COMPARE: |
case LDAP_RES_SEARCH_RESULT: |
case LDAP_RES_SEARCH_RESULT: |
if (ber_scanf_elements(m->protocol_op, "{EeSe", |
if (ober_scanf_elements(m->protocol_op, "{EeSe", |
&m->body.res.rescode, &m->dn, &m->body.res.diagmsg) != 0) |
&m->body.res.rescode, &m->dn, &m->body.res.diagmsg) != 0) |
goto parsefail; |
goto parsefail; |
if (m->body.res.rescode == LDAP_REFERRAL) { |
if (m->body.res.rescode == LDAP_REFERRAL) { |
a = m->body.res.diagmsg->be_next; |
a = m->body.res.diagmsg->be_next; |
if (ber_scanf_elements(a, "{e", &m->references) != 0) |
if (ober_scanf_elements(a, "{e", &m->references) != 0) |
goto parsefail; |
goto parsefail; |
} |
} |
if (m->msg->be_sub) { |
if (m->msg->be_sub) { |
for (ep = m->msg->be_sub; ep != NULL; ep = ep->be_next) { |
for (ep = m->msg->be_sub; ep != NULL; ep = ep->be_next) { |
ber_scanf_elements(ep, "t", &class, &type); |
ober_scanf_elements(ep, "t", &class, &type); |
if (class == 2 && type == 0) |
if (class == 2 && type == 0) |
m->page = aldap_parse_page_control(ep->be_sub->be_sub, |
m->page = aldap_parse_page_control(ep->be_sub->be_sub, |
ep->be_sub->be_sub->be_len); |
ep->be_sub->be_sub->be_len); |
|
|
m->page = NULL; |
m->page = NULL; |
break; |
break; |
case LDAP_RES_SEARCH_ENTRY: |
case LDAP_RES_SEARCH_ENTRY: |
if (ber_scanf_elements(m->protocol_op, "{eS{e", &m->dn, |
if (ober_scanf_elements(m->protocol_op, "{eS{e", &m->dn, |
&m->body.search.attrs) != 0) |
&m->body.search.attrs) != 0) |
goto parsefail; |
goto parsefail; |
break; |
break; |
case LDAP_RES_SEARCH_REFERENCE: |
case LDAP_RES_SEARCH_REFERENCE: |
if (ber_scanf_elements(m->protocol_op, "{e", &m->references) != 0) |
if (ober_scanf_elements(m->protocol_op, "{e", &m->references) != 0) |
goto parsefail; |
goto parsefail; |
break; |
break; |
case LDAP_RES_EXTENDED: |
case LDAP_RES_EXTENDED: |
if (ber_scanf_elements(m->protocol_op, "{E", |
if (ober_scanf_elements(m->protocol_op, "{E", |
&m->body.res.rescode) != 0) { |
&m->body.res.rescode) != 0) { |
goto parsefail; |
goto parsefail; |
} |
} |
|
|
struct aldap_page_control *page; |
struct aldap_page_control *page; |
|
|
b.br_wbuf = NULL; |
b.br_wbuf = NULL; |
ber_scanf_elements(control, "ss", &oid, &encoded); |
ober_scanf_elements(control, "ss", &oid, &encoded); |
ber_set_readbuf(&b, encoded, control->be_next->be_len); |
ober_set_readbuf(&b, encoded, control->be_next->be_len); |
elm = ber_read_elements(&b, NULL); |
elm = ober_read_elements(&b, NULL); |
|
|
if ((page = malloc(sizeof(struct aldap_page_control))) == NULL) { |
if ((page = malloc(sizeof(struct aldap_page_control))) == NULL) { |
if (elm != NULL) |
if (elm != NULL) |
ber_free_elements(elm); |
ober_free_elements(elm); |
ber_free(&b); |
ober_free(&b); |
return NULL; |
return NULL; |
} |
} |
|
|
ber_scanf_elements(elm->be_sub, "is", &page->size, &s); |
ober_scanf_elements(elm->be_sub, "is", &page->size, &s); |
page->cookie_len = elm->be_sub->be_next->be_len; |
page->cookie_len = elm->be_sub->be_next->be_len; |
|
|
if ((page->cookie = malloc(page->cookie_len)) == NULL) { |
if ((page->cookie = malloc(page->cookie_len)) == NULL) { |
if (elm != NULL) |
if (elm != NULL) |
ber_free_elements(elm); |
ober_free_elements(elm); |
ber_free(&b); |
ober_free(&b); |
free(page); |
free(page); |
return NULL; |
return NULL; |
} |
} |
memcpy(page->cookie, s, page->cookie_len); |
memcpy(page->cookie, s, page->cookie_len); |
|
|
ber_free_elements(elm); |
ober_free_elements(elm); |
ber_free(&b); |
ober_free(&b); |
return page; |
return page; |
} |
} |
|
|
|
|
aldap_freemsg(struct aldap_message *msg) |
aldap_freemsg(struct aldap_message *msg) |
{ |
{ |
if (msg->msg) |
if (msg->msg) |
ber_free_elements(msg->msg); |
ober_free_elements(msg->msg); |
free(msg); |
free(msg); |
} |
} |
|
|
|
|
if (msg->dn == NULL) |
if (msg->dn == NULL) |
return NULL; |
return NULL; |
|
|
if (ber_get_string(msg->dn, &dn) == -1) |
if (ober_get_string(msg->dn, &dn) == -1) |
return NULL; |
return NULL; |
|
|
return utoa(dn); |
return utoa(dn); |
|
|
if (msg->body.res.diagmsg == NULL) |
if (msg->body.res.diagmsg == NULL) |
return NULL; |
return NULL; |
|
|
if (ber_get_string(msg->body.res.diagmsg, &s) == -1) |
if (ober_get_string(msg->body.res.diagmsg, &s) == -1) |
return NULL; |
return NULL; |
|
|
return utoa(s); |
return utoa(s); |
|
|
return (-1); |
return (-1); |
|
|
for (i = 0, a = msg->body.search.attrs; |
for (i = 0, a = msg->body.search.attrs; |
a != NULL && ber_get_eoc(a) != 0; |
a != NULL && ober_get_eoc(a) != 0; |
i++, a = a->be_next) |
i++, a = a->be_next) |
; |
; |
|
|
|
|
if (msg->body.search.attrs == NULL) |
if (msg->body.search.attrs == NULL) |
goto fail; |
goto fail; |
|
|
if (ber_scanf_elements(msg->body.search.attrs, "{s(e)}e", |
if (ober_scanf_elements(msg->body.search.attrs, "{s(e)}e", |
&key, &b, &c) != 0) |
&key, &b, &c) != 0) |
goto fail; |
goto fail; |
|
|
|
|
|
|
LDAP_DEBUG("attr", msg->body.search.iter); |
LDAP_DEBUG("attr", msg->body.search.iter); |
|
|
if (ber_get_eoc(msg->body.search.iter) == 0) |
if (ober_get_eoc(msg->body.search.iter) == 0) |
goto notfound; |
goto notfound; |
|
|
if (ber_scanf_elements(msg->body.search.iter, "{s(e)}e", &key, &a, &b) |
if (ober_scanf_elements(msg->body.search.iter, "{s(e)}e", &key, &a, &b) |
!= 0) |
!= 0) |
goto fail; |
goto fail; |
|
|
|
|
for (a = msg->body.search.attrs;;) { |
for (a = msg->body.search.attrs;;) { |
if (a == NULL) |
if (a == NULL) |
goto notfound; |
goto notfound; |
if (ber_get_eoc(a) == 0) |
if (ober_get_eoc(a) == 0) |
goto notfound; |
goto notfound; |
if (ber_scanf_elements(a, "{s(e", &descr, &b) != 0) |
if (ober_scanf_elements(a, "{s(e", &descr, &b) != 0) |
goto fail; |
goto fail; |
if (strcasecmp(descr, inkey) == 0) |
if (strcasecmp(descr, inkey) == 0) |
goto attrfound; |
goto attrfound; |
|
|
|
|
for (a = elm, i = 0; a != NULL && a->be_type == BER_TYPE_OCTETSTRING; |
for (a = elm, i = 0; a != NULL && a->be_type == BER_TYPE_OCTETSTRING; |
a = a->be_next, i++) |
a = a->be_next, i++) |
(void) ber_get_ostring(a, &(ret->str[i])); |
(void) ober_get_ostring(a, &(ret->str[i])); |
|
|
return ret; |
return ret; |
} |
} |
|
|
return (NULL); |
return (NULL); |
|
|
if (*cp != '\0') { |
if (*cp != '\0') { |
ber_free_elements(elm); |
ober_free_elements(elm); |
ber_link_elements(ber, NULL); |
ober_link_elements(ber, NULL); |
errno = EINVAL; |
errno = EINVAL; |
return (NULL); |
return (NULL); |
} |
} |
|
|
else |
else |
type = LDAP_FILT_OR; |
type = LDAP_FILT_OR; |
|
|
if ((elm = ber_add_set(prev)) == NULL) |
if ((elm = ober_add_set(prev)) == NULL) |
goto callfail; |
goto callfail; |
root = elm; |
root = elm; |
ber_set_header(elm, BER_CLASS_CONTEXT, type); |
ober_set_header(elm, BER_CLASS_CONTEXT, type); |
|
|
if (*++cp != '(') /* opening `(` of filter */ |
if (*++cp != '(') /* opening `(` of filter */ |
goto syntaxfail; |
goto syntaxfail; |
|
|
break; |
break; |
|
|
case '!': /* NOT */ |
case '!': /* NOT */ |
if ((root = ber_add_sequence(prev)) == NULL) |
if ((root = ober_add_sequence(prev)) == NULL) |
goto callfail; |
goto callfail; |
ber_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_NOT); |
ober_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_NOT); |
|
|
cp++; /* now points to sub-filter */ |
cp++; /* now points to sub-filter */ |
if ((elm = ldap_do_parse_search_filter(root, &cp)) == NULL) |
if ((elm = ldap_do_parse_search_filter(root, &cp)) == NULL) |
|
|
if (strncmp(attr_val, "*)", 2) == 0) { |
if (strncmp(attr_val, "*)", 2) == 0) { |
cp++; /* point to trailing `)` */ |
cp++; /* point to trailing `)` */ |
if ((root = |
if ((root = |
ber_add_nstring(prev, attr_desc, len)) == NULL) |
ober_add_nstring(prev, attr_desc, len)) == NULL) |
goto bad; |
goto bad; |
|
|
ber_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_PRES); |
ober_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_PRES); |
break; |
break; |
} |
} |
|
|
if ((root = ber_add_sequence(prev)) == NULL) |
if ((root = ober_add_sequence(prev)) == NULL) |
goto callfail; |
goto callfail; |
ber_set_header(root, BER_CLASS_CONTEXT, type); |
ober_set_header(root, BER_CLASS_CONTEXT, type); |
|
|
if ((elm = ber_add_nstring(root, attr_desc, len)) == NULL) |
if ((elm = ober_add_nstring(root, attr_desc, len)) == NULL) |
goto callfail; |
goto callfail; |
|
|
len = strcspn(attr_val, "*)"); |
len = strcspn(attr_val, "*)"); |
|
|
|
|
cp = attr_val; |
cp = attr_val; |
|
|
ber_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_SUBS); |
ober_set_header(root, BER_CLASS_CONTEXT, LDAP_FILT_SUBS); |
|
|
if ((elm = ber_add_sequence(elm)) == NULL) |
if ((elm = ober_add_sequence(elm)) == NULL) |
goto callfail; |
goto callfail; |
|
|
for (initial = 1;; cp++, initial = 0) { |
for (initial = 1;; cp++, initial = 0) { |
|
|
if ((parsed_val = parseval(attr_val, len)) == |
if ((parsed_val = parseval(attr_val, len)) == |
NULL) |
NULL) |
goto callfail; |
goto callfail; |
elm = ber_add_nstring(elm, parsed_val, |
elm = ober_add_nstring(elm, parsed_val, |
strlen(parsed_val)); |
strlen(parsed_val)); |
free(parsed_val); |
free(parsed_val); |
if (elm == NULL) |
if (elm == NULL) |
goto callfail; |
goto callfail; |
ber_set_header(elm, BER_CLASS_CONTEXT, type); |
ober_set_header(elm, BER_CLASS_CONTEXT, type); |
if (type == LDAP_FILT_SUBS_FIN) |
if (type == LDAP_FILT_SUBS_FIN) |
break; |
break; |
} |
} |
|
|
|
|
if ((parsed_val = parseval(attr_val, len)) == NULL) |
if ((parsed_val = parseval(attr_val, len)) == NULL) |
goto callfail; |
goto callfail; |
elm = ber_add_nstring(elm, parsed_val, strlen(parsed_val)); |
elm = ober_add_nstring(elm, parsed_val, strlen(parsed_val)); |
free(parsed_val); |
free(parsed_val); |
if (elm == NULL) |
if (elm == NULL) |
goto callfail; |
goto callfail; |
|
|
callfail: |
callfail: |
bad: |
bad: |
if (root != NULL) |
if (root != NULL) |
ber_free_elements(root); |
ober_free_elements(root); |
ber_link_elements(prev, NULL); |
ober_link_elements(prev, NULL); |
return (NULL); |
return (NULL); |
} |
} |
|
|
|
|
struct ber_oid o; |
struct ber_oid o; |
|
|
/* calculate lengths */ |
/* calculate lengths */ |
ber_calc_len(root); |
ober_calc_len(root); |
|
|
switch (root->be_encoding) { |
switch (root->be_encoding) { |
case BER_TYPE_SEQUENCE: |
case BER_TYPE_SEQUENCE: |
|
|
|
|
switch (root->be_encoding) { |
switch (root->be_encoding) { |
case BER_TYPE_BOOLEAN: |
case BER_TYPE_BOOLEAN: |
if (ber_get_boolean(root, &d) == -1) { |
if (ober_get_boolean(root, &d) == -1) { |
fprintf(stderr, "<INVALID>\n"); |
fprintf(stderr, "<INVALID>\n"); |
break; |
break; |
} |
} |
fprintf(stderr, "%s(%d)\n", d ? "true" : "false", d); |
fprintf(stderr, "%s(%d)\n", d ? "true" : "false", d); |
break; |
break; |
case BER_TYPE_INTEGER: |
case BER_TYPE_INTEGER: |
if (ber_get_integer(root, &v) == -1) { |
if (ober_get_integer(root, &v) == -1) { |
fprintf(stderr, "<INVALID>\n"); |
fprintf(stderr, "<INVALID>\n"); |
break; |
break; |
} |
} |
fprintf(stderr, "value %lld\n", v); |
fprintf(stderr, "value %lld\n", v); |
break; |
break; |
case BER_TYPE_ENUMERATED: |
case BER_TYPE_ENUMERATED: |
if (ber_get_enumerated(root, &v) == -1) { |
if (ober_get_enumerated(root, &v) == -1) { |
fprintf(stderr, "<INVALID>\n"); |
fprintf(stderr, "<INVALID>\n"); |
break; |
break; |
} |
} |
fprintf(stderr, "value %lld\n", v); |
fprintf(stderr, "value %lld\n", v); |
break; |
break; |
case BER_TYPE_BITSTRING: |
case BER_TYPE_BITSTRING: |
if (ber_get_bitstring(root, (void *)&buf, &len) == -1) { |
if (ober_get_bitstring(root, (void *)&buf, &len) == -1) { |
fprintf(stderr, "<INVALID>\n"); |
fprintf(stderr, "<INVALID>\n"); |
break; |
break; |
} |
} |
|
|
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
break; |
break; |
case BER_TYPE_OBJECT: |
case BER_TYPE_OBJECT: |
if (ber_get_oid(root, &o) == -1) { |
if (ober_get_oid(root, &o) == -1) { |
fprintf(stderr, "<INVALID>\n"); |
fprintf(stderr, "<INVALID>\n"); |
break; |
break; |
} |
} |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
break; |
break; |
case BER_TYPE_OCTETSTRING: |
case BER_TYPE_OCTETSTRING: |
if (ber_get_nstring(root, (void *)&buf, &len) == -1) { |
if (ober_get_nstring(root, (void *)&buf, &len) == -1) { |
fprintf(stderr, "<INVALID>\n"); |
fprintf(stderr, "<INVALID>\n"); |
break; |
break; |
} |
} |