...
|
...
|
@@ -184,6 +184,8 @@ int cli_bm_initoff(const struct cli_matcher *root, struct cli_bm_off *data, fmap
|
184
|
184
|
patt = root->bm_pattab[i];
|
185
|
185
|
if(patt->offdata[0] == CLI_OFF_ABSOLUTE) {
|
186
|
186
|
data->offtab[data->cnt] = patt->offset_min + patt->prefix_length;
|
|
187
|
+ if(data->offtab[data->cnt] >= map->len)
|
|
188
|
+ continue;
|
187
|
189
|
data->cnt++;
|
188
|
190
|
} else if((ret = cli_caloff(NULL, &info, map, root->type, patt->offdata, &data->offset[patt->offset_min], NULL))) {
|
189
|
191
|
cli_errmsg("cli_bm_initoff: Can't calculate relative offset in signature for %s\n", patt->virname);
|
...
|
...
|
@@ -195,6 +197,8 @@ int cli_bm_initoff(const struct cli_matcher *root, struct cli_bm_off *data, fmap
|
195
|
195
|
} else if((data->offset[patt->offset_min] != CLI_OFF_NONE) && (data->offset[patt->offset_min] + patt->length <= info.fsize)) {
|
196
|
196
|
if(!data->cnt || (data->offset[patt->offset_min] != data->offtab[data->cnt - 1])) {
|
197
|
197
|
data->offtab[data->cnt] = data->offset[patt->offset_min] + patt->prefix_length;
|
|
198
|
+ if(data->offtab[data->cnt] >= map->len)
|
|
199
|
+ continue;
|
198
|
200
|
data->cnt++;
|
199
|
201
|
}
|
200
|
202
|
}
|