diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2016-07-21 15:24:16 +0100 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2016-07-22 15:17:38 +0100 |
commit | 6adf409c7432b90c06d9890787fe56c48f2a16e7 (patch) | |
tree | 8b2eb2e61149aa0265a0180360c4dce3ea0c1710 | |
parent | beaa2c03e70b523f006003a489497a18b4d53e6c (diff) |
Fix OOB read in TS_OBJ_print_bio().
TS_OBJ_print_bio() misuses OBJ_txt2obj: it should print the result
as a null terminated buffer. The length value returned is the total
length the complete text reprsentation would need not the amount of
data written.
CVE-2016-2180
Thanks to Shi Lei for reporting this bug.
Reviewed-by: Matt Caswell <matt@openssl.org>
(cherry picked from commit 0ed26acce328ec16a3aa635f1ca37365e8c7403a)
-rw-r--r-- | crypto/ts/ts_lib.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/crypto/ts/ts_lib.c b/crypto/ts/ts_lib.c index c51538a17f..e0f1063537 100644 --- a/crypto/ts/ts_lib.c +++ b/crypto/ts/ts_lib.c @@ -90,9 +90,8 @@ int TS_OBJ_print_bio(BIO *bio, const ASN1_OBJECT *obj) { char obj_txt[128]; - int len = OBJ_obj2txt(obj_txt, sizeof(obj_txt), obj, 0); - BIO_write(bio, obj_txt, len); - BIO_write(bio, "\n", 1); + OBJ_obj2txt(obj_txt, sizeof(obj_txt), obj, 0); + BIO_printf(bio, "%s\n", obj_txt); return 1; } |