From: Dr. Stephen Henson Date: Thu, 21 Jul 2016 14:24:16 +0000 (+0100) Subject: Fix OOB read in TS_OBJ_print_bio(). X-Git-Tag: OpenSSL_1_1_0-pre6~118 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0ed26acce328ec16a3aa635f1ca37365e8c7403a;p=oweals%2Fopenssl.git 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 --- 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; }