Exemple #1
0
/*
 * Extract value, store in byteExtract->memoryLocation
 *
 * Return 1 if success
 * Return 0 if can't extract.
 */
ENGINE_LINKAGE int extractValue(void *p, ByteExtract *byteExtract, const uint8_t *cursor)
{
    ByteData byteData;
    int ret;
    uint32_t extracted = 0;
    uint32_t *location = (uint32_t *)byteExtract->memoryLocation;

    byteData.bytes = byteExtract->bytes;
    byteData.flags = byteExtract->flags;
    byteData.multiplier = byteExtract->multiplier;
    byteData.offset = byteExtract->offset;

    /* The following fields are not used, but must be zeroed out. */
    byteData.op = 0;
    byteData.value = 0;
    byteData.offset_refId = 0;
    byteData.value_refId = 0;
    byteData.offset_location = 0;
    byteData.value_location = 0;

    ret = extractValueInternal(p, &byteData, &extracted, cursor);
    if (byteExtract->flags & NOT_FLAG)
        ret = invertMatchResult(ret);
    if (ret > 0)
    {
        if ((byteExtract->align == 2) || (byteExtract->align == 4))
        {
            extracted = extracted + byteExtract->align - (extracted % byteExtract->align);
        }
        *location = extracted;
    }

    return ret;
}
ENGINE_LINKAGE int contentMatch(void *p, ContentInfo* content, const uint8_t **cursor)
{
    int ret = contentMatchInternal(p, content, cursor);
    if (ret < 0)
        return CONTENT_NOMATCH;
    if (content->flags & NOT_FLAG)
        return invertMatchResult(ret);
    return ret;
}
ENGINE_LINKAGE int checkHdrOpt(void *p, HdrOptCheck *optData)
{
    if (optData->flags & NOT_FLAG)
        return invertMatchResult(checkHdrOptInternal(p, optData));
    return checkHdrOptInternal(p, optData);
}
Exemple #4
0
ENGINE_LINKAGE int byteJump(void *p, ByteData *byteData, const uint8_t **cursor)
{
    if (byteData->flags & NOT_FLAG)
        return invertMatchResult(byteJumpInternal(p, byteData, cursor));
    return byteJumpInternal(p, byteData, cursor);
}
ENGINE_LINKAGE int contentMatch(void *p, ContentInfo* content, const uint8_t **cursor)
{
    if (content->flags & NOT_FLAG)
        return invertMatchResult(contentMatchInternal(p, content, cursor));
    return contentMatchInternal(p, content, cursor);
}