~ubuntu-branches/ubuntu/utopic/suricata/utopic

« back to all changes in this revision

Viewing changes to src/detect-window.c

  • Committer: Package Import Robot
  • Author(s): Pierre Chifflier
  • Date: 2011-11-17 23:20:51 UTC
  • mfrom: (1.1.10)
  • Revision ID: package-import@ubuntu.com-20111117232051-wlo0g2fyinx0zi25
Tags: 1.1-1
* Imported Upstream version 1.1
* Add instructions on getting new rules using oinkmaster
* Add Recommends on oinkmaster
* Move snort-rules-default to Recommends

Show diffs side-by-side

added added

removed removed

Lines of Context:
103
103
 */
104
104
int DetectWindowMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx, Packet *p, Signature *s, SigMatch *m) {
105
105
    DetectWindowData *wd = (DetectWindowData *)m->ctx;
106
 
    if ( !(PKT_IS_TCP(p)) || wd == NULL) {
 
106
 
 
107
    if ( !(PKT_IS_TCP(p)) || wd == NULL || PKT_IS_PSEUDOPKT(p)) {
107
108
        return 0;
108
109
    }
109
110
 
126
127
    DetectWindowData *wd = NULL;
127
128
    char *args[3] = {NULL,NULL,NULL}; /* PR: Why PCRE MAX_SUBSTRING must be multiple of 3? */
128
129
        #define MAX_SUBSTRINGS 30
129
 
        int i = 0;
 
130
 
130
131
    int ret = 0, res = 0;
131
132
    int ov[MAX_SUBSTRINGS];
132
133
 
 
134
 
133
135
    ret = pcre_exec(parse_regex, parse_regex_study, windowstr, strlen(windowstr), 0, 0, ov, MAX_SUBSTRINGS);
134
136
 
135
137
    if (ret < 1 || ret > 3) {
169
171
        }
170
172
    }
171
173
 
 
174
        int i = 0;
172
175
    for (i = 0; i < (ret -1); i++){
173
176
        if (args[i] != NULL)
174
177
            SCFree(args[i]);
176
179
    return wd;
177
180
 
178
181
error:
179
 
    for (i = 0; i < (ret - 1) && i < 3; i++){
 
182
    for (i = 0; i < (ret -1) && i < 3; i++){
180
183
        if (args[i] != NULL)
181
184
            SCFree(args[i]);
182
185
    }
214
217
    sm->ctx = (void *)wd;
215
218
 
216
219
    SigMatchAppendPacket(s, sm);
 
220
    s->flags |= SIG_FLAG_REQUIRE_PACKET;
217
221
 
218
222
    return 0;
219
223