Bug #207 » 0001-Fix-for-bug-207-depth-offset-not-correctly-updated-o.patch
| src/detect-content.c | ||
|---|---|---|
| 
             data->flags & DETECT_CONTENT_WITHIN || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| ... | ... | |
| 
             !(data->flags & DETECT_CONTENT_WITHIN) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_DISTANCE || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| ... | ... | |
| 
             !(data->flags & DETECT_CONTENT_WITHIN) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_DISTANCE || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| 
         result &= (data->within == 10 && data->offset == 10 && data->depth == 13); 
   | 
||
| 
         result &= (data->within == 10 && data->offset == 10 && data->depth == 23); 
   | 
||
| 
         data = (DetectContentData *)s->dmatch->ctx; 
   | 
||
| 
         if (data->flags & DETECT_CONTENT_RAWBYTES || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NOCASE || 
   | 
||
| 
             data->flags & DETECT_CONTENT_WITHIN || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| 
         result &= (data->offset == 5 && data->depth == 9); 
   | 
||
| 
         result &= (data->offset == 5 && data->depth == 14); 
   | 
||
| 
         s->next = SigInit(de_ctx, "alert tcp any any -> any any " 
   | 
||
| 
                           "(msg:\"Testing bytejump_body\"; " 
   | 
||
| ... | ... | |
| 
             data->flags & DETECT_CONTENT_WITHIN || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| ... | ... | |
| 
             !(data->flags & DETECT_CONTENT_WITHIN) || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| ... | ... | |
| 
             data->flags & DETECT_CONTENT_WITHIN || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| ... | ... | |
| 
             data->flags & DETECT_CONTENT_WITHIN || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| ... | ... | |
| 
             data->flags & DETECT_CONTENT_WITHIN || 
   | 
||
| 
             !(data->flags & DETECT_CONTENT_DISTANCE) || 
   | 
||
| 
             data->flags & DETECT_CONTENT_FAST_PATTERN || 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED ) { 
   | 
||
| 
             data->flags & DETECT_CONTENT_NEGATED || 
   | 
||
| 
             result == 0) { 
   | 
||
| 
             result = 0; 
   | 
||
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| src/detect-depth.c | ||
|---|---|---|
| 
                     return -1; 
   | 
||
| 
                 } 
   | 
||
| 
                 ud->depth = (uint32_t)atoi(str); 
   | 
||
| 
                 if (ud->uricontent_len + ud->offset > ud->depth) { 
   | 
||
| 
                     uint32_t depth = (ud->depth > ud->uricontent_len) ? 
   | 
||
| 
                         ud->depth : ud->uricontent_len; 
   | 
||
| 
                     ud->depth = ud->offset + depth; 
   | 
||
| 
                     SCLogDebug("depth increased to %"PRIu32" to match pattern len " 
   | 
||
| 
                             "and offset", ud->depth); 
   | 
||
| 
                 if (ud->depth < ud->uricontent_len) { 
   | 
||
| 
                     ud->depth = ud->uricontent_len; 
   | 
||
| 
                     SCLogDebug("depth increased to %"PRIu32" to match pattern len ", 
   | 
||
| 
                                ud->depth); 
   | 
||
| 
                 } 
   | 
||
| 
                 /* Now update the real limit, as depth is relative to the offset */ 
   | 
||
| 
                 ud->depth += ud->offset; 
   | 
||
| 
             } 
   | 
||
| 
             break; 
   | 
||
| ... | ... | |
| 
                     return -1; 
   | 
||
| 
                 } 
   | 
||
| 
                 cd->depth = (uint32_t)atoi(str); 
   | 
||
| 
                 if (cd->content_len + cd->offset > cd->depth) { 
   | 
||
| 
                     uint32_t depth = (cd->depth > cd->content_len) ? 
   | 
||
| 
                         cd->depth : cd->content_len; 
   | 
||
| 
                     cd->depth = cd->offset + depth; 
   | 
||
| 
                     SCLogDebug("depth increased to %"PRIu32" to match pattern len " 
   | 
||
| 
                             "and offset", cd->depth); 
   | 
||
| 
                 if (cd->depth < cd->content_len) { 
   | 
||
| 
                     cd->depth = cd->content_len; 
   | 
||
| 
                     SCLogDebug("depth increased to %"PRIu32" to match pattern len ", 
   | 
||
| 
                                cd->depth); 
   | 
||
| 
                 } 
   | 
||
| 
                 /* Now update the real limit, as depth is relative to the offset */ 
   | 
||
| 
                 cd->depth += cd->offset; 
   | 
||
| 
             } 
   | 
||
| 
             break; 
   | 
||
| src/detect-offset.c | ||
|---|---|---|
| 
                     return -1; 
   | 
||
| 
                 } 
   | 
||
| 
                 ud->offset = (uint32_t)atoi(str); 
   | 
