AC_DEFINE([AFLFUZZ_APPLAYER], [1], [Enable --afl-$proto-request commandline option])
AC_DEFINE([AFLFUZZ_MIME], [1], [Enable --afl-mime commandline option])
AC_DEFINE([AFLFUZZ_DECODER], [1], [Enable --afl-decoder-$proto commandline option])
+ AC_DEFINE([AFLFUZZ_DER], [1], [Enable --afl-der commandline option])
])
# disable TLS on user request
#include "app-layer-smb.h"
#include "app-layer-modbus.h"
+#include "util-decode-der.h"
#include "util-radix-tree.h"
#include "util-host-os-info.h"
#include "util-cidr.h"
{"afl-mime", required_argument, 0 , 0},
{"afl-decoder-ppp", required_argument, 0 , 0},
+ {"afl-der", required_argument, 0, 0},
#ifdef BUILD_UNIX_SOCKET
{"unix-socket", optional_argument, 0, 0},
#endif
FlowInitConfig(FLOW_QUIET);
//printf("arg: //%s\n", optarg);
exit(DecoderParseDataFromFile(optarg, DecodePPP));
+#endif
+#ifdef AFLFUZZ_DER
+ } else if(strcmp((long_opts[option_index]).name, "afl-der") == 0) {
+ //printf("arg: //%s\n", optarg);
+ exit(DerParseDataFromFile(optarg));
#endif
} else if(strcmp((long_opts[option_index]).name, "simulate-ips") == 0) {
SCLogInfo("Setting IPS mode");
return cert;
}
+#ifdef AFLFUZZ_DER
+int DerParseDataFromFile(char *filename)
+{
+ int result = 1;
+ FILE *fp = fopen(filename, "r");
+ BUG_ON(fp == NULL);
+ uint8_t buffer[65536];
+
+ uint32_t errcode = 0;
+
+ while (1) {
+ int done = 0;
+ size_t result = fread(&buffer, 1, sizeof(buffer), fp);
+ if (result < sizeof(buffer))
+ done = 1;
+
+ DecodeDer(buffer, result, &errcode);
+
+ if (done)
+ break;
+ }
+
+ result = 0;
+ fclose(fp);
+ return result;
+}
+#endif
+
void DerFree(Asn1Generic *a)
{
Asn1Generic *it, *n;
Asn1Generic * DecodeDer(const unsigned char *buffer, uint32_t size, uint32_t *errcode);
void DerFree(Asn1Generic *a);
+#ifdef AFLFUZZ_DER
+int DerParseDataFromFile(char *filename);
+#endif
+
#endif /* __UTIL_DECODE_DER_H__ */