diff options
Diffstat (limited to 'src/lib/krb5/asn.1/asn1_get.c')
-rw-r--r-- | src/lib/krb5/asn.1/asn1_get.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/src/lib/krb5/asn.1/asn1_get.c b/src/lib/krb5/asn.1/asn1_get.c index 20334a2..90f5dd9 100644 --- a/src/lib/krb5/asn.1/asn1_get.c +++ b/src/lib/krb5/asn.1/asn1_get.c @@ -42,12 +42,6 @@ asn1_get_tag_indef(buf, class, construction, tagnum, retlen, indef) *tagnum = ASN1_TAGNUM_CEILING; return 0; } - /* Allow for the indefinite encoding */ - if ( !*(buf->next) && !*(buf->next + 1)) { - buf->next += 2; - *tagnum = ASN1_TAGNUM_CEILING; - return 0; - } retval = asn1_get_id(buf,class,construction,tagnum); if(retval) return retval; retval = asn1_get_length(buf,retlen,indef); @@ -63,7 +57,6 @@ asn1_get_tag(buf, class, construction, tagnum, retlen) asn1_tagnum *tagnum; int *retlen; { - asn1_error_code retval; int indef; return asn1_get_tag_indef(buf, class, construction, tagnum, retlen, &indef); @@ -149,6 +142,8 @@ asn1_error_code asn1_get_length(buf, retlen, indef) if(retval) return retval; len = (len<<8) + (int)o; } + if (len < 0) + return ASN1_OVERRUN; if (indef != NULL && !len) *indef = 1; if(retlen != NULL) *retlen = len; |