Browse code

Leak testcase.

Török Edvin authored on 2010/03/24 21:14:33
Showing 4 changed files
... ...
@@ -999,6 +999,12 @@ static uint16_t get_type(struct cli_bc_func *func, operand_t op)
999 999
 	return 64;
1000 1000
     return func->types[op];
1001 1001
 }*/
1002
+static int16_t get_optype(const struct cli_bc_func *bcfunc, operand_t op)
1003
+{
1004
+    if (op >= bcfunc->numArgs + bcfunc->numLocals)
1005
+	return 0;
1006
+    return bcfunc->types[op]&0x7fff;
1007
+}
1002 1008
 
1003 1009
 static int parseBB(struct cli_bc *bc, unsigned func, unsigned bb, unsigned char *buffer)
1004 1010
 {
... ...
@@ -1156,9 +1162,9 @@ static int parseBB(struct cli_bc *bc, unsigned func, unsigned bb, unsigned char
1156 1156
 		}
1157 1157
 	}
1158 1158
 	if (inst.opcode == OP_BC_STORE)
1159
-	    inst.type = bcfunc->types[inst.u.binop[0]]&0x7fff;
1159
+	    inst.type = get_optype(bcfunc, inst.u.binop[0]);
1160 1160
 	if (inst.opcode == OP_BC_COPY)
1161
-	    inst.type = bcfunc->types[inst.u.binop[1]]&0x7fff;
1161
+	    inst.type = get_optype(bcfunc, inst.u.binop[1]);
1162 1162
 	if (!ok) {
1163 1163
 	    cli_errmsg("Invalid instructions or operands\n");
1164 1164
 	    return CL_EMALFDB;
... ...
@@ -1104,5 +1104,7 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
1104 1104
     }
1105 1105
 
1106 1106
     cli_stack_destroy(&stack);
1107
+    free(ptrinfos.stack_infos);
1108
+    free(ptrinfos.glob_infos);
1107 1109
     return stop == CL_BREAK ? CL_SUCCESS : stop;
1108 1110
 }
... ...
@@ -202,6 +202,14 @@ START_TEST (test_matchwithread)
202 202
 }
203 203
 END_TEST
204 204
 
205
+START_TEST (test_pdf)
206
+{
207
+    cl_init(CL_INIT_DEFAULT);
208
+    runtest("input/pdf.cbc", 0, 0, 0, NULL, NULL, NULL, NULL);
209
+    runtest("input/pdf.cbc", 0, 0, 1, NULL, NULL, NULL, NULL);
210
+}
211
+END_TEST
212
+
205 213
 Suite *test_bytecode_suite(void)
206 214
 {
207 215
     Suite *s = suite_create("bytecode");
... ...
@@ -216,5 +224,6 @@ Suite *test_bytecode_suite(void)
216 216
     tcase_add_test(tc_cli_arith, test_lsig);
217 217
     tcase_add_test(tc_cli_arith, test_inf);
218 218
     tcase_add_test(tc_cli_arith, test_matchwithread);
219
+    tcase_add_test(tc_cli_arith, test_pdf);
219 220
     return s;
220 221
 }
