aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/ts
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2016-07-21 15:24:16 +0100
committerDr. Stephen Henson <steve@openssl.org>2016-07-22 15:15:17 +0100
commit0ed26acce328ec16a3aa635f1ca37365e8c7403a (patch)
treea4a634f017e5d9061fb55daccf8bc6f0adf26048 /crypto/ts
parentd0c4415de5eaa555ead6eb99660e46410b45e181 (diff)
downloadopenssl-0ed26acce328ec16a3aa635f1ca37365e8c7403a.tar.gz
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>
Diffstat (limited to 'crypto/ts')
-rw-r--r--crypto/ts/ts_lib.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/crypto/ts/ts_lib.c b/crypto/ts/ts_lib.c
index bde1bd75e4..e18f1f3f7e 100644
--- a/crypto/ts/ts_lib.c
+++ b/crypto/ts/ts_lib.c
@@ -40,9 +40,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;
}