const uint8_t separator[] = {0x01, 0xD5, 0xCA, 0x7A};
SCInstance surifuzz;
AppProto forceLayer = 0;
+char *target_suffix = NULL;
SC_ATOMIC_EXTERN(unsigned int, engine_stage);
int LLVMFuzzerInitialize(int *argc, char ***argv)
{
- char *target_suffix = strrchr((*argv)[0], '_');
- if (target_suffix != NULL) {
- AppProto applayer = StringToAppProto(target_suffix + 1);
- if (applayer != ALPROTO_UNKNOWN) {
- forceLayer = applayer;
- printf("Forcing %s=%" PRIu16 "\n", AppProtoToString(forceLayer), forceLayer);
- return 0;
- }
- }
+ target_suffix = strrchr((*argv)[0], '_');
// else
- const char *forceLayerStr = getenv("FUZZ_APPLAYER");
- if (forceLayerStr) {
- if (ByteExtractStringUint16(&forceLayer, 10, 0, forceLayerStr) < 0) {
- forceLayer = 0;
- printf("Invalid numeric value for FUZZ_APPLAYER environment variable");
- } else {
- printf("Forcing %s\n", AppProtoToString(forceLayer));
- }
- }
- // http is the output name, but we want to fuzz HTTP1
- if (forceLayer == ALPROTO_HTTP) {
- forceLayer = ALPROTO_HTTP1;
+ if (!target_suffix) {
+ target_suffix = getenv("FUZZ_APPLAYER");
}
return 0;
}
PostConfLoadedSetup(&surifuzz);
alp_tctx = AppLayerParserThreadCtxAlloc();
SC_ATOMIC_SET(engine_stage, SURICATA_RUNTIME);
+ if (target_suffix != NULL) {
+ AppProto applayer = StringToAppProto(target_suffix + 1);
+ if (applayer != ALPROTO_UNKNOWN) {
+ forceLayer = applayer;
+ printf("Forcing %s=%" PRIu16 "\n", AppProtoToString(forceLayer), forceLayer);
+ }
+ }
+ // http is the output name, but we want to fuzz HTTP1
+ if (forceLayer == ALPROTO_HTTP) {
+ forceLayer = ALPROTO_HTTP1;
+ }
}
if (size < HEADER_LEN) {