summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2006-02-15 15:04:42 +0000
committerDr. Stephen Henson <steve@openssl.org>2006-02-15 15:04:42 +0000
commit9c339a722713740cc3de3c618398a477a0b56503 (patch)
treed74da6fc5696a613c7d192ddb7273b29db717ef2
parente7a8b47f1ad16d47d20aef886ddfa18c1c62385a (diff)
Fix from stable branch.
-rw-r--r--crypto/objects/obj_dat.c24
1 files changed, 20 insertions, 4 deletions
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;
}