From 6c197df130fe619f3ec110a66115fe3532a19405 Mon Sep 17 00:00:00 2001 From: Anthony Hu Date: Fri, 20 Mar 2026 21:32:14 -0400 Subject: [PATCH] Add bounds check in PKCS7 streaming indefinite-length end-of-content parsing --- certs/pkcs7-indef-len-signed-data.bin | Bin 0 -> 1865 bytes tests/api/test_pkcs7.c | 44 ++++++++++++++++++++++++++ tests/api/test_pkcs7.h | 4 ++- wolfcrypt/src/pkcs7.c | 4 +++ 4 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 certs/pkcs7-indef-len-signed-data.bin diff --git a/certs/pkcs7-indef-len-signed-data.bin b/certs/pkcs7-indef-len-signed-data.bin new file mode 100644 index 0000000000000000000000000000000000000000..d03715ec18012f4dd30e6dbc10af617c106b6713 GIT binary patch literal 1865 zcmchX`B#%?7RU3xA&Dd*fPe{$K`1TLu)PV1q*9Pd89<2*39A?-2g6oK5Mo(GNdmP9 z0ycso4om=LX`rG3R1k}@t1MCwWK#rDKmx>#LV?mcGlw&OK<{tQJ@+}!{eI8$`9dP3 zI_Z?#sSg?e3Y3W;5eNWe45W@kSm5BG0RjeX8USP>Gm)AEUbndk|9A^V7B@oT1`vQj zpFvwGS`ZEi_f~^rQ7&=Z$fyV&s0AyWB>Jo~c;kk!T`l+ck&wp!o(2E}Oie5jAy>!u zmxYBGD48!j>p5edFE7nsp#})UE7KSIFCy$~<7zzv+>5Yh;xER2uUY;h$)IL9|Kzsp zET133Mzivh-yu|faU$Up{MpX#&I<8Sj;KD`Hvb%KSY7QoEW@UfE?9;gSH>%!GCfvu z%c)-OxP5nmZj{E})1!G|Y%|(6%K{)>tjJY~kg;S566z!wWx>eThG7hMIY;O;g`qWuc~iI!XVsDK8=Q(=IJecP3;y zcFm3OMvJJ5BNlv+GG6zLI$BeC2b*m$zqdf`J11D$gUhGQ!LEOV5@Qaw-IEp+U73!l zd8soItG$d^C=4?`;ZO-p&ifZGw^ps|x@O6{^AlhB%@q&p&I~0!BxrYH)^F@gEw^a| z6|W8#O*h!{YjjV{uq{%$!o`g9)dpbIxvBB%Uom5Ae_4ZGS?UItm17mB* z8ndn=BnQ=T$aOVbydw`|X`hEXq_iCq(ei(7+Q_BT1t z+Ee|*OE}jFldCzIJE#Lli9K=U!Bw{1FOn(wd-}6W!F{}T7l#|Qc#FAjUQW7b6t&?= zku7Nst#lc-+ekIQz5LcXJtyKr zs4`Glmxc`_SR53@y5(H2c~JG?*MRmJmO8{W;@A5Yy0IJ{hZIK|O35=mD`tl-O4l7t z>ySRgx!kI~EO+j2ZYQd16*Y5!dE>(|r2e<|nD->Y^a!h@w(kxr2VtFxOV#GHP6g4i z5B055F^>@YCf4j1TP3DRd!IuoNSGa3AhQ@>Fd4Z(9!iUluLgD+4vPs6LC&!+Sklby zbk%n7?DxMUH=wFD&5fefZt9*yM#{e)FtT)ItM?y~-mG{O_q@Ktzr6!}j@(OZoFd;m zu)GfYzuG`n0%t%HkS2qJ00;u;%`hT1s1N@u1U3jp>VV#C@_%sNf<-X|d?A<5{ci__ zMePwJ@FKZ`0?{ZGDg@abz-v$_n~s0$E)u|WvlSb;1eXAsFh~NRK?wlBIk)WvYm@q=eVh=RcLB$E zLl9saFB(kgD0Y7mm-W_1=m; z+EUS5;A&@?vV`|m(7X@O9!P1*`}eOecA%9VYp>lvU$Z+G$3=mmi_#`fYultAuPl9m z*+6yIVA<=5MMWm9`+~;jpFQO_*?!~Ais5CyO}$?-pw_6W%#1N_?Yb77yu4THk>=;| zeyR7t)}hK6C+0lLpYzWzW}Nc1=3weQ0Qf~q%p2-&-|peSyxQ2BqGbzn5DvhA%?@pR zmJNphm}9cs;n;X56LeP{OY7K*r(jS-gZd)lHZ51v>xjpeM5RPGI^X+D4365b9(05c3d})8w zSwg8viSJr!7$V{mh^Bc<6Ez;!R2(8ozPU>%GE}x$U5PJK_`yl~d-Tv3Bul1Mrstream->cntIdfCnt * ASN_INDEF_END_SZ; localIdx = idx; for (i = 0; i < sz; i++) { + if (localIdx + i >= pkiMsg2Sz) { + ret = ASN_PARSE_E; + break; + } if (pkiMsg2[localIdx + i] == 0) continue; else {