CVSROOT: /cvs Module name: src Changes by: t...@cvs.openbsd.org 2022/08/31 07:01:01
Modified files: lib/libcrypto/dsa: dsa_lib.c lib/libcrypto/ecdsa: ecs_lib.c Log message: Rework DSA_size() and ECDSA_size() DSA_size() and ECDSA_size() have a very special hack. They fudge up an ASN1_INTEGER with a size which is typically > 100 bytes, backed by a buffer of size 4. This was "fine", however, since they set buf[0] = 0xff, where the craziness that was i2c_ASN1_INTEGER() only looks at the first octet (one may then ask why a buffer of size 4 was necessary...). This changed with the rewrite of i2c_ASN1_INTEGER(), which doesn't respect this particular hack and rightly assumes that it is fed an actual ASN1_INTEGER... Instead, create an appropriate signature and use i2d to determine its size. Fixes an out-of-bounds read flagged by ASAN and oss-fuzz. ok jsing