version 1.17, 2018/07/31 19:38:09 |
version 1.18, 2018/08/03 01:51:28 |
|
|
long long val = 0; |
long long val = 0; |
struct ber_element *next; |
struct ber_element *next; |
unsigned int type; |
unsigned int type; |
int i, class, cstruct; |
int i, class, cstruct, elements = 0; |
ssize_t len, r, totlen = 0; |
ssize_t len, r, totlen = 0; |
u_char c; |
u_char c; |
|
|
|
|
} |
} |
next = elm->be_sub; |
next = elm->be_sub; |
while (len > 0) { |
while (len > 0) { |
|
/* |
|
* Prevent stack overflow from excessive recursion |
|
* depth in ber_free_elements(). |
|
*/ |
|
if (elements >= BER_MAX_SEQ_ELEMENTS) { |
|
errno = ERANGE; |
|
return -1; |
|
} |
r = ber_read_element(ber, next); |
r = ber_read_element(ber, next); |
if (r == -1) |
if (r == -1) |
return -1; |
return -1; |
|
elements++; |
len -= r; |
len -= r; |
if (len > 0 && next->be_next == NULL) { |
if (len > 0 && next->be_next == NULL) { |
if ((next->be_next = ber_get_element(0)) == |
if ((next->be_next = ber_get_element(0)) == |