221 222
new file mode 100644
... ...
@@ -0,0 +1,51 @@
0
+ClamBCafhehkmijkd|afefdfggifnf```ca`a```|bhacflfafmfbfcfmb`cnbac`cmbacdcmbgfffdfbcafbfafbc``bccaap`clamcoincidencejb:1412
1
+.{ClamAV-Test-File-detected-via-bytecode};Target:1;(2&1&0);0:4d5a50000200000004000f00ffff0000;EOF-544:4d5a50000200000004000f00ffff0000;S0+0:4d5a50000200000004000f00ffff0000
2
+Tedebbgebageb`gebofebnfebmfebgeeblfebkfebjfebdfebcfebbfebheebafeboeebadebcddaeahdakahaaaaaaaa`aabb`bb`baacb`bbadb`baacb`bb`bb`baadb`bbadbadb`bcafahb`fahb`fahb`fcaab`bdb`db`bdbccahdbfaahcamb`bb`bb`ab`abefbffb`bbgfbhfb`bb`bb`bb`bcahb`bb`ab`ab`bb`bb`bb`ab`acboab`aahahb`bb`bb`bb`bb`bb`bb`bb`bb`bb`ab`ab`ab`ab`ab`ab`bb`bb`bb`bb`ab`ab`bb`bb`bb`bb`bb`bbhfcbnab`aahahb`bb`bb`bb`bb`bb`db`bb`bb`ab`ab`ab`ab`ab`ab`bb`bb`bb`bb`ab`ab`db`db`db`db`bb`bbhfdb`abifcabb`bb`bdbeaahdbnbahdbkaahdbfbahdbibahdbcbahdaabaddbgbahdaaah
3
+Ebjbagbjbbke|bbabfigdgefcfofdfefoebgdgoeefbgbgofbg``agbke|baadfefbfeggfoe`gbgifnfdgoeegifnfdg``aobke|ak`gefoebgafggafdfdfbg``afble|b`adfefbfeggfoe`gbgifnfdgoecgdgbg``abble|aebgefafdf``adbme|aecgefefkf``aeble|amcgefdgfgifbgegcgnfafmfef``
4
+Gdc``hbfb`@`bbg@`bagBcdBlfBafBmfBadBfeBmbBdeBefBcgBdgBmbBfdBifBlfBefBmbBdfBefBdgBefBcfBdgBefBdfBmbBfgBifBafBmbBbfBigBdgBefBcfBofBdfBef@`b`g@Ab`b`aAa`bofB`cBjcBdcBdfBecBafBecB`cB`cB`cB`cBbcB`cB`cB`cB`cB`cB`cB`cBdcB`cB`cB`cBffB`cB`cBffBffBffBffB`cB`cB`cB`c@`bnfBedBodBfdBmbBecBdcBdcBjcBdcBdfBecBafBecB`cB`cB`cB`cBbcB`cB`cB`cB`cB`cB`cB`cBdcB`cB`cB`cBffB`cB`cBffBffBffBffB`cB`cB`cB`c@`bmfBceB`cBkbB`cBjcBdcBdfBecBafBecB`cB`cB`cB`cBbcB`cB`cB`cB`cB`cB`cB`cBdcB`cB`cB`cBffB`cB`cBffBffBffBffB`cB`cB`cB`c@`b`aCa`a`bgeBedB`eBjcB`b@`blfBcdBofBegBlfBdfBnfBgbBdgB`bBbgBefBafBdfB`bBecB`bBbfBigBdgBefBcgB`bB`dBedB`eAj@`bkfBndBofB`bBgbBmfBofBfgB`bBefBbfBhgBlbB`bBcfBigB`gBhfBefBbgBdgBefBhgBdgBgbB`bBffBofBegBnfBdfB`bBafBdgB`bBefBnfBdgBbgBigB`gBofBifBnfBdgAj@`bjfBfeBadB`bBofBffB`bBcfBigB`gBhfBefBbgBdgBefBhgBdgB`bBifBcgB`b@`bcfBbeBfeBadB`bBofBffB`bBcfBigB`gBhfBefBbgBdgBefBhgBdgB`bBifBcgB`b@`bbfBcdBafBnfBgbBdgB`bBlfBofBcfBafBdgBefB`bBdgBhfBefB`bB`gBhfBifBcgBifBcfBafBlfB`bBofBffBffBcgBefBdgB`bBofBffB`bBdgBhfBefB`bBcfBigB`gBhfBefBbgBdgBefBhgBdg@`bcfBcdBigB`gBhfBefBbgBdgBefBhgBdgB`bBcgBdgBafBbgBdgBcgB`bBafBdgB`b@`bofBcdBafBnfBgbBdgB`bBbgBefBafBdfB`bBacB`cB`bBbfBigBdgBefBcgB`bBofBffB`bBcfBigB`gBhfBefBbgBdgBefBhgBdgAj@`bheBhdBedBldBldBodB`bBgeBodBbeBmd@`boe@@@Aa@Ab`bad@Ab`bad@Ae`bad@Af`bad@Ag`bad@Ai`bad@Aj`bad@Ak`bad@Al`bad@Dc``h`bcdB`dDc``h`bcdAdDc``h`bad@Am`bad@An`bad@Ao`bad@B`a`bad@Baa`bcdAhD```h`bcdAdD```h`bcd@D```h`
5
+A`b`bLb`dahab`bab`babgeabheab`b`b`b`b`b`b`b`bad`b`b`aa`b`b`bad`ah`aa`b`b`bad`b`b`aa`````b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`aa`b`b`b`b`b`b`b`b`bad`b`b`aa`````b`b`ah`b`b`bad`aa`ah`ah`ah`aa```b`b`aa`````bad`b`b`aa`bad```bad`b`b`b`b`b`b```Fbldbaa
6
+Bb`baegbBma`b`bafabbafBga`@db`bagabaagaeb`bahabbadae@dbadaidbbkdac@db`bajabbabaiAedaaakeab`bajAedTaaakabaa
7
+Bb`balabbafBha`@dTcab`b@d
8
+Bbadamdbbkdac@dahangbamaaaoeaahanBkkaTaaaoadac
9
+Bb`bb`aabbafBia`@dTcab`b@d
10
+BbadbaadbbkdacAadb`bbbagbbaaaabcalb``bbbbaabTaabcaaeaf
11
+Bb`babobbbaTbaaf
12
+Bb`bbfabbabbfab`bbgaabbafBja`@db`bbhaabaagbfab`bbiagbBla`b`bbjab`bfabiab`bbkaabbafBna`@db`bblaabaagbjab`bbmaabaaobjaaabnaeab`bbmaHoooooooodTaabnaagah
13
+Bb`bboaabbafBoa`@dTcab`b@d
14
+Bb`bb`babbafB`b`@db`bbababaagbmab`bbbbabbadbma@dbadbcbdbbbead@db`bbdbabbabbcbAjdaabebeab`bbdbAjd``bb@daa``bbBiba`Taabebajai
15
+Bb`bbhbabbafBab`@dTcab`b@d
16
+Bahbibbb`bibb`bbjbbbaabjbbadbkbdbbbeadbjbaablbiab`bbjbAkdTaablbakb`a
17
+Bahbmba`bibAaaahbnbgbbkbahbobm`bnbbmbaab`ciab`bbjbAkdTaab`calb`a
18
+B``fbbobbkbb`bbbca`bjbAadaabcceab`bbbcAjd``bbbbcaa``bbbob`Taabccamaj
19
+Bbadbfcdbbbead@db`bbgckbbfcBbb`Ajdaabhceab`bbgc@dTaabhcanao
20
+BbadbicdbbbeadAjd``fb@abicbadbkcdbbbead@db`bblcabbafbkc@db`bbmcabbaeBca`@dTcab`b@d
21
+BTcab`b@d
22
+Bb`bbncababjbDc`ged``mbTmbE
23
+Sfeidbeeecendadmdedoe`ebeedfdidhehbbbbbibSfeidbeeecendadmdedcehbbbcdlfafmfadfembdeefcgdgmbfdiflfefmbdfefdgefcfdgefdfmbfgifafmbbfigdgefcfofdfefbbibSdeadbegdeddehbacib
24
+Sobjb`bdehfifcg`bifcg`baflflf`bdfegmfmfig`bcgdgegffff`bjbobSceidgdndaddeeebeedceoeddedcdldoebdedgdidndSddedcdldadbeedoeceidgdndaddeeebeedhbmdjeffbgofmfbdodfdibSddedcdldadbeedoeceidgdndaddeeebeedhbmdjeffbgofmfedodfdib
25
+ddedcdldadbeedoeceidgdndaddeeebeedhbmdjeffbgofmfce`cibSceidgdndaddeeebeedceoeddedcdldoeedndddSSceidgdndaddeeebeedceoeddedfdoebdedgdidndSddedfdidndedoeceidgdndaddeeebeedhbmdjeffbgofmfbdodfdlb`b`b`b`b`b`b`bbb`cjcdcdfecafec`c`c`c`cbc`c`c`c`c`c`c`cdc`c`c`cff`c`cffffffff`c`c`c`cbbib
26
+ddedfdidndedoeceidgdndaddeeebeedhbmdjeffbgofmfedodfdlb`bbbedodfdmbecdcdcjcdcdfecafec`c`c`c`cbc`c`c`c`c`c`c`cdc`c`c`cff`c`cffffffff`c`c`c`cbbibSddedfdidndedoeceidgdndaddeeebeedhbmdjeffbgofmfce`clb`b`b`b`b`bbbce`ckb`cjcdcdfecafec`c`c`c`cbc`c`c`c`c`c`c`cdc`c`c`cff`c`cffffffff`c`c`c`cbbib
27
+ceidgdndaddeeebeedceoeedndddSS`eedoeeend`eadcdkdedbeoeddedcdldadbeedSSbfofoflf`blfofgfifcfaflfoedgbgifgfgfefbghbfgofifdfibSkgSbgefdgegbgnf`bmfafdgcfhfefcghbceifgfnfafdgegbgefcgnbmdjeffbgofmfbdodfdib`bfbfb`bmfafdgcfhfefcghbceifgfnfafdgegbgefcgnbmdjeffbgofmfedodfdib`bfbfb`bmfafdgcfhfefcghbceifgfnfafdgegbgefcgnbmdjeffbgofmfce`cibkc
28
+mgSobjb`bddegmfmfig`bcgdgegffff`befnfdfcg`bhfefbgef`bjbobSSifnfdg`befnfdgbgig`gofifnfdghbib`bkgSobob`bgdefdg`bdghfef`befnfdgbgig`b`gofifnfdg`bodfdfdceeddeSegifnfdgccbcoedg`bef`g`bmc`bgfefdgednfdgbgig`eofifnfdghbibkc
29
+dfefbfeggfhbbbed`ejc`bbbibkc`bdfefbfeggfhbef`gibkcSSobob`bmdoffgef`bdgof`bdghfef`befnfdgbgig`b`gofifnfdg`bofffffcgefdg`bifnf`bdghfef`bffiflfefScgefefkfhbef`glb`bceededkdoeceeddeibkc
30
+Sobjb`bhdefbgef`bggef`blfofofkf`bffofbg`bmfoffg`befbfhglb`bfgaflfegefSdehfef`bdfifcgafcgcgefmfbflfefbg`bifcg`bhfofggeffgefbg`bnfofdg`bigefdg`bifnfdgefgfbgafdgefdf`bifnf`bdghfef`bbfcf`bcgof`bffofbg`bnfofgg`bggef`bcfhfefcfkf
31
+mfafnfegaflflfig`bifff`bifdggbcg`baf`bmfoffgnb`bidnf`bhfefhg`bifdg`bcghfofeglfdf`bbfef`bbfbfccccbcbcacac`c`c`bffofbg`bmfoffg`befbfhglb`b`c`cacacbcbccccc`bSdghfafdg`bifcg`bec`bbfigdgefcg`boffgefbgaflflfnb
32
+jbobSobob`bmdafkfef`bbgofofmf`bffofbg`bdghfef`bec`bbfigdgefcg`bdgof`bbfef`bbgefafdfSegifnfdghcoedg`bffifbgcgdgoeof`gkeecmekcSobob`bbeefafdf`bec`bbfigdgefcgSifffhbbgefafdfhbffifbgcgdgoeof`glb`becibabmcecib`bkg
33
+dfefbfeggfhbbbcdofeglfdfnfgbdg`bbgefafdf`bec`bbfigdgefcg`b`ded`elenfbbibkcSbgefdgegbgnf`b`ckcSmgSSobob`bcdhfefcfkf`bifff`bdghfef`bffifbgcgdg`bbfigdgef`bhbafkfaf`bffifbgcgdgoeof`gke`cmeib`bifcg`bbfbf
34
+ifffhbffifbgcgdgoeof`gke`cme`babmc`b`chgbfbfib`bkgSdfefbfeggfhbbbndof`bgbmfoffg`befbfhglb`bcfig`ghfefbgdgefhgdggb`bffofegnfdf`bafdg`befnfdgbgig`gofifnfdglenfbbibkc
35
+bgefdgegbgnf`b`ckcSmgSSobob`bdeafkfef`bdghfef`bafbggfegmfefnfdg`bofff`bmfoffg`befbfhglb`bnbnbnb`bgghfifcfhf`bifcg`bdghfef`bfead`bofff`bdghfef`bcfig`ghfefbgdgefhgdg
36
+egifnfdgccbcoedg`bfgafoeofffoecfig`ghfefbgdgefhgdg`bmc`bcflfifoebgefafdfifnfdgccbchbhbegifnfdgccbcoedg`bjbibhbffifbgcgdgoeof`gkbacibibkcSdfefbfeggfhbbbfead`bofff`bcfig`ghfefbgdgefhgdg`bifcg`bbbibkcdfefbfeggfhbfgafoeofffoecfig`ghfefbgdgefhgdgibkc
37
+Sobob`bmdafkfef`bdghfef`bfead`bafnf`bbefead`bmb`bdghfafdg`bifcg`bcgegbfdgbgafcfdg`bdghfef`bifmfafgfefbfafcgef`bffbgofmf`bifdgSegifnfdgccbcoedg`bbgfgafoeofffoecfig`ghfefbgdgefhgdg`bmc`bfgafoeofffoecfig`ghfefbgdgefhgdg`bmb`b`boeoecflfafmfbfcfoe`gefdfafdgafnbof`gdgccbcnbidmfafgfefbdafcgefkc
38
+dfefbfeggfhbbbbefead`bofff`bcfig`ghfefbgdgefhgdg`bifcg`bbbibkcdfefbfeggfhbbgfgafoeofffoecfig`ghfefbgdgefhgdgibkcSSobob`bdeegbgnf`bdghfef`bbefead`bofff`bdghfef`bcfig`ghfefbgdgefhgdg`bifnfdgof`baf`bffiflfef`bhbbgafggib`bofffffcgefdg
39
+egifnfdgccbcoedg`bofffffcgefdgoeofffoecfig`ghfefbgdgefhgdg`bmc`b`gefoebgafggafdfdfbghbbgfgafoeofffoecfig`ghfefbgdgefhgdgibkcSSobob`bidff`bdghfef`bofffffcgefdg`bifcg`bbfafdflb`bbfafiflf`bofegdg
40
+ifffhbofffffcgefdgoeofffoecfig`ghfefbgdgefhgdg`bmcmc`b`eedoeidndfeadldidddoebefeadib`bkgSdfefbfeggfhbbbcdafnfgbdg`blfofcfafdgef`bdghfef`b`ghfifcgifcfaflf`bofffffcgefdg`bofff`bdghfef`bcfig`ghfefbgdgefhgdgbbibkc
41
+bgefdgegbgnf`b`ckcSmgSdfefbfeggfhbbbcdig`ghfefbgdgefhgdg`bcgdgafbgdgcg`bafdg`bbbibkcdfefbfeggfhbofffffcgefdgoeofffoecfig`ghfefbgdgefhgdgibkcSSobob`bmdoffgef`bdgof`bdghfef`bcfig`ghfefbgdgefhgdg`bifnf`bdghfef`bffiflfef
42
+cgefefkfhbofffffcgefdgoeofffoecfig`ghfefbgdgefhgdglb`bceededkdoeceeddeibkcSSobob`bmdafkfef`bbgofofmf`bffofbg`bdghfef`bcfig`ghfefbgdgefhgdg`bdgof`bbfef`bbgefafdf`bmb`bac`c`bbfigdgefcg`bdghfafdg`bifcg`bbbhdedldldod`bgeodbemdbb`b`glfegcg`bofnfef`bbfigdgef`bffofbg`bdghfef`bdgefbgmfifnfafdgofbg
43
+egifnfdghcoedg`bcfig`ghfefbgdgefhgdgkeacacmekcSSobob`bbeefafdf`bdghfef`bcfig`ghfefbgdgefhgdg`bffbgofmf`bffiflfef`bifnfdgof`bbbcfig`ghfefbgdgefhgdgbbSifffhbbgefafdfhbcfig`ghfefbgdgefhgdglb`bac`cibabmcac`cib`bkg
44
+dfefbfeggfhbbbcdafnfgbdg`bbgefafdf`bac`c`bbfigdgefcg`bofff`bcfig`ghfefbgdgefhgdglenfbbibkcSbgefdgegbgnf`b`ckcSmgSobob`bdehfef`bbbdfefcfbgig`gdgifofnfbb`blfofof`g`bmb`bdgegbgnfcg`bdghfef`bcfig`ghfefbgdgefhgdg`bifnfdgof`b`glfafigifnfdgefhgdg
45
+egifnfdghcoedg`bcfegbgbgefnfdgoe`gofcgifdgifofnflb`bkfefig`bmc`b`chgbcickcSffofbghbcfegbgbgefnfdgoe`gofcgifdgifofnfmc`ckc`bcfegbgbgefnfdgoe`gofcgifdgifofnflcac`ckc`bcfegbgbgefnfdgoe`gofcgifdgifofnfkbkbib`bkg
46
+egifnfdghcoedg`bifnf`bmc`bcfig`ghfefbgdgefhgdgkecfegbgbgefnfdgoe`gofcgifdgifofnfmekcSkfefigkbkbkcScfig`ghfefbgdgefhgdgkecfegbgbgefnfdgoe`gofcgifdgifofnfme`bnemc`bkfefigkc
47
+kfefig`bmc`bcfig`ghfefbgdgefhgdgkecfegbgbgefnfdgoe`gofcgifdgifofnfmekcSmgSSobob`bcdofmf`gafbgef`bdghfef`bhbnfofggib`b`glfafifnfdgefhgdg`bggifdghf`bdghfef`bbgefffefbgefnfcfef`bhbbbhdedldldod`bgeodbemdbbib
48
+ifffhbabmfefmfcfmf`ghbcfig`ghfefbgdgefhgdglb`bbbhdedldldod`bgeodbemdbblb`bac`cibib`bkgScfig`ghfefbgdgefhgdgkeac`cme`bmc`b`ckc`bobob`baddfdf`baf`bcgdgbgifnfgf`bdgefbgmfifnfafdgofbg
49
+dfefbfeggfhbhbcfhfafbg`bjbibcfig`ghfefbgdgefhgdgibkc`bobob`b`ebgifnfdg`bifdglb`bjfegcgdg`bffofbg`bffegnfSffofegnfdffeifbgegcghbbbcdlfafmfadfembdeefcgdgmbfdiflfefmbdfefdgefcfdgefdfmbfgifafmbbfigdgefcfofdfefbbibkc`bobob`bceefdg`bdghfef`bfgifbgegcg`bnfafmfefab
50
+mgSbgefdgegbgnf`b`ckcSmgSSSS
0 51
\ No newline at end of file