Conflicts:
ChangeLog
... | ... |
@@ -1,6 +1,28 @@ |
1 |
+<<<<<<< HEAD |
|
1 | 2 |
Mon Oct 18 15:52:47 CEST 2010 (tk) |
2 | 3 |
---------------------------------- |
3 | 4 |
* libclamav/matcher.c: fix stack smash with HandlerType (bb#2298) |
5 |
+======= |
|
6 |
+Mon Oct 18 13:23:42 CEST 2010 (acab) |
|
7 |
+------------------------------------ |
|
8 |
+ * libclamav/scanners.c: mark embpes as unreliable (bb#2307) |
|
9 |
+ |
|
10 |
+Mon Oct 18 14:16:11 EEST 2010 (edwin) |
|
11 |
+------------------------------------- |
|
12 |
+ * clamconf/clamconf.c, libclamav/others.c: warn about zlib version mismatches (bb #2072) |
|
13 |
+ |
|
14 |
+Mon Oct 18 13:55:17 EEST 2010 (edwin) |
|
15 |
+------------------------------------- |
|
16 |
+ * libclamav/pdf.c: bb #2295 |
|
17 |
+ |
|
18 |
+Mon Oct 18 13:46:59 EEST 2010 (edwin) |
|
19 |
+------------------------------------- |
|
20 |
+ * libclamav/builtin_bytecodes.h: disable JIT on CPUs without CMOV (bb #2327). |
|
21 |
+ |
|
22 |
+Mon Oct 18 12:52:25 EEST 2010 (edwin) |
|
23 |
+------------------------------------- |
|
24 |
+ * libclamav/pdf.c: keep parsing after %%EOF (bb #2264). |
|
25 |
+>>>>>>> 110731e7842dfbfbb73a89c5f773a8e09a76cbb7 |
|
4 | 26 |
|
5 | 27 |
Mon Oct 18 11:30:01 CEST 2010 (tk) |
6 | 28 |
---------------------------------- |
... | ... |
@@ -237,6 +237,8 @@ static void print_platform(struct cli_environment *env) |
237 | 237 |
} |
238 | 238 |
#endif |
239 | 239 |
|
240 |
+ if (strcmp(ZLIB_VERSION, zlibVersion())) |
|
241 |
+ printf("WARNING: zlib version mismatch: %s (%s)\n", ZLIB_VERSION, zlibVersion()); |
|
240 | 242 |
#ifdef ZLIB_VERNUM |
241 | 243 |
printf("zlib version: %s (%s), compile flags: %02lx\n", |
242 | 244 |
ZLIB_VERSION, zlibVersion(), zlibCompileFlags()); |
... | ... |
@@ -29,53 +29,64 @@ |
29 | 29 |
* fallback. |
30 | 30 |
* Usually bytecode.cvd will contain this bytecode */ |
31 | 31 |
|
32 |
-static const char* builtin_bc_startup = "ClamBCafheaie`fld|afefdfggifnf```aa```|biacflfafmfbfcfmb`cnbacacmbacdcicmbgfhcachcgcbchccf``bkbaap`clamcoincidencejb:1378\n" |
|
32 |
+static const char* builtin_bc_startup = "ClamBCafhmknalkld|afefdfggifnf```aa```|biacflfafmfbfcfmb`cnbacacmbacgcgcmbgfbffcbficbfbfac``bgcaap`clamcoincidencejb:4096\n" |
|
33 | 33 |
"\n" |
34 |
-"Teddaaahdabahdacahdadahdaeahdafahdagahebjfebidebifebhfebgfebffebedebefebdfebcfebadcbgab`bb`bb`bb`bb`bb`bb`bbbfbbfbbfbbfbbfbbfbbfahahahahahahahahahebgeebbfaaaaaaaab`baabb`bb`baacb`bbadb`baacb`bbheb`baacb`bb`bb`baadb`bbadb`bb`baadb`bbadbadb`bdbadahdbkaahdbbcahdbibahdb`eahdbddahdbodahdbdaahdbnbah\n" |
|
35 |
-"Ebjdaibcdbke|bcaefnfgfifnfefoedfcfofnfffoelfeffgeflf``bbdbke|bkaefnfgfifnfefoeffegnfcfdgifofnfaflfifdgigoelfeffgeflf``agble|baadfefbfeggfoe`gbgifnfdgoeegifnfdg``bcable|afdgefcgdgbc``afbme|b`adfefbfeggfoe`gbgifnfdgoecgdgbg``bhdbne|b`agfefdgoeefnffgifbgofnfmfefnfdg``aaboe|afdgefcgdgac``bidb`f|bdadfifcgafbflfefoebfigdgefcfofdfefoeifff``bjdb`f|aodfifcgafbflfefoejfifdgoeifff``\n" |
|
36 |
-"G`bha`@`b`aAa`bjfBifBkeBccBdcBmeBhcBfcB`bBdfBefBdgBefBcfBdgBefBdfBlbB`bBjdBidBdeB`bBnfBefBefBdfBcgB`bB`gBefBnfBdgBifBegBmfB`bBofBbgB`bBbfBefBdgBdgBefBbg@`bidBifBccBhcBfc@`bidBifBdcBhcBfc@`bifBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfBnb@`bhfBneBceBedBldBifBnfBegBhgB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBefBhgBefBcfBmfBefBmfBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bB`bBgbBcgBefBdgBcgBefBbfBofBofBlfB`bBmbB`eB`bBcfBlfBafBmfBdfBoeBegBcgBefBoeBjfBifBdgB`bBofBnfBgbBnb@`bgfBneB`eBafBheB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBmfB`gBbgBofBdgBefBcfBdgBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bBgbB`gBafBhgBcfBdgBlfB`bBmbBcfBmfB`bBlcBefBhgBefBcfBegBdgBafBbfBlfBefBncBgb@`bffBneBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfB`bBffBofBbgB`bBegBnfBkfBnfBofBggBnfB`bBbgBefBafBcgBofBnfBnbB`eBlfBefBafBcgBefB`bBbgBefB`gBofBbgBdgB`bBdgBofB`bBhfBdgBdgB`gBjcBobBobBbfBegBgfBcgBnbBcfBlfBafBmfBafBfgBnbBnfBefBdgAj@`bed@`befBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBifBnfB`bBafBegBdgBofB`bBmfBofBdfBef@`bdfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBggBifBdgBhfB`bBifBnfBdgBefBbgB`gBbgBefBdgBefBbgB`bBofBnfBlfBig@`bcfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBdfBifBcgBafBbfBlfBefBdf@`bad@Ab`bad@Ac`bad@Ad`bad@Ae`bad@Af`bad@Ag`bad@Ah`bad@Ai`bad@Aj`bad@Ak`bad@Al`\n" |
|
37 |
-"A`b`bLbahb`bab`babgeab`b`bad`ah`aa`bad`ah`aa`bie`bad`b`b`aa`b`b`aa`b`b`b`b`bad`ah`b`b`b`b`aa`b`b`bad`ah`aa`ah`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`bad`ah`aa`bad`ah`aa`b`b`aa`b`b`b`b`aa`aa`aa`aa`aa`b`b`b`b`b`b`ah`aa`bcd`b`b`aa`bcd`b`b`bcd`b`b`aa`b`b`aa`b`b`b`b`aa`bad`ah`b`b`aa`b`b`aa`bad`ah`b`b`b`b`bad`ah`b`b`b`b`bad`ah`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fb`kbib\n" |
|
38 |
-"Bb`bacabbbhdabClnadbadaddbbheabBdadahaegbadaaafeaahae@aTaaafb`aaa\n" |
|
39 |
-"BbadagdbbheabB`adahahgbagaaaieaahahAaaTaaaiabae\n" |
|
40 |
-"BbieajdbbheabAidbadakdbbieaj@db`balkbakAn`Addaaameab`bal@db`b`bbAadaaTaaamadac\n" |
|
41 |
-"Bb`bankbakAo`Addaaaoeab`ban@db`baa`aaob`b`bbaaaaTbaad\n" |
|
42 |
-"Bb`bb`abbaab`ab`bbaaabcbjdAm`@db`aTbaae\n" |
|
43 |
-"BbadbbadbbheabBeadahbcagbbbab`bbda`abcab`bbeak`bdaAadaabfaeab`bbea@dTaabfaafal\n" |
|
44 |
-"Bb`bbgaabcbjdB`a`@dAadbadbhadbbheabBaadahbiagbbhaaabjaeaahbiaAjaTaabjaagb`a\n" |
|
45 |
-"Bahbkagbbbab`bbla`abkab`bbmak`blaAbdaabnaeab`bbma@dTaabnaaiah\n" |
|
46 |
-"Bb`bboaabcbjdBaa`@dAadTbab`a\n" |
|
47 |
-"Bb`bb`bk`blaAhdaababeab`bb`b@dTaababakaj\n" |
|
48 |
-"Bb`bbbbabcbjdBba`@dAadTbab`a\n" |
|
49 |
-"Bb`bbcbabcbjdBca`@dAadTbab`a\n" |
|
50 |
-"BbadbdbdbbheabBaadahbebgbbdbaabfbeaahbebAjaTaabfbanam\n" |
|
51 |
-"BbadbgbdbbheabBbadahbhbgbbgbaabibeaahbhbAfaTaabibanb`a\n" |
|
52 |
-"Bb`bbjbk`bdaB`adaabkbeab`bbjb@dTaabkbb`aao\n" |
|
53 |
-"Bb`bblbabcbjdBba`@dAadTbab`a\n" |
|
54 |
-"Bb`bbmbabcbidBda`@d@daabnbnab`bbmbAadTaabnbbdabaa\n" |
|
55 |
-"Baabobnab`bbmbAbdTaabobbcabba\n" |
|
56 |
-"Baab`ceab`bbmbAbdTaab`cbgabha\n" |
|
57 |
-"Baabaceab`bbmbAadTaabacbfabha\n" |
|
58 |
-"Baabbceab`bbmb@dTaabbcbeabha\n" |
|
59 |
-"Bb`bbccabbafBea`@dTbabha\n" |
|
60 |
-"Bb`bbdcabbafBfa`@dTbabha\n" |
|
61 |
-"Bb`bbecabbafBga`@dTbabha\n" |
|
62 |
-"Bahbfcgbadaabgceaahbfc@aTaabgcbjabia\n" |
|
63 |
-"BbcdbhcdbbheabAddb`bbicgbbhcaabjceab`bbic@db`b`bbEamjnmd`Taabjcbhbbja\n" |
|
64 |
-"BbcdbkcdbbheabAfdb`bblcgbbkcbcdbmcdbbheabAedb`bbncgbbmcaabociab`bblcbncb`b`bbEbmjnmd`Taabocbhbbka\n" |
|
65 |
-"Bb`bb`dab`bbdaabadeab`bbncb`db`b`bbEcmjnmd`Taabadblabhb\n" |
|
66 |
-"Bb`bbbdgbbkcb`bbcdab`bcdaabddeab`bbbdbcdb`b`bbEdmjnmd`Taabddbmabhb\n" |
|
67 |
-"BbadbeddbbheabAndahbfdgbbedb`bbgd`abfdaabhdlbb`bbid`abhdaabjdeab`bbgdbidb`b`bbEemjnmd`Taabjdbnabhb\n" |
|
68 |
-"BbadbkddbbheabBaadahbldgbbkdb`bbmd`abldb`bbndh`bmdBhadbadboddbbheabB`adahb`egbbodb`bbae`ab`eb`bbbeh`baeBdadbadbcedbbheabBcadahbdegbbceb`bbee`abdeb`bbfeh`beeB`adb`bbgegbbmcb`bbheh`bgeAhdb`bbiegbbkcb`bbjel`bbebndb`bbkel`bjebheb`bblel`bkebieb`bbmel`blebfeb`bbneh`bgdBladbadboedbbheabAodahb`fgbboeb`bbaf`ab`fb`bbbfh`bafBhadbcdbcfdbbheabAddb`bbdfgbbcfb`bbefl`bdfbneb`bbffl`befbbfbadbgfdbbheabBeadahbhfgbbgfb`bbif`abhfb`bbjfh`bifBhadbcdbkfdbbheabAcdb`bblfgbbkfb`bbmfl`bjfblfbcdbnfdbbheab@db`bbofgbbnfaab`geab`bbmebofTaab`gb`bboa\n" |
|
69 |
-"Bb`bbagabaagbmeTcab`bEfmjnmd\n" |
|
70 |
-"BbcdbbgdbbheabAadb`bbcggbbbgaabdgeab`bbffbcgTaabdgbbbbab\n" |
|
71 |
-"Bb`bbegabaagbffTcab`bEgmjnmd\n" |
|
72 |
-"BbcdbfgdbbheabAbdb`bbgggbbfgaabhgeab`bbmfbggTaabhgbdbbcb\n" |
|
73 |
-"Bb`bbigabaagbmfTcab`bEhmjnmd\n" |
|
74 |
-"Bb`bbjgabbaaHonnkm``odHm``oonnkdaabkgeab`bbjgHhgfedcbadTaabkgbfbbeb\n" |
|
75 |
-"Bb`bblgabaagbjgTcab`bEimjnmd\n" |
|
76 |
-"Bb`bbmgababcaDm``odaabngeab`bbmgDo``mdb`b`bbHnejkjgjmd`Taabngbhbbgb\n" |
|
77 |
-"Bb`bbogabaagbmgTcab`bF`amjnmd\n" |
|
78 |
-"Bb`bb`hbb`b`hTcab`bb`hE\n" |
|
34 |
+"Teddaaahdabahdacahdadahdaeahdafahdagahebfgebidebegebdgebgdebkdebcgebbgebageb`gebofebnfebmfebedeblfebkfebjfebadcbgab`bb`bb`bb`bb`bb`bb`bbifbifbifbifbifbifbifahahahahahahahahahebneebifaaaaaaaab`baabb`bb`baacb`bbadb`baacb`bboeb`baacb`bb`bb`baadb`bbadb`bb`baadb`bbadbadb`bdbadahdbkaahdbbcahdbibahdb`eahdbddahdbodahdbdaahdaiahdakahdamahdahahdbgcahdbnbah\n" |
|
35 |
+"Ebjdaibcdbbf|bcaefnfgfifnfefoedfcfofnfffoelfeffgeflf``bbdbbf|bkaefnfgfifnfefoeffegnfcfdgifofnfaflfifdgigoelfeffgeflf``agbcf|baadfefbfeggfoe`gbgifnfdgoeegifnfdg``bcabcf|afdgefcgdgbc``afbdf|b`adfefbfeggfoe`gbgifnfdgoecgdgbg``bhdbef|b`agfefdgoeefnffgifbgofnfmfefnfdg``aabff|afdgefcgdgac``bidbgf|bdadfifcgafbflfefoebfigdgefcfofdfefoeifff``bjdbgf|aodfifcgafbflfefoejfifdgoeifff``\n" |
|
36 |
+"G`b`c`@`b`aAa`bfgBifBkeBccBdcBmeBhcBfcB`bBdfBefBdgBefBcfBdgBefBdfBlbB`bBjdBidBdeB`bBnfBefBefBdfBcgB`bB`gBefBnfBdgBifBegBmfB`bBofBbgB`bBbfBefBdgBdgBefBbg@`bidBifBccBhcBfc@`bidBifBdcBhcBfc@`begBcdB`eBeeB`bBdfBofBefBcgBnfBgbBdgB`bBcgBegB`gB`gBofBbgBdgB`bBcdBmdBodBfeBlbB`bBggBofBegBlfBdfB`bBnfBefBefBdfB`bBldBldBfeBmdB`bBbcBnbBhcB`bBdgBofB`bBggBofBbgBkfBab@`bidBifBecBhcBfc@`bdgB`gBefBnfBdgBifBegBmf@`bidBifBfcBhcBfc@`bgdBkfBfc@`bidBkfBfcBmbBbc@`bidBkfBfcBmbBcc@`bkdBafBdgBhfBlfBofBnf@`bcgBafBdgBhfBlfBofBnfBmbBdgBbfBifBbgBdf@`bbgBggBifBnfBcfBhfBifB`gBmbBcfBfc@`bagBggBifBnfBcfBhfBifB`gBbc@`bgdBcfBcc@`b`gBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfBnb@`bofBneBceBedBldBifBnfBegBhgB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBefBhgBefBcfBmfBefBmfBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bB`bBgbBcgBefBdgBcgBefBbfBofBofBlfB`bBmbB`eB`bBcfBlfBafBmfBdfBoeBegBcgBefBoeBjfBifBdgB`bBofBnfBgbBnb@`bnfBneB`eBafBheB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBmfB`gBbgBofBdgBefBcfBdgBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bBgbB`gBafBhgBcfBdgBlfB`bBmbBcfBmfB`bBlcBefBhgBefBcfBegBdgBafBbfBlfBefBncBgb@`bmfBneBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfB`bBffBofBbgB`bBegBnfBkfBnfBofBggBnfB`bBbgBefBafBcgBofBnfBnbB`eBlfBefBafBcgBefB`bBbgBefB`gBofBbgBdgB`bBdgBofB`bBhfBdgBdgB`gBjcBobBobBbfBegBgfBcgBnbBcfBlfBafBmfBafBfgBnbBnfBefBdgAj@`bed@`blfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBifBnfB`bBafBegBdgBofB`bBmfBofBdfBef@`bkfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBggBifBdgBhfB`bBifBnfBdgBefBbgB`gBbgBefBdgBefBbgB`bBofBnfBlfBig@`bjfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBdfBifBcgBafBbfBlfBefBdf@`bad@Ab`bad@Ac`bad@Ad`bad@Ae`bad@Af`bad@Ag`bad@Ah`bad@Ai`bad@Aj`bad@Ak`bad@Al`bad@Am`bad@An`bad@Ao`bad@B`a`bad@Baa`bad@Bba`bad@Bca`bad@Bda`bad@Bea`bad@Bfa`bad@Bga`bad@Bha`\n" |
|
37 |
+"A`b`bLbjib`bab`bab`babneab`b`bad`ah`aa`bad`ah`aa`b`f`bad`b`b`aa`b`b`aa`b`b`b`b`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`b`b`bad`ah`b`b`b`b`aa`b`b`bad`ah`aa`ah`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`bad`ah`aa`bad`ah`aa`b`b`aa`b`b`b`b`aa`aa`aa`aa`aa`b`b`b`b`b`b`ah`aa`bcd`b`b`aa`bcd`b`b`bcd`b`b`aa`b`b`aa`b`b`b`b`aa`bad`ah`b`b`aa`b`b`aa`bad`ah`b`b`b`b`bad`ah`b`b`b`b`bad`ah`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fbombdc\n" |
|
38 |
+"Bb`badabbbhdacClnadbadaedbboeacBdadahafgbaeaaageaahaf@aTaaagbkaaa\n" |
|
39 |
+"BbadahdbboeacB`adahaigbahaaajeaahaiAaaTaaajabb`a\n" |
|
40 |
+"Bb`fakdbboeacAidbadaldbb`fak@db`bamkbalBja`Addaaaneab`bam@db`b`bbAadabTaaanadac\n" |
|
41 |
+"Bb`baokbalBka`Addaab`aeab`bao@db`bab`ab`ab`b`bbababTbaad\n" |
|
42 |
+"Bb`bbaabbabbaab`bbbaabcbjdBia`@dbaab`bbcakbalBma`Addaabdaeab`bbca@db`b`bbAadaaTaabdaaoae\n" |
|
43 |
+"Bb`bbeakbalBna`Agdaabfaeab`bbea@db`b`bbAadaaTaabfaaoaf\n" |
|
44 |
+"Bb`bbgakbalBoa`Addaabhaeab`bbga@db`b`bbAadaaTaabhaaoag\n" |
|
45 |
+"Bb`bbiakbalB`b`Abdaabjaeab`bbia@db`b`bbAadaaTaabjaaoah\n" |
|
46 |
+"Bb`bbkakbalBab`Addaablaeab`bbka@db`b`bbAadaaTaablaaoai\n" |
|
47 |
+"Bb`bbmakbalBbb`Addaabnaeab`bbma@db`b`bbAadaaTaabnaaoaj\n" |
|
48 |
+"Bb`bboakbalBcb`Afdaab`beab`bboa@db`b`bbAadaaTaab`baoak\n" |
|
49 |
+"Bb`bbabkbalBdb`Aldaabbbeab`bbab@db`b`bbAadaaTaabbbaoal\n" |
|
50 |
+"Bb`bbcbkbalBeb`Ajdaabdbeab`bbcb@db`b`bbAadaaTaabdbaoam\n" |
|
51 |
+"Bb`bbebkbalBfb`Ahdaabfbeab`bbeb@db`b`bbAadaaTaabfbaoan\n" |
|
52 |
+"Bb`bbgbkbalBgb`Abdaabhbeab`bbgb@db`baa`abhbb`b`bbaaaaTbaao\n" |
|
53 |
+"Bb`bbibbbaabibb`bbjbabcbjdBla`@dbibTbab`a\n" |
|
54 |
+"BbadbkbdbboeacBeadahblbgbbkbb`bbmb`ablbb`bbnbk`bmbAadaabobeab`bbnb@dTaabobbaabga\n" |
|
55 |
+"Bb`bb`cabcbjdBhb`@dAadbadbacdbboeacBaadahbbcgbbacaabcceaahbbcAjaTaabccbbabka\n" |
|
56 |
+"Bahbdcgbbkbb`bbec`abdcb`bbfck`becAbdaabgceab`bbfc@dTaabgcbdabca\n" |
|
57 |
+"Bb`bbhcabcbjdBib`@dAadTbabka\n" |
|
58 |
+"Bb`bbick`becAhdaabjceab`bbic@dTaabjcbfabea\n" |
|
59 |
+"Bb`bbkcabcbjdBjb`@dAadTbabka\n" |
|
60 |
+"Bb`bblcabcbjdBkb`@dAadTbabka\n" |
|
61 |
+"BbadbmcdbboeacBaadahbncgbbmcaaboceaahbncAjaTaabocbiabha\n" |
|
62 |
+"Bbadb`ddbboeacBbadahbadgbb`daabbdeaahbadAfaTaabbdbiabka\n" |
|
63 |
+"Bb`bbcdk`bmbB`adaabddeab`bbcd@dTaabddbkabja\n" |
|
64 |
+"Bb`bbedabcbjdBjb`@dAadTbabka\n" |
|
65 |
+"Bb`bbfdabcbidBlb`@d@daabgdnab`bbfdAadTaabgdboabla\n" |
|
66 |
+"Baabhdnab`bbfdAbdTaabhdbnabma\n" |
|
67 |
+"Baabideab`bbfdAbdTaabidbbbbcb\n" |
|
68 |
+"Baabjdeab`bbfdAadTaabjdbabbcb\n" |
|
69 |
+"Baabkdeab`bbfd@dTaabkdb`bbcb\n" |
|
70 |
+"Bb`bbldabbafBmb`@dTbabcb\n" |
|
71 |
+"Bb`bbmdabbafBnb`@dTbabcb\n" |
|
72 |
+"Bb`bbndabbafBob`@dTbabcb\n" |
|
73 |
+"Bahbodgbaeaab`eeaahbod@aTaab`ebebbdb\n" |
|
74 |
+"BbcdbaedbboeacAddb`bbbegbbaeaabceeab`bbbe@db`b`bbEamjnmd`Taabcebccbeb\n" |
|
75 |
+"BbcdbdedbboeacAfdb`bbeegbbdebcdbfedbboeacAedb`bbgegbbfeaabheiab`bbeebgeb`b`bbEbmjnmd`Taabhebccbfb\n" |
|
76 |
+"Bb`bbieab`bbdaabjeeab`bbgebieb`b`bbEcmjnmd`Taabjebgbbcc\n" |
|
77 |
+"Bb`bbkegbbdeb`bbleab`bcdaabmeeab`bbkebleb`b`bbEdmjnmd`Taabmebhbbcc\n" |
|
78 |
+"BbadbnedbboeacAndahboegbbneb`bb`f`aboeaabaflbb`bbbf`abafaabcfeab`bb`fbbfb`b`bbEemjnmd`Taabcfbibbcc\n" |
|
79 |
+"BbadbdfdbboeacBaadahbefgbbdfb`bbff`abefb`bbgfh`bffBhadbadbhfdbboeacB`adahbifgbbhfb`bbjf`abifb`bbkfh`bjfBdadbadblfdbboeacBcadahbmfgbblfb`bbnf`abmfb`bbofh`bnfB`adb`bb`ggbbfeb`bbagh`b`gAhdb`bbbggbbdeb`bbcgl`bkfbgfb`bbdgl`bcgbagb`bbegl`bdgbbgb`bbfgl`begbofb`bbggh`b`fBladbadbhgdbboeacAodahbiggbbhgb`bbjg`abigb`bbkgh`bjgBhadbcdblgdbboeacAddb`bbmggbblgb`bbngl`bmgbggb`bbogl`bngbkgbadb`hdbboeacBeadahbahgbb`hb`bbbh`abahb`bbchh`bbhBhadbcdbdhdbboeacAcdb`bbehgbbdhb`bbfhl`bchbehbcdbghdbboeac@db`bbhhgbbghaabiheab`bbfgbhhTaabihbkbbjb\n" |
|
80 |
+"Bb`bbjhabaagbfgTcab`bEfmjnmd\n" |
|
81 |
+"BbcdbkhdbboeacAadb`bblhgbbkhaabmheab`bbogblhTaabmhbmbblb\n" |
|
82 |
+"Bb`bbnhabaagbogTcab`bEgmjnmd\n" |
|
83 |
+"BbcdbohdbboeacAbdb`bb`igbbohaabaieab`bbfhb`iTaabaibobbnb\n" |
|
84 |
+"Bb`bbbiabaagbfhTcab`bEhmjnmd\n" |
|
85 |
+"Bb`bbciabbaaHonnkm``odHm``oonnkdaabdieab`bbciHhgfedcbadTaabdibacb`c\n" |
|
86 |
+"Bb`bbeiabaagbciTcab`bEimjnmd\n" |
|
87 |
+"Bb`bbfiababcaDm``odaabgieab`bbfiDo``mdb`b`bbHnejkjgjmd`Taabgibccbbc\n" |
|
88 |
+"Bb`bbhiabaagbfiTcab`bF`amjnmd\n" |
|
89 |
+"Bb`bbiibb`biiTcab`bbiiE\n" |
|
79 | 90 |
; |
80 | 91 |
/* source-code for builtin_bc_startup: */ |
81 | 92 |
#if 0 |
... | ... |
@@ -97,6 +108,21 @@ int entrypoint() |
97 | 97 |
disable_jit_if("i[34]86 detected, JIT needs pentium or better",0, |
98 | 98 |
!memcmp(env.cpu,"i386",4) || |
99 | 99 |
!memcmp(env.cpu,"i486",4)); |
100 |
+ /* FIXME: update embedded LLVM to 2.8 which correctly skips CMOV if CPU |
|
101 |
+ * doesn't support it. |
|
102 |
+ * For now disable JIT on CPUs without cmov */ |
|
103 |
+ disable_jit_if("CPU doesn't support CMOV, would need LLVM 2.8 to work!",0, |
|
104 |
+ !memcmp(env.cpu,"i586",4) || |
|
105 |
+ !memcmp(env.cpu,"pentium",7) || |
|
106 |
+ !memcmp(env.cpu,"i686",4) || |
|
107 |
+ !memcmp(env.cpu,"k6",2) || |
|
108 |
+ !memcmp(env.cpu,"k6-2",4) || |
|
109 |
+ !memcmp(env.cpu,"k6-3",4) || |
|
110 |
+ !memcmp(env.cpu,"athlon",6) || |
|
111 |
+ !memcmp(env.cpu,"athlon-tbird",12) || |
|
112 |
+ !memcmp(env.cpu,"winchip-c6",10) || |
|
113 |
+ !memcmp(env.cpu,"winchip2",8) || |
|
114 |
+ !memcmp(env.cpu,"c3",2)); |
|
100 | 115 |
break; |
101 | 116 |
default: |
102 | 117 |
break; |
... | ... |
@@ -1629,10 +1629,15 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru |
1629 | 1629 |
if (test_mode) { |
1630 | 1630 |
jit_ev = cli_events_new(BCEV_LASTEVENT); |
1631 | 1631 |
interp_ev = cli_events_new(BCEV_LASTEVENT); |
1632 |
- if (!jit_ev || !interp_ev) |
|
1632 |
+ if (!jit_ev || !interp_ev) { |
|
1633 |
+ cli_events_free(jit_ev); |
|
1634 |
+ cli_events_free(interp_ev); |
|
1633 | 1635 |
return CL_EMEM; |
1636 |
+ } |
|
1634 | 1637 |
if (register_events(jit_ev) == -1 || |
1635 | 1638 |
register_events(interp_ev) == -1) { |
1639 |
+ cli_events_free(jit_ev); |
|
1640 |
+ cli_events_free(interp_ev); |
|
1636 | 1641 |
return CL_EBYTECODE_TESTFAIL; |
1637 | 1642 |
} |
1638 | 1643 |
} |
... | ... |
@@ -1655,6 +1660,8 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru |
1655 | 1655 |
inst.u.ops.opsizes = ctx->opsizes; |
1656 | 1656 |
cli_dbgmsg("Bytecode %u: executing in interpeter mode\n", bc->id); |
1657 | 1657 |
|
1658 |
+ ctx->on_jit = 0; |
|
1659 |
+ |
|
1658 | 1660 |
cli_event_time_start(interp_ev, BCEV_EXEC_TIME); |
1659 | 1661 |
ret = cli_vm_execute(ctx->bc, ctx, &func, &inst); |
1660 | 1662 |
cli_event_time_stop(interp_ev, BCEV_EXEC_TIME); |
... | ... |
@@ -1674,6 +1681,7 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru |
1674 | 1674 |
ctx->bc_events = jit_ev; |
1675 | 1675 |
cli_dbgmsg("Bytecode %u: executing in JIT mode\n", bc->id); |
1676 | 1676 |
|
1677 |
+ ctx->on_jit = 1; |
|
1677 | 1678 |
cli_event_time_start(jit_ev, BCEV_EXEC_TIME); |
1678 | 1679 |
ret = cli_vm_execute_jit(bcs, ctx, &bc->funcs[ctx->funcid]); |
1679 | 1680 |
cli_event_time_stop(jit_ev, BCEV_EXEC_TIME); |
... | ... |
@@ -1699,7 +1707,7 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru |
1699 | 1699 |
bc->id, interp_errors, jit_errors); |
1700 | 1700 |
ok = 0; |
1701 | 1701 |
} |
1702 |
- if (cli_event_diff_all(interp_ev, jit_ev, NULL)) { |
|
1702 |
+ if (!ctx->no_diff && cli_event_diff_all(interp_ev, jit_ev, NULL)) { |
|
1703 | 1703 |
cli_infomsg(cctx, "bytecode %d execution different with JIT and interpreter, see --debug for details\n", |
1704 | 1704 |
bc->id); |
1705 | 1705 |
ok = 0; |
... | ... |
@@ -1720,9 +1728,14 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru |
1720 | 1720 |
} |
1721 | 1721 |
/*cli_event_debug(jit_ev, BCEV_EXEC_TIME); |
1722 | 1722 |
cli_event_debug(interp_ev, BCEV_EXEC_TIME);*/ |
1723 |
- if (!ok) |
|
1723 |
+ if (!ok) { |
|
1724 |
+ cli_events_free(jit_ev); |
|
1725 |
+ cli_events_free(interp_ev); |
|
1724 | 1726 |
return CL_EBYTECODE_TESTFAIL; |
1727 |
+ } |
|
1725 | 1728 |
} |
1729 |
+ cli_events_free(jit_ev); |
|
1730 |
+ cli_events_free(interp_ev); |
|
1726 | 1731 |
return ret; |
1727 | 1732 |
} |
1728 | 1733 |
|
... | ... |
@@ -1340,9 +1340,9 @@ int32_t cli_bcapi_version_compare(struct cli_bc_ctx *ctx , const uint8_t* lhs, u |
1340 | 1340 |
if (!isdigit(lhs[i]) || !isdigit(rhs[j])) |
1341 | 1341 |
return lhs[i] < rhs[j] ? -1 : 1; |
1342 | 1342 |
while (isdigit(lhs[i]) && i < lhs_len) |
1343 |
- li = 10*li + (lhs[i] - '0'); |
|
1343 |
+ li = 10*li + (lhs[i++] - '0'); |
|
1344 | 1344 |
while (isdigit(rhs[j]) && j < rhs_len) |
1345 |
- ri = 10*ri + (rhs[j] - '0'); |
|
1345 |
+ ri = 10*ri + (rhs[j++] - '0'); |
|
1346 | 1346 |
if (li < ri) |
1347 | 1347 |
return -1; |
1348 | 1348 |
if (li > ri) |
... | ... |
@@ -1502,3 +1502,8 @@ int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx) |
1502 | 1502 |
return ctx->pdf_dumpedid; |
1503 | 1503 |
} |
1504 | 1504 |
|
1505 |
+int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx ) |
|
1506 |
+{ |
|
1507 |
+ ctx->no_diff = 1; |
|
1508 |
+ return ctx->on_jit; |
|
1509 |
+} |
... | ... |
@@ -977,5 +977,11 @@ int32_t pdf_get_dumpedobjid(void); |
977 | 977 |
int32_t matchicon(const uint8_t* group1, int32_t group1_len, |
978 | 978 |
const uint8_t* group2, int32_t group2_len); |
979 | 979 |
/* ---------------- END 0.96.2 APIs ----------------------------------- */ |
980 |
+/* ----------------- BEGIN 0.96.4 APIs ---------------------------------- */ |
|
981 |
+/* Returns whether running on JIT. As side-effect it disables |
|
982 |
+ * interp / JIT comparisons in test mode (errors are still checked) */ |
|
983 |
+int32_t running_on_jit(void); |
|
984 |
+ |
|
985 |
+/* ----------------- END 0.96.4 APIs ---------------------------------- */ |
|
980 | 986 |
#endif |
981 | 987 |
#endif |
... | ... |
@@ -122,6 +122,7 @@ int32_t cli_bcapi_pdf_get_offset(struct cli_bc_ctx *ctx , int32_t); |
122 | 122 |
int32_t cli_bcapi_pdf_get_phase(struct cli_bc_ctx *ctx ); |
123 | 123 |
int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx ); |
124 | 124 |
int32_t cli_bcapi_matchicon(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, const uint8_t*, int32_t); |
125 |
+int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx ); |
|
125 | 126 |
|
126 | 127 |
const struct cli_apiglobal cli_globals[] = { |
127 | 128 |
/* Bytecode globals BEGIN */ |
... | ... |
@@ -146,8 +147,8 @@ static uint16_t cli_tmp4[]={16, 8, 8, 32, 32, 32, 32, 32, 32, 32, 32, 32, 16, 16 |
146 | 146 |
static uint16_t cli_tmp5[]={32, 16, 16, 32, 32, 32, 16, 16}; |
147 | 147 |
static uint16_t cli_tmp6[]={32}; |
148 | 148 |
static uint16_t cli_tmp7[]={32}; |
149 |
-static uint16_t cli_tmp8[]={32, 65, 32, 65, 32}; |
|
150 |
-static uint16_t cli_tmp9[]={32}; |
|
149 |
+static uint16_t cli_tmp8[]={32}; |
|
150 |
+static uint16_t cli_tmp9[]={32, 65, 32, 65, 32}; |
|
151 | 151 |
static uint16_t cli_tmp10[]={32, 32}; |
152 | 152 |
static uint16_t cli_tmp11[]={32, 32, 32}; |
153 | 153 |
static uint16_t cli_tmp12[]={65, 32, 32}; |
... | ... |
@@ -179,8 +180,8 @@ const struct cli_bc_type cli_apicall_types[]={ |
179 | 179 |
{DStructType, cli_tmp5, 8, 0, 0}, |
180 | 180 |
{DArrayType, cli_tmp6, 1, 0, 0}, |
181 | 181 |
{DArrayType, cli_tmp7, 64, 0, 0}, |
182 |
- {DFunctionType, cli_tmp8, 5, 0, 0}, |
|
183 |
- {DFunctionType, cli_tmp9, 1, 0, 0}, |
|
182 |
+ {DFunctionType, cli_tmp8, 1, 0, 0}, |
|
183 |
+ {DFunctionType, cli_tmp9, 5, 0, 0}, |
|
184 | 184 |
{DFunctionType, cli_tmp10, 2, 0, 0}, |
185 | 185 |
{DFunctionType, cli_tmp11, 3, 0, 0}, |
186 | 186 |
{DFunctionType, cli_tmp12, 3, 0, 0}, |
... | ... |
@@ -230,7 +231,7 @@ const struct cli_apicall cli_apicalls[]={ |
230 | 230 |
{"fill_buffer", 20, 0, 4}, |
231 | 231 |
{"extract_new", 10, 4, 2}, |
232 | 232 |
{"read_number", 10, 5, 2}, |
233 |
- {"hashset_new", 9, 0, 5}, |
|
233 |
+ {"hashset_new", 8, 0, 5}, |
|
234 | 234 |
{"hashset_add", 11, 2, 0}, |
235 | 235 |
{"hashset_remove", 11, 3, 0}, |
236 | 236 |
{"hashset_contains", 11, 4, 0}, |
... | ... |
@@ -257,7 +258,7 @@ const struct cli_apicall cli_apicalls[]={ |
257 | 257 |
{"iexp", 13, 2, 7}, |
258 | 258 |
{"isin", 13, 3, 7}, |
259 | 259 |
{"icos", 13, 4, 7}, |
260 |
- {"memstr", 8, 0, 8}, |
|
260 |
+ {"memstr", 9, 0, 8}, |
|
261 | 261 |
{"hex2ui", 11, 8, 0}, |
262 | 262 |
{"atoi", 19, 13, 1}, |
263 | 263 |
{"debug_print_str_start", 19, 14, 1}, |
... | ... |
@@ -272,19 +273,19 @@ const struct cli_apicall cli_apicalls[]={ |
272 | 272 |
{"map_getvalue", 12, 2, 6}, |
273 | 273 |
{"map_done", 10, 20, 2}, |
274 | 274 |
{"file_find_limit", 14, 4, 9}, |
275 |
- {"engine_functionality_level", 9, 1, 5}, |
|
276 |
- {"engine_dconf_level", 9, 2, 5}, |
|
277 |
- {"engine_scan_options", 9, 3, 5}, |
|
278 |
- {"engine_db_options", 9, 4, 5}, |
|
275 |
+ {"engine_functionality_level", 8, 1, 5}, |
|
276 |
+ {"engine_dconf_level", 8, 2, 5}, |
|
277 |
+ {"engine_scan_options", 8, 3, 5}, |
|
278 |
+ {"engine_db_options", 8, 4, 5}, |
|
279 | 279 |
{"extract_set_container", 10, 21, 2}, |
280 | 280 |
{"input_switch", 10, 22, 2}, |
281 | 281 |
{"get_environment", 15, 17, 1}, |
282 | 282 |
{"disable_bytecode_if", 14, 5, 9}, |
283 | 283 |
{"disable_jit_if", 14, 6, 9}, |
284 |
- {"version_compare", 8, 1, 8}, |
|
284 |
+ {"version_compare", 9, 1, 8}, |
|
285 | 285 |
{"check_platform", 13, 5, 7}, |
286 |
- {"pdf_get_obj_num", 9, 5, 5}, |
|
287 |
- {"pdf_get_flags", 9, 6, 5}, |
|
286 |
+ {"pdf_get_obj_num", 8, 5, 5}, |
|
287 |
+ {"pdf_get_flags", 8, 6, 5}, |
|
288 | 288 |
{"pdf_set_flags", 10, 23, 2}, |
289 | 289 |
{"pdf_lookupobj", 10, 24, 2}, |
290 | 290 |
{"pdf_getobjsize", 10, 25, 2}, |
... | ... |
@@ -293,9 +294,10 @@ const struct cli_apicall cli_apicalls[]={ |
293 | 293 |
{"pdf_getobjflags", 10, 27, 2}, |
294 | 294 |
{"pdf_setobjflags", 11, 10, 0}, |
295 | 295 |
{"pdf_get_offset", 10, 28, 2}, |
296 |
- {"pdf_get_phase", 9, 7, 5}, |
|
297 |
- {"pdf_get_dumpedobjid", 9, 8, 5}, |
|
298 |
- {"matchicon", 8, 2, 8} |
|
296 |
+ {"pdf_get_phase", 8, 7, 5}, |
|
297 |
+ {"pdf_get_dumpedobjid", 8, 8, 5}, |
|
298 |
+ {"matchicon", 9, 2, 8}, |
|
299 |
+ {"running_on_jit", 8, 9, 5} |
|
299 | 300 |
/* Bytecode APIcalls END */ |
300 | 301 |
}; |
301 | 302 |
const cli_apicall_int2 cli_apicalls0[] = { |
... | ... |
@@ -377,7 +379,8 @@ const cli_apicall_allocobj cli_apicalls5[] = { |
377 | 377 |
(cli_apicall_allocobj)cli_bcapi_pdf_get_obj_num, |
378 | 378 |
(cli_apicall_allocobj)cli_bcapi_pdf_get_flags, |
379 | 379 |
(cli_apicall_allocobj)cli_bcapi_pdf_get_phase, |
380 |
- (cli_apicall_allocobj)cli_bcapi_pdf_get_dumpedobjid |
|
380 |
+ (cli_apicall_allocobj)cli_bcapi_pdf_get_dumpedobjid, |
|
381 |
+ (cli_apicall_allocobj)cli_bcapi_running_on_jit |
|
381 | 382 |
}; |
382 | 383 |
const cli_apicall_bufget cli_apicalls6[] = { |
383 | 384 |
(cli_apicall_bufget)cli_bcapi_buffer_pipe_read_get, |
... | ... |
@@ -120,5 +120,6 @@ int32_t cli_bcapi_pdf_get_offset(struct cli_bc_ctx *ctx , int32_t); |
120 | 120 |
int32_t cli_bcapi_pdf_get_phase(struct cli_bc_ctx *ctx ); |
121 | 121 |
int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx ); |
122 | 122 |
int32_t cli_bcapi_matchicon(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, const uint8_t*, int32_t); |
123 |
+int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx ); |
|
123 | 124 |
|
124 | 125 |
#endif |
... | ... |
@@ -34,8 +34,9 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs) |
34 | 34 |
for (i=0;i<bcs->count;i++) { |
35 | 35 |
if (bcs->all_bcs[i].state == bc_skip) |
36 | 36 |
continue; |
37 |
- if (bcs->all_bcs[i].state != bc_loaded) { |
|
38 |
- cli_warnmsg("Cannot prepare for JIT, because it has already been converted to interpreter"); |
|
37 |
+ if (bcs->all_bcs[i].state != bc_loaded && |
|
38 |
+ bcs->all_bcs[i].kind != BC_STARTUP) { |
|
39 |
+ cli_warnmsg("Cannot prepare for JIT, because it has already been converted to interpreter\n"); |
|
39 | 40 |
return CL_EBYTECODE; |
40 | 41 |
} |
41 | 42 |
} |
... | ... |
@@ -225,6 +225,8 @@ struct cli_bc_ctx { |
225 | 225 |
const struct cli_environment *env; |
226 | 226 |
unsigned bytecode_disable_status; |
227 | 227 |
cli_events_t *bc_events; |
228 |
+ int on_jit; |
|
229 |
+ int no_diff; |
|
228 | 230 |
}; |
229 | 231 |
struct cli_all_bc; |
230 | 232 |
int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct cli_bc_func *func, const struct cli_bc_inst *inst); |
... | ... |
@@ -2022,6 +2022,8 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs) |
2022 | 2022 |
|
2023 | 2023 |
for (unsigned i=0;i<bcs->count;i++) { |
2024 | 2024 |
const struct cli_bc_func *func = &bcs->all_bcs[i].funcs[0]; |
2025 |
+ if (bcs->all_bcs[i].state == bc_interp) |
|
2026 |
+ continue; /* probably BC_STARTUP */ |
|
2025 | 2027 |
bcs->engine->compiledFunctions[func] = EE->getPointerToFunction(Functions[i]); |
2026 | 2028 |
bcs->all_bcs[i].state = bc_jit; |
2027 | 2029 |
} |
... | ... |
@@ -67,6 +67,7 @@ |
67 | 67 |
#include "default.h" |
68 | 68 |
#include "scanners.h" |
69 | 69 |
#include "bytecode.h" |
70 |
+#include "bytecode_api_impl.h" |
|
70 | 71 |
|
71 | 72 |
int (*cli_unrar_open)(int fd, const char *dirname, unrar_state_t *state); |
72 | 73 |
int (*cli_unrar_extract_next_prepare)(unrar_state_t *state, const char *dirname); |
... | ... |
@@ -261,6 +262,19 @@ int cl_init(unsigned int initoptions) |
261 | 261 |
struct timeval tv; |
262 | 262 |
unsigned int pid = (unsigned int) getpid(); |
263 | 263 |
|
264 |
+ const char *zlibver = zlibVersion(); |
|
265 |
+ int cmp = cli_bcapi_version_compare(NULL, zlibver, strlen(zlibver), |
|
266 |
+ ZLIB_VERSION, strlen(ZLIB_VERSION)); |
|
267 |
+ if (cmp) { |
|
268 |
+ cli_dbgmsg("zlib version at runtime: %s, compile time: %s\n", |
|
269 |
+ zlibver, ZLIB_VERSION); |
|
270 |
+ } |
|
271 |
+ if (cmp < 0) { |
|
272 |
+ cli_warnmsg("zlib version at runtime is older than compile time: %s < %s\n", |
|
273 |
+ zlibver, ZLIB_VERSION); |
|
274 |
+ cli_infomsg(NULL, "Make sure zlib is built as shared library, and that the new zlib library is installed in the proper place\n"); |
|
275 |
+ } |
|
276 |
+ |
|
264 | 277 |
{ |
265 | 278 |
unrar_main_header_t x; |
266 | 279 |
if (((char*)&x.flags - (char*)&x) != 3) { |
... | ... |
@@ -899,7 +899,7 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj) |
899 | 899 |
dict_length = q3 - dict; |
900 | 900 |
|
901 | 901 |
/* process pdf names */ |
902 |
- for (q = dict;dict_length;) { |
|
902 |
+ for (q = dict;dict_length > 0;) { |
|
903 | 903 |
int escapes = 0; |
904 | 904 |
q2 = memchr(q, '/', dict_length); |
905 | 905 |
if (!q2) |
... | ... |
@@ -907,7 +907,7 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj) |
907 | 907 |
dict_length -= q2 - q; |
908 | 908 |
q = q2; |
909 | 909 |
/* normalize PDF names */ |
910 |
- for (i = 0;dict_length && (i < sizeof(pdfname)-1); i++) { |
|
910 |
+ for (i = 0;dict_length > 0 && (i < sizeof(pdfname)-1); i++) { |
|
911 | 911 |
q++; |
912 | 912 |
dict_length--; |
913 | 913 |
if (*q == '#') { |
... | ... |
@@ -929,8 +929,8 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj) |
929 | 929 |
pdfobj_flag(pdf, obj, LINEARIZED_PDF); |
930 | 930 |
objstate = STATE_NONE; |
931 | 931 |
} |
932 |
- if (objstate == STATE_JAVASCRIPT || |
|
933 |
- objstate == STATE_OPENACTION) { |
|
932 |
+ if (dict_length > 0 && (objstate == STATE_JAVASCRIPT || |
|
933 |
+ objstate == STATE_OPENACTION)) { |
|
934 | 934 |
if (objstate == STATE_OPENACTION) |
935 | 935 |
pdfobj_flag(pdf, obj, HAS_OPENACTION); |
936 | 936 |
q2 = pdf_nextobject(q, dict_length); |
... | ... |
@@ -941,7 +941,7 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj) |
941 | 941 |
if (q2 && isdigit(*q2)) { |
942 | 942 |
objid |= atoi(q2) & 0xff; |
943 | 943 |
q2 = pdf_nextobject(q2, dict_length); |
944 |
- if (*q2 == 'R') { |
|
944 |
+ if (q2 && *q2 == 'R') { |
|
945 | 945 |
struct pdf_obj *obj2; |
946 | 946 |
cli_dbgmsg("cli_pdf: found %s stored in indirect object %u %u\n", |
947 | 947 |
pdfname, |
... | ... |
@@ -1043,7 +1043,7 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset) |
1043 | 1043 |
cli_dbgmsg("cli_pdf: %%%%EOF not found\n"); |
1044 | 1044 |
} else { |
1045 | 1045 |
const char *t; |
1046 |
- size = q - eofmap + map_off; |
|
1046 |
+ /*size = q - eofmap + map_off;*/ |
|
1047 | 1047 |
q -= 9; |
1048 | 1048 |
for (;q > eofmap;q--) { |
1049 | 1049 |
if (memcmp(q, "startxref", 9) == 0) |
... | ... |
@@ -1636,6 +1636,7 @@ static int cli_scanembpe(cli_ctx *ctx, off_t offset) |
1636 | 1636 |
char *buff; |
1637 | 1637 |
char *tmpname; |
1638 | 1638 |
fmap_t *map = *ctx->fmap; |
1639 |
+ unsigned int corrupted_input; |
|
1639 | 1640 |
|
1640 | 1641 |
tmpname = cli_gentemp(ctx->engine->tmpdir); |
1641 | 1642 |
if(!tmpname) |
... | ... |
@@ -1686,7 +1687,11 @@ static int cli_scanembpe(cli_ctx *ctx, off_t offset) |
1686 | 1686 |
|
1687 | 1687 |
ctx->recursion++; |
1688 | 1688 |
lseek(fd, 0, SEEK_SET); |
1689 |
- if((ret = cli_magic_scandesc(fd, ctx)) == CL_VIRUS) { |
|
1689 |
+ corrupted_input = ctx->corrupted_input; |
|
1690 |
+ ctx->corrupted_input = 1; |
|
1691 |
+ ret = cli_magic_scandesc(fd, ctx); |
|
1692 |
+ ctx->corrupted_input = corrupted_input; |
|
1693 |
+ if(ret == CL_VIRUS) { |
|
1690 | 1694 |
cli_dbgmsg("cli_scanembpe: Infected with %s\n", *ctx->virname); |
1691 | 1695 |
close(fd); |
1692 | 1696 |
if(!ctx->engine->keeptmp) { |
... | ... |
@@ -47,7 +47,7 @@ die() |
47 | 47 |
|
48 | 48 |
# Setup test directory to avoid temporary and output file clashes |
49 | 49 |
test_start() { |
50 |
- ulimit -t 120; ulimit -d 512000; |
|
50 |
+ ulimit -t 120 || true; ulimit -d 512000 || true; |
|
51 | 51 |
ulimit -v 512000 || true; |
52 | 52 |
(cd test-$1 2>/dev/null && killclamd || true) |
53 | 53 |
rm -rf test-$1 |