Fix multi-byte tag parsing

This commit is contained in:
Howard Chu 2003-04-24 03:59:45 +00:00
parent bcf7ab26e4
commit b6111d793e

View file

@ -530,8 +530,10 @@ ber_get_next(
for (i=1; (char *)p<ber->ber_rwptr; i++,p++) {
tag <<= 8;
tag |= *p;
if (!(*p & LBER_MORE_TAG_MASK))
if (!(*p & LBER_MORE_TAG_MASK)) {
p++;
break;
}
/* Is the tag too big? */
if (i == sizeof(ber_tag_t)-1) {
errno = ERANGE;
@ -542,7 +544,6 @@ ber_get_next(
if ((char *)p == ber->ber_rwptr) {
return LBER_DEFAULT;
}
p++;
}
ber->ber_tag = tag;
ber->ber_ptr = (char *)p;