From 8f103909f05e82635681ca252cbff081ab380250 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Thu, 10 Aug 2023 23:00:03 +0200 Subject: [PATCH] feat(checker): add bwm-ng checker (#3230) Signed-off-by: Fabrice Fontaine --- cve_bin_tool/checkers/__init__.py | 1 + cve_bin_tool/checkers/bwm_ng.py | 20 ++++++++++++++ .../bwm-ng-0.6.3-1.fc39.aarch64.rpm.tar.gz | Bin 0 -> 4689 bytes .../bwm-ng_0.6.1-1_x86_64.ipk.tar.gz | Bin 0 -> 2448 bytes .../bwm-ng_0.6.1-6_amd64.deb.tar.gz | Bin 0 -> 4668 bytes test/test_data/bwm_ng.py | 26 ++++++++++++++++++ 6 files changed, 47 insertions(+) create mode 100644 cve_bin_tool/checkers/bwm_ng.py create mode 100644 test/condensed-downloads/bwm-ng-0.6.3-1.fc39.aarch64.rpm.tar.gz create mode 100644 test/condensed-downloads/bwm-ng_0.6.1-1_x86_64.ipk.tar.gz create mode 100644 test/condensed-downloads/bwm-ng_0.6.1-6_amd64.deb.tar.gz create mode 100644 test/test_data/bwm_ng.py diff --git a/cve_bin_tool/checkers/__init__.py b/cve_bin_tool/checkers/__init__.py index 2bc47a89d3..13b1762e45 100644 --- a/cve_bin_tool/checkers/__init__.py +++ b/cve_bin_tool/checkers/__init__.py @@ -34,6 +34,7 @@ "bro", "bubblewrap", "busybox", + "bwm_ng", "bzip2", "c_ares", "capnproto", diff --git a/cve_bin_tool/checkers/bwm_ng.py b/cve_bin_tool/checkers/bwm_ng.py new file mode 100644 index 0000000000..14c0965fc4 --- /dev/null +++ b/cve_bin_tool/checkers/bwm_ng.py @@ -0,0 +1,20 @@ +# Copyright (C) 2023 Orange +# SPDX-License-Identifier: GPL-3.0-or-later + + +""" +CVE checker for bwm-ng: + +https://www.cvedetails.com/product/113242/Bwm-ng-Project-Bwm-ng.html?vendor_id=26951 + +""" +from __future__ import annotations + +from cve_bin_tool.checkers import Checker + + +class BwmNgChecker(Checker): + CONTAINS_PATTERNS: list[str] = [] + FILENAME_PATTERNS: list[str] = [] + VERSION_PATTERNS = [r"bwm-ng v([0-9]+\.[0-9]+\.[0-9]+)"] + VENDOR_PRODUCT = [("bwm-ng_project", "bwm-ng")] diff --git a/test/condensed-downloads/bwm-ng-0.6.3-1.fc39.aarch64.rpm.tar.gz b/test/condensed-downloads/bwm-ng-0.6.3-1.fc39.aarch64.rpm.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc345498ec87bce08cbc89401650da55516be38b GIT binary patch literal 4689 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 F{{c1;ycYlf literal 0 HcmV?d00001 diff --git a/test/condensed-downloads/bwm-ng_0.6.1-6_amd64.deb.tar.gz b/test/condensed-downloads/bwm-ng_0.6.1-6_amd64.deb.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9e1491a21aec005f8f4212b0e19d9e4d42921afa GIT binary patch literal 4668 zcmcJD^;Z*s!az|vrgX??8QqPfBLrbc4Cxe*7&RoFbb|r{(%ndRON^LwNJvNtY;;QQ zedm0C!TaHzd(J)gT$WfOqDMG5IFGS5J}?1S2TNf=NkI_-NlR{Ue=yC z2POxm&qnIk;1i`)Jq4TLM8y5EF}iqPh@RIzvZHAj$-pBl2{yKl7>z9(S-h=Tv%DC^ z$#^%hy0ZxH$#TrzYeAzc{tt9MVtxdm#V2JnD(-yO-^00`=UJ3VEtk!r>rl#bvSY1FDwoYz)QSQ8%+-aYDpXds4JOn$ngIQfV#d8?6(?KS-t&$Rn{b8po<;i6Nz?rXd230?YCykrMWMa##PLo;P zeqHPCvQUxaFHF*?3NE=`JPd~=j0KF$f)z*>wTQ_jGV4x7BQ+Ig^35luHMp8$8_ou= zU3=zb{rr}M?9Uea9v(ii^)zYMELClq1oCz8b{VC5rxsVac;H80at;!<#=OWaH|i+e z=#}>y13`0E^iEbncynFLemj57?Rc+uQJ^_z5i2;JIs1Ama~87SRGuU4R5)AYB|lZ{ z^}<7S&%y>`Q5>!C2sWm7@eQ3xJ19k>^rIh}=rY~+eR?|*eT$An4><*Pag!;DlfDyg z5t%a0;XpQ+yBz*@;T>A!QG#&Ob+;|U|R7s4RzbkOi!=BUHq|5vx^J&Caj+x@EB%NSTicMa8* zfa=73Z#_aIx!0m=ywY&zLM$WL9W$zz9lbc>Y5g>BCGSu1>5y;nKhDp7Wnib1V5JP_Hn@MFrBwU0~D#9tp#etC}~-Qd)NC9~762IW(2S+H&JOg(nz zon$CBbUwY!P|WEp_R46Ay;zs9&|DYk9MOrf8wt90dagwAOvQA>$XLzX!;;gDDx=07 z8UStAdl_hoLqNeTdrW{j3%{5n1od$-*?+?N7eKl=!3fU;hoVMVJkSL0*t)ZF=CV}*I}bk zkD(-bKTz;25nByDLK9!$Rp)E)wfX1%cE7$ROcimq@!5YS3=y<~0L~O_%$EjuF)7&>m zHCMKtp)<~~>##e#w%EI8*MOT(>eqYv6?bH~vV9GqL*WA5gK)lb&+SSXnyWUrs{Zze zx7+SQ`0ZU*+R9g#5K+|!4Cui8Q=W}C?qgt8l}!dfXv~zzLVdq<-Oq{rTt}icVq=D@ z%uKXh5MzFy`6Pnta%k)WEb5Yc!bz|DZc}^VDk?}Qnhdi7=O7_M1If87D?0C@5wvc= z0CP|T>?r2-hS{QZcV1S7C0D=LGP=zk*7&8YX9x%fan~&+8+8;EPC^ORxrk+ zVqZ+vnknq9q?FIT^>~uSc!HGmnDC0T{WJgr#|s1vjS7xaN=4BDf{hpw>)p2vp2$1$ z|JKGR!)10(5_ieNgJH`a3Mck6;P&O4=#QACdOBLa=13*QYxbk0%Wojf_CS%o+x9{Z zdY^lSCxq_X53zC|28)Q!rUlHe7Pga?x0mj3Fb8s;Z z6dxPNrLOl~n^_;C4fEG6yBfhal%qKSWP`>C8#a4|z|ZJF6?!69aOEzM*lM!5`G#L3 z|GCYH?hYxZ&mBg{%h)PuM;h901CRRpRdSg+N5K7(dUe3-tLp&1xvSXj_LH8bD@)Jk zVbZgWqN19#-oelypw=61Ph*vEOxa{KNlon=OkPdl380bT!Nps>*AegDHCpg1!343$ z2G7oNn=8}Hskr|79iZOyI|F_iD1ezl{T40`wr`i@jYWePKtr5a8$ zC?Tx-O=`N0$|&j}F>^fX&COSBk$NVP#2K06DDHF)1UGViZ~u}pzN_Y00BV6Z(6KLZ zBxHk>j!=U;R=`X_#vz})gbURElSDk><<)=zx|+-T($y!%xZQs|gXkCYa6UB&yPoYY zC{Q~clVr48@@>rC7>UwBmo}|-xPrw4vYU4;fGwsHb@|(#JudT}ZT>aPUi zO&HQ6*E(I9R$X;)Ky%gfxbQ&SA3C~>af;6sGI8T|=#_e=`$B$C0^*+%Uo>K+KhsY8 zIm=Me?8ub_ho=i5;;~g$Pf@1fz1z-+3hFn8B0vEBp**(F>xKkLw}2elk9M<*xg!10 z{>_Mrl4a>Qa8unCpcRl^XT2J=Zs4=>9uj|B+&}>cEUI0<0`;!$v!1g3AdwSRxIF(d ziT^vS0Chd6#Yk@_=hSkZzAWvc>dgGC*~8bnga7hZ%=d9+fuUd6C@V1JqS%g!=;oW@ zIoB9>Z2`7&>1ge6-@d1O{@Bjiq)nVcF_e_@KIgn&D(!4i`pX_ z2bS9|RsF;37e?BcrwNxP*@JtkU)mi?o4!?fhoY;_=6AZBj?CuT=Nc?3=Vj%IE2_Q< zTFHp&G73X=#!cng9}bI_9Org7islM?v$@Qlr4iZul?}}C3Y8z=ykzL);gJ3~=bF`t zW>a%&F%=4KnU@YQu96rh-kk;NKWxx^WPQ>gV6$1ebe(C^;6E4?1A2JI1F-OT7#>-t z2t*bx?IDSYDkWu0xx7A2IX0s&28ruzWt}_aoLPmpJsWhZq{g|qx~v67KmG2zT>o2- zxe&IYyaUWN&t6tJPRhW;mRtLI)4+mzp7y5PtdR7y2sVLLekN}hVaoxYmp+3JWDonq zsw@G#rRmf!u5-nopq)2(-bwp00lZbvid=F+v;~PhmWlVW=49?UYi26 z=S4) zBA~%&Ue{vsBh(P3PMbWsz7XQS!zz7LMT>IA3mxpeJBEgCx`t$h<)yR$RJTiCiOskc zkulO?(sSC0j2hj=ea6UP8KM7urnoQeJtK6TX_Q?~JJGx3d7CJ;Zu1?3uteddRR9Q9 z_Sd!}MhP-Y$v$k&q@AuuP3>>Lpz4B85~4BvrTLY1XR1$BHyMtyx(u575U*p&DOgG| zU;93!!7*RFlMzy9hhIteYTSGezq1H;h<#F!3CM@ckR@CKr#*-JdBB@_M~AG#Uflh| z0_8dx;<)6WzS_7VZdDB$WwyW_zT`aTroXViXes+fZGD%NEK=_aFd&ttoN$e5+Ol6r zz_@7XZsz*}>QF&P5!e-W4d3)(23Y!qdDVtGsMPwXUmHeLNfx^3!0h9)=UEv&`3=q! zD1Zuol#7*{a6O!MMaJt!@CpJg_DIIz< z6>1wDqUVqVJ|4VNyrikUc_c>;df4g@@|-fj(U*%YMTse!@$x%N1cBoycy(|n3zj}U zsgxAR;`SoqTH0mBeZ-j6)>xjumaujtwcwzX5=kYg4l=)D(+%_cyFlqu(l$TTHtuma z=Ya!kCr2LRVp(_MQsGOpERX6D--E=0@0E4Td1$Gq;Ftx@d%uWZxEI5W!n&zUic9s);ctO|ZFr#M*x`su0Jem?e0E6)4JduWjOhZj%cId+SMw*yW3 zDgP<8kp!MD`W1i6ZwVFDcwhI$Ww@>F8cv%S&~cLG6Xpy@kyIf`WkT$%7i&VtsojgM z_7(nfayA-=lY7r&1xoK>#Sv#slXtc9A^kwEe|dms*{LM5)=B=QE8I#Qci!q&AJ5rK4~e}eXm%y!!-?8iMX?3}W^lFI zZHZIXw>f(uuWM!fVfA4bNy>yp(sA&p2i)Yfc9;S+Hj##(e6Yw>s|1OyA1wO6vXAA7 z5K6{&l5o_^bh~E%>qPqo$1aNSbN^%!=6>;#FUVz8n46CavHkmos^54nBp