From: Dr. Stephen Henson Date: Wed, 15 Feb 2006 15:03:47 +0000 (+0000) Subject: Fix OBJ_obj2txt() for large OIDs. X-Git-Tag: OpenSSL_0_9_8b~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=38a3178185ac0d755220fac6a1f8166062fb6bb9;p=openssl Fix OBJ_obj2txt() for large OIDs. --- diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index 9c61829c77..7a95c7795a 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -546,11 +546,19 @@ int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name) buf_len--; } BUF_strlcpy(buf,bndec,buf_len); - buf += i; + if (i > buf_len) + { + buf += buf_len; + buf_len = 0; + } + else + { + buf+=i; + buf_len-=i; + } } n++; n += i; - buf_len -= i; OPENSSL_free(bndec); } else @@ -560,9 +568,17 @@ int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name) if (buf && (buf_len > 0)) { BUF_strlcpy(buf,tbuf,buf_len); - buf+=i; + if (i > buf_len) + { + buf += buf_len; + buf_len = 0; + } + else + { + buf+=i; + buf_len-=i; + } } - buf_len-=i; n+=i; l=0; }