Fuzzer harness for sshsig
This commit is contained in:
parent
b08a6bc1cc
commit
f4846dfc6a
|
@ -7,7 +7,7 @@ CXXFLAGS=-O2 -g -Wall -Wextra -I ../../.. $(FUZZ_FLAGS)
|
||||||
LDFLAGS=-L ../../.. -L ../../../openbsd-compat -g $(FUZZ_FLAGS)
|
LDFLAGS=-L ../../.. -L ../../../openbsd-compat -g $(FUZZ_FLAGS)
|
||||||
LIBS=-lssh -lopenbsd-compat -lcrypto $(FUZZ_LIBS)
|
LIBS=-lssh -lopenbsd-compat -lcrypto $(FUZZ_LIBS)
|
||||||
|
|
||||||
all: pubkey_fuzz sig_fuzz authopt_fuzz
|
all: pubkey_fuzz sig_fuzz authopt_fuzz sshsig_fuzz
|
||||||
|
|
||||||
.cc.o:
|
.cc.o:
|
||||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||||
|
@ -21,5 +21,8 @@ sig_fuzz: sig_fuzz.o
|
||||||
authopt_fuzz: authopt_fuzz.o
|
authopt_fuzz: authopt_fuzz.o
|
||||||
$(CXX) -o $@ authopt_fuzz.o ../../../auth-options.o $(LDFLAGS) $(LIBS)
|
$(CXX) -o $@ authopt_fuzz.o ../../../auth-options.o $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
sshsig_fuzz: sshsig_fuzz.o
|
||||||
|
$(CXX) -o $@ sshsig_fuzz.o ../../../sshsig.o $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm -f *.o pubkey_fuzz sig_fuzz authopt_fuzz
|
-rm -f *.o pubkey_fuzz sig_fuzz authopt_fuzz
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
// cc_fuzz_target test for sshsig verification.
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
|
||||||
|
#include "includes.h"
|
||||||
|
#include "sshkey.h"
|
||||||
|
#include "ssherr.h"
|
||||||
|
#include "sshbuf.h"
|
||||||
|
#include "sshsig.h"
|
||||||
|
#include "log.h"
|
||||||
|
|
||||||
|
int LLVMFuzzerTestOneInput(const uint8_t* sig, size_t slen)
|
||||||
|
{
|
||||||
|
static const char *data = "If everyone started announcing his nose had "
|
||||||
|
"run away, I don’t know how it would all end";
|
||||||
|
struct sshbuf *signature = sshbuf_from(sig, slen);
|
||||||
|
struct sshbuf *message = sshbuf_from(data, strlen(data));
|
||||||
|
struct sshkey *k = NULL;
|
||||||
|
extern char *__progname;
|
||||||
|
|
||||||
|
log_init(__progname, SYSLOG_LEVEL_QUIET, SYSLOG_FACILITY_USER, 1);
|
||||||
|
sshsig_verifyb(signature, message, "castle", &k);
|
||||||
|
sshkey_free(k);
|
||||||
|
sshbuf_free(signature);
|
||||||
|
sshbuf_free(message);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // extern
|
Loading…
Reference in New Issue