Mercurial > dropbear
view fuzz-common.c @ 1353:f3c8975de38e fuzz
setup svr_dropbear_exit
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 18 May 2017 23:36:54 +0800 |
parents | 2722f2347a48 |
children | 3677a510f545 |
line wrap: on
line source
#include "includes.h" #ifdef DROPBEAR_FUZZ #include "includes.h" #include "fuzz.h" #include "dbutil.h" #include "runopts.h" #include "crypto_desc.h" #include "session.h" struct dropbear_fuzz_options fuzz; static void load_fixed_hostkeys(void); static void common_setup_fuzzer(void) { fuzz.fuzzing = 1; crypto_init(); } void svr_setup_fuzzer(void) { struct passwd *pw; common_setup_fuzzer(); _dropbear_exit = svr_dropbear_exit; _dropbear_log = svr_dropbear_log; char *argv[] = { "-E", }; int argc = sizeof(argv) / sizeof(*argv); svr_getopts(argc, argv); /* user lookups might be slow, cache it */ pw = getpwuid(getuid()); dropbear_assert(pw); fuzz.pw_name = m_strdup(pw->pw_name); fuzz.pw_dir = m_strdup(pw->pw_dir); fuzz.pw_shell = m_strdup(pw->pw_shell); fuzz.pw_passwd = m_strdup("!!zzznope"); load_fixed_hostkeys(); } static void load_fixed_hostkeys(void) { #include "fuzz-hostkeys.c" buffer *b = buf_new(3000); enum signkey_type type; TRACE(("load fixed hostkeys")) svr_opts.hostkey = new_sign_key(); buf_setlen(b, 0); buf_putbytes(b, keyr, keyr_len); buf_setpos(b, 0); type = DROPBEAR_SIGNKEY_RSA; if (buf_get_priv_key(b, svr_opts.hostkey, &type) == DROPBEAR_FAILURE) { dropbear_exit("failed fixed rsa hostkey"); } buf_setlen(b, 0); buf_putbytes(b, keyd, keyd_len); buf_setpos(b, 0); type = DROPBEAR_SIGNKEY_DSS; if (buf_get_priv_key(b, svr_opts.hostkey, &type) == DROPBEAR_FAILURE) { dropbear_exit("failed fixed dss hostkey"); } buf_setlen(b, 0); buf_putbytes(b, keye, keye_len); buf_setpos(b, 0); type = DROPBEAR_SIGNKEY_ECDSA_NISTP256; if (buf_get_priv_key(b, svr_opts.hostkey, &type) == DROPBEAR_FAILURE) { dropbear_exit("failed fixed ecdsa hostkey"); } buf_free(b); } #endif /* DROPBEAR_FUZZ */