From 6803910428a2b726777fd06ba5a6fb5fd5aff614 Mon Sep 17 00:00:00 2001 From: Zhi Guan Date: Tue, 27 Dec 2022 17:01:10 +0800 Subject: [PATCH] Fix asn1_bit_string_from_der_ex bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit from https://github.com/vita1984 文件:asn1.c 函数名:asn1_bit_string_from_der_ex BUG描述:nbits的值没有减去unused_bits部分的值导致nbits值错误 复现方式: ASN hex值:03 02 06 aa 返回值照理应该是2bit。但当前函数实际返回8bit。 修改方式: 原代码: -- *nbits = (len - 1) << 3; 修改为: *nbits = (((len - 1) << 3) - unused_bits); 建议把unused_bits的int类型修改为size_t类型 --- src/asn1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/asn1.c b/src/asn1.c index 796035e6..19667607 100644 --- a/src/asn1.c +++ b/src/asn1.c @@ -1147,7 +1147,7 @@ int asn1_bit_string_from_der_ex(int tag, const uint8_t **bits, size_t *nbits, co } (*bits)++; - *nbits = (len - 1) << 3; + *nbits = ((len - 1) << 3) - unused_bits; // FIXME: need more tests return 1; }