||
| 
                 if (ud->depth != 0 && (ud->uricontent_len + ud->offset) > ud->depth) { 
   | 
||
| 
                     if (ud->depth > ud->uricontent_len) { 
   | 
||
| 
                         SCLogDebug("depth increased to %"PRIu32" to match pattern len" 
   | 
||
| 
                             " and offset", ud->depth + ud->offset); 
   | 
||
| 
                         ud->depth += ud->offset; 
   | 
||
| 
                     } else { 
   | 
||
| 
                         SCLogDebug("depth increased to %"PRIu32" to match pattern len" 
   | 
||
| 
                                 " and offset", ud->uricontent_len + ud->offset); 
   | 
||
| 
                         ud->depth = ud->uricontent_len + ud->offset; 
   | 
||
| 
                 if (ud->depth != 0) { 
   | 
||
| 
                     if (ud->depth < ud->uricontent_len) { 
   | 
||
| 
                         SCLogDebug("depth increased to %"PRIu32" to match pattern len", 
   | 
||
| 
                                    ud->uricontent_len); 
   | 
||
| 
                         ud->depth = ud->uricontent_len; 
   | 
||
| 
                     } 
   | 
||
| 
                     /* Updating the depth as is relative to the offset */ 
   | 
||
| 
                     ud->depth += ud->offset; 
   | 
||
| 
                 } 
   | 
||
| 
                 break; 
   | 
||
| ... | ... | |
| 
                     return -1; 
   | 
||
| 
                 } 
   | 
||
| 
                 cd->offset = (uint32_t)atoi(str); 
   | 
||
| 
                 if (cd->depth != 0 && (cd->content_len + cd->offset) > cd->depth) { 
   | 
||
| 
                     if (cd->depth > cd->content_len) { 
   | 
||
| 
                         SCLogDebug("depth increased to %"PRIu32" to match pattern len" 
   | 
||
| 
                             " and offset", cd->depth + cd->offset); 
   | 
||
| 
                         cd->depth += cd->offset; 
   | 
||
| 
                     } else { 
   | 
||
| 
                         SCLogDebug("depth increased to %"PRIu32" to match pattern len" 
   | 
||
| 
                                 " and offset", cd->content_len + cd->offset); 
   | 
||
| 
                         cd->depth = cd->content_len + cd->offset; 
   | 
||
| 
                 if (cd->depth != 0) { 
   | 
||
| 
                     if (cd->depth < cd->content_len) { 
   | 
||
| 
                         SCLogDebug("depth increased to %"PRIu32" to match pattern len", 
   | 
||
| 
                                    cd->content_len); 
   | 
||
| 
                         cd->depth = cd->content_len; 
   | 
||
| 
                     } 
   | 
||
| 
                     /* Updating the depth as is relative to the offset */ 
   | 
||
| 
                     cd->depth += cd->offset; 
   | 
||
| 
                 } 
   | 
||
| 
                 break; 
   | 
||
| src/detect-uricontent.c | ||
|---|---|---|
| 
         if (s == NULL || 
   | 
||
| 
             s->umatch == NULL || 
   | 
||
| 
             s->pmatch == NULL || 
   | 
||
| 
             ((DetectContentData *)s->pmatch->ctx)->depth != 10 || 
   | 
||
| 
             ((DetectContentData *)s->pmatch->ctx)->depth != 15 || 
   | 
||
| 
             ((DetectContentData *)s->pmatch->ctx)->offset != 5 || 
   | 
||
| 
             s->match != NULL) 
   | 
||
| 
         { 
   | 
||
| ... | ... | |
| 
         if (s == NULL || 
   | 
||
| 
             s->umatch == NULL || 
   | 
||
| 
             s->pmatch == NULL || 
   | 
||
| 
             ((DetectUricontentData *)s->umatch->ctx)->depth != 10 || 
   | 
||
| 
             ((DetectUricontentData *)s->umatch->ctx)->depth != 15 || 
   | 
||
| 
             ((DetectUricontentData *)s->umatch->ctx)->offset != 5 || 
   | 
||
| 
             s->match != NULL) 
   | 
||
| 
         { 
   | 
||
| ... | ... | |
| 
             goto end; 
   | 
||
| 
         } else if (s->umatch == NULL || 
   | 
||
| 
                 s->pmatch == NULL || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 10 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 15 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->offset != 5 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch_tail->ctx)->within != 30 || 
   | 
||
| 
                 s->match != NULL) 
   | 
||
| ... | ... | |
| 
             goto end; 
   | 
||
| 
         } else if (s->umatch == NULL || 
   | 
||
| 
                 s->pmatch == NULL || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 10 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 15 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->offset != 5 || 
   | 
||
| 
                 ((DetectUricontentData*) s->umatch_tail->ctx)->within != 30 || 
   | 
||
| 
                 s->match != NULL) 
   | 
||
| ... | ... | |
| 
         } else if ( 
   | 
||
| 
                 s->umatch == NULL || 
   | 
||
| 
                 s->pmatch == NULL || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 10 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 15 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->offset != 5 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch_tail->ctx)->distance != 30 || 
   | 
||
| 
                 s->match != NULL) 
   | 
||
| ... | ... | |
| 
         } else if ( 
   | 
||
| 
                 s->umatch == NULL || 
   | 
||
| 
                 s->pmatch == NULL || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 10 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->depth != 15 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->offset != 5 || 
   | 
||
| 
                 ((DetectContentData*) s->umatch_tail->ctx)->distance != 30 || 
   | 
||
| 
                 s->match != NULL) 
   | 
||
| ... | ... | |
| 
             goto end; 
   | 
||
| 
         } 
   | 
||
| 
         if (    ((DetectContentData*) s->pmatch->ctx)->depth != 10 || 
   | 
||
| 
         if (    ((DetectContentData*) s->pmatch->ctx)->depth != 15 || 
   | 
||
| 
                 ((DetectContentData*) s->pmatch->ctx)->offset != 5 || 
   | 
||
| 
                 ((DetectUricontentData*) s->umatch_tail->ctx)->distance != 30 || 
   | 
||
| 
                 ((DetectUricontentData*) s->umatch_tail->ctx)->within != 60 || 
   | 
||
- « Previous
 - 1
 - 2
 - 3
 - Next »