|
|
|
@ -43,7 +43,8 @@ static void DetectTransformFromBase64DecodeFree(DetectEngineCtx *, void *);
|
|
|
|
|
#define DETECT_TRANSFORM_FROM_BASE64_MODE_DEFAULT (uint8_t) SCBase64ModeRFC4648
|
|
|
|
|
static void DetectTransformFromBase64DecodeRegisterTests(void);
|
|
|
|
|
#endif
|
|
|
|
|
static void TransformFromBase64Decode(InspectionBuffer *buffer, void *options);
|
|
|
|
|
static void TransformFromBase64Decode(
|
|
|
|
|
DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, void *options);
|
|
|
|
|
|
|
|
|
|
void DetectTransformFromBase64DecodeRegister(void)
|
|
|
|
|
{
|
|
|
|
@ -112,7 +113,8 @@ exit_path:
|
|
|
|
|
SCReturnInt(r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void TransformFromBase64Decode(InspectionBuffer *buffer, void *options)
|
|
|
|
|
static void TransformFromBase64Decode(
|
|
|
|
|
DetectEngineThreadCtx *det_ctx, InspectionBuffer *buffer, void *options)
|
|
|
|
|
{
|
|
|
|
|
SCDetectTransformFromBase64Data *b64d = options;
|
|
|
|
|
const uint8_t *input = buffer->inspect;
|
|
|
|
@ -170,7 +172,7 @@ static int DetectTransformFromBase64DecodeTest01(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == result_len);
|
|
|
|
|
FAIL_IF_NOT(strncmp(result, (const char *)buffer.inspect, result_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
@ -191,7 +193,7 @@ static int DetectTransformFromBase64DecodeTest01a(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == result_len);
|
|
|
|
|
FAIL_IF_NOT(strncmp(result, (const char *)buffer.inspect, result_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
@ -211,7 +213,7 @@ static int DetectTransformFromBase64DecodeTest02(void)
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
buffer_orig = buffer;
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_offset == buffer_orig.inspect_offset);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == buffer_orig.inspect_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
@ -233,7 +235,7 @@ static int DetectTransformFromBase64DecodeTest03(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(strncmp((const char *)input, (const char *)buffer.inspect, input_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
InspectionBufferFree(&buffer);
|
|
|
|
@ -254,7 +256,7 @@ static int DetectTransformFromBase64DecodeTest04(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(strncmp((const char *)input, (const char *)buffer.inspect, input_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
InspectionBufferFree(&buffer);
|
|
|
|
@ -278,7 +280,7 @@ static int DetectTransformFromBase64DecodeTest05(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == result_len);
|
|
|
|
|
FAIL_IF_NOT(strncmp(result, (const char *)buffer.inspect, result_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
@ -303,7 +305,7 @@ static int DetectTransformFromBase64DecodeTest06(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == result_len);
|
|
|
|
|
FAIL_IF_NOT(strncmp(result, (const char *)buffer.inspect, result_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
@ -327,7 +329,7 @@ static int DetectTransformFromBase64DecodeTest07(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == result_len);
|
|
|
|
|
FAIL_IF_NOT(strncmp(result, (const char *)buffer.inspect, result_len) == 0);
|
|
|
|
|
PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
@ -348,7 +350,7 @@ static int DetectTransformFromBase64DecodeTest08(void)
|
|
|
|
|
InspectionBufferInit(&buffer, input_len);
|
|
|
|
|
InspectionBufferSetup(NULL, -1, &buffer, input, input_len);
|
|
|
|
|
// PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
TransformFromBase64Decode(&buffer, &b64d);
|
|
|
|
|
TransformFromBase64Decode(NULL, &buffer, &b64d);
|
|
|
|
|
FAIL_IF_NOT(buffer.inspect_len == 15);
|
|
|
|
|
// PrintRawDataFp(stdout, buffer.inspect, buffer.inspect_len);
|
|
|
|
|
InspectionBufferFree(&buffer);
|
|
|
|
|