1
0
mirror of https://github.com/mirror/wget.git synced 2025-04-17 06:50:34 +08:00

Add NTLM fuzzer

* configure.ac: Create WITH_NTLM conditional.
* fuzz/Makefile.am: Add wget_ntlm_fuzzer.
* fuzz/wget_ntlm_fuzzer.c: New file.
* fuzz/wget_ntlm_fuzzer.in/*: Initial fuzz corpora.
This commit is contained in:
Tim Rühsen 2020-03-06 11:49:42 +01:00
parent 4221b5656a
commit 103aaf7740
129 changed files with 520 additions and 0 deletions
configure.ac
fuzz
Makefile.amwget_ntlm_fuzzer.c
wget_ntlm_fuzzer.in
00699c403c7f3692db4cde4af2a4d50d9a3d5ea3022345a3bce0608a15e01be58456d5ead1a8e0ae02410870309cdcb604affad77f2782f50d39d6fb08db86504371c568cc255874a4cf5868452f04a409eff65c5cf9c76949dec9f9bf8880b7e9ccc3330cfa010ea009b80fe4f73ee64d140802fa9e80f70e678adc48ad038f8276eed8b22fab4734ee27e5136637b923372efb112f98453a70ba7241be0c75151713efa2242ad3af9f0e99936c454208250ab919f55a3eda6bb671121a74d6ae9244297a55fd0e1a8aea63b8211aafabd118db0572a13810d234ff1bc743b6c23cf6e6d5d5293c99a8a017c4463c921dc3882d4bcccb325751803b817489c3715db4cc1e184c2c66910dfa40d6adc978ff8ac5bca1345b21606782c65e44cac7afbb90977d8b6f82140e762178dd0ab666f722d8263b7f0e2d9a30b00de65d233d69dd7c4c278610991a93102c8221f4e3b3bc27a705cef79ca9c3b98bf8aa53ba1322807da459280cf492bd8f4a101bc886a4e5b4bb2b0e09119c281d17a6969f3ece418017852d7667d221001bc3281f6318e42618d97046ea61b3621c13eb5b858528b3d69739b57caf199f039988db6dfea93ac5ce28f40c9ade49b97b030a35a36f2e0f4c7c3a08f12af8981459771287c7ff50c7dfec0f45ae1616ca2b5ed1dc5dc94abeeb32b929a7e52059c1bc361b2ccc6aa951eb50f12ebca299d7a98a4cfbc9f4da2fb9c8733bc97af780d96cb0e0bd4fadd3816f062fd8b143c2be2acc066d02f9732a456827a8886d302369263f8c7e2b64b62e3307e164d7e77802bb3065b41f9aada50d6e877d41dd7fbea84fbfc9563107acca3e86267ed0d841901d28f456eb87a17b31789ace8fdb0fae2976e8303b614c51d0a139a931b7cfc1c6064378485dacfa4eecc853919d428e334195ce950735797a5e14dbadef7b6c38c5894d353062111411728c4415f36377f20c4867a498b436f1312ac96c5df99feae0c84d93f2b95bd7b05638189f157e30850c02d7700c94f5348a80eeab6938787e129a0fb6e9d44364830801b38123eed5633ceafb3317a79304965f5d0f9811c99ac796d17a3e48ef860fe20ee4bc6bad410aa249c5741a4bff3ef18887544e31e9e146e5177256dfce86a4a3d8438f983a0305dfaf48b2210879de05e9302ad7df44e35edf8ff5c91beb0caf8903e6ba4984545699478f4ab29f415756c5332b4db26a539e1b3699bc48694c89cebf35e84db63a7fdf8226f570d0a981497fa0e0e1a7da26343f86d4ada36ef288b0dc3c4a927fb0fc45eabb882bbdaa508835971500aff64d88c8a0764152ec89cf3398a69318c4b6008b164e688bdb1f6c86092a04686553520ec90672d5335245b6ffdfe6c1e05eceea70b39eb23ea8a646d652e1ab59b073a61956d4a7d4fce0bdd41998a30a534ba67dbc5ec8435d5bbc84128f25092061781254adbc768978d9574b682470bd1f568f5a3f43da5570d3a6c3ea08958dfe8901d831772b41cb125456249b01f0d8eca52471bcaccb7cef0f96eba55b5affda2a54a61865bd5a7bca9ec55d0c75a173e95b2e29f6929e92f353678ee4bfebd39e824bb8a95ba93c9db0cff93f52b521d7420e43f6eda2784f5ded4aa32096893e6b72c233d52b6723df7d27c563936a54a1490b7c94273aa08bd4b2540d8eb44269b9b1766278f5b92bfec8289129f68c0b7b1b2a70b590e8c3c879134c3a059d870e8f374b00b175726bd904084d2158ee762df0490533c1ae7f96a0741d7f760f94983c5b43cedb6e1522042ef18f1b75b692b9801ba91337b7bdefd5879a3ea53d131e75df4f64c22cf3302937ee73798cd387a8d09dbd7a3df3e6b1afe961c88ba3c55c1e526ae216a5987a7e8f911dde108ce612aa755147fa4f75ac826b7d952d12b7337dcff092756973993d1fa1673ae680c4ba565f87d8cbd3b6daf361aa32f36bbda73c8226370df81db8a757d05c3366047b6f43baacbc86514a73165e7de524c4ca1e386d3131b69111cc8b008c62bd11d948a204aad089c53a52deb7b19c8cc7bf2b06268602b715644c809b663884c82f8b8e7e40583eeb9d6be596db0565eaa2765953288d901e5366b9156c5e7c64225534401bdcb84214ed9338bfd0d9c72576e94abc4985036f2fbe109c2293bf3766d5ce00fd46a71d81cbb6ef8525587dc89625a7079cd0bc32d584d4da4579330ad8d6ef849f344a09aa2cf7a73efed85d106d2cbb2b99e9eba148f3e928c613bbefdd8738767e9292e69eeb5da19210bcc3d17ce7e5155629c6e59249c9027067a3300e7eb65de1ee3e036b512178a197a7e1e432a3d77928c530500dad8b87831d60a2b6362001aaa448ad2870843e0a66f3ec5d550fff0b9f92725da4b46dbfe0bf098f4ad88898250650793a2c6ea5a81dc4ab048a96222f95ec51cadfedbc74d65852ae06cd8552d3002b3223eef54a6db9b95293255fb535a8a917460c2c003f429385ab7caf7d29ec4eb6ab65903dacec6210c0bf795b67b57a2070b7f7b7ac5b96ea5f711083baf98c3804ec040aaccdaeb858cb282617fb0956d960215c8e84d1ccf909c6bb7b6aa54e27bca41670357afcb17569f57dfcc3bc5b9c511ef3113afda26dea10b6457372394106bc84f484c173468aa018b06969cb836024e66b04bdf02e4e42e2ed459faad7a85a1001520de551fcbf8c997ff361199dfee131fa2eaa4fd44db42caa

View File

@ -990,6 +990,7 @@ AM_CONDITIONAL([IRI_IS_ENABLED], [test "X$iri" != "Xno"])
AM_CONDITIONAL([WITH_SSL], [test "X$with_ssl" != "Xno"])
AM_CONDITIONAL([METALINK_IS_ENABLED], [test "X$with_metalink" != "Xno"])
AM_CONDITIONAL([WITH_XATTR], [test "X$ENABLE_XATTR" != "Xno"])
AM_CONDITIONAL([WITH_NTLM], [test "X$ENABLE_NTLM" == "Xyes"])
dnl
dnl Create output

View File

@ -21,6 +21,10 @@ WGET_TESTS = \
wget_robots_fuzzer$(EXEEXT) \
wget_url_fuzzer$(EXEEXT)
if WITH_NTLM
WGET_TESTS += wget_ntlm_fuzzer$(EXEEXT)
endif
if FUZZING
bin_PROGRAMS = $(WGET_TESTS)
LDADD += $(LIB_FUZZING_ENGINE)
@ -54,6 +58,9 @@ wget_html_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
wget_netrc_fuzzer_SOURCES = wget_netrc_fuzzer.c $(MAIN)
wget_netrc_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
wget_ntlm_fuzzer_SOURCES = wget_ntlm_fuzzer.c $(MAIN)
wget_ntlm_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
wget_options_fuzzer_SOURCES = wget_options_fuzzer.c $(MAIN)
wget_options_fuzzer_LDADD = ../src/libunittest.a $(LDADD)

102
fuzz/wget_ntlm_fuzzer.c Normal file
View File

@ -0,0 +1,102 @@
/*
* Copyright (c) 2017-2019 Free Software Foundation, Inc.
*
* This file is part of GNU Wget.
*
* GNU Wget is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* GNU Wget is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Wget. If not, see <https://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <sys/types.h>
#include <dirent.h> // opendir, readdir
#include <stdint.h> // uint8_t
#include <stdio.h> // fmemopen
#include <string.h> // strncmp
#include <stdlib.h> // free
#include <fcntl.h> // open flags
#include <unistd.h> // close
#include <setjmp.h> // longjmp, setjmp
#include <assert.h> // assert
#include "wget.h"
#undef fopen_wgetrc
#ifdef __cplusplus
extern "C" {
#endif
#include "http-ntlm.h"
// declarations for wget internal functions
int main_wget(int argc, const char **argv);
void cleanup(void);
FILE *fopen_wget(const char *pathname, const char *mode);
FILE *fopen_wgetrc(const char *pathname, const char *mode);
void exit_wget(int status);
#ifdef __cplusplus
}
#endif
#include "fuzzer.h"
FILE *fopen_wget(const char *pathname, const char *mode)
{
(void) pathname;
return fopen("/dev/null", mode);
}
FILE *fopen_wgetrc(const char *pathname, const char *mode)
{
(void) pathname;
(void) mode;
return NULL;
}
#ifdef FUZZING
void exit_wget(int status)
{
(void) status;
}
#endif
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
if (size > 128) // same as max_len = ... in .options file
return 0;
// CLOSE_STDERR
struct ntlmdata *ntlm = calloc(1, sizeof(struct ntlmdata));
char *data0 = malloc(size + 4 + 1);
char *val;
bool ready;
assert(ntlm && data0);
memcpy(data0, "NTLM", 4);
memcpy(data0 + 4, data, size);
data0[size + 4] = 0;
if (ntlm_input(ntlm, data0))
free(ntlm_output(ntlm, data0 + 4, data0 + 4, &ready));
free(data0);
free(ntlm);
// RESTORE_STDERR
return 0;
}

View File

@ -0,0 +1,6 @@
666

View File

@ -0,0 +1 @@
KKKKKKKKKKKKKKXNNNNNNNNNNNNNNNNNNNNNNNNNKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

View File

@ -0,0 +1 @@
QQQQQMQQ

View File

@ -0,0 +1 @@
AA(

View File

@ -0,0 +1 @@
CC==CC==CC==CC==CC==CA==CC==CC==CC==CC==CC==CC==L1==+8==L1==L1==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==L1==+8==L1==L1==

View File

@ -0,0 +1 @@
777<EFBFBD>

View File

@ -0,0 +1,7 @@


View File

@ -0,0 +1 @@
0112bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb

View File

@ -0,0 +1 @@
oUQUQo4444444444444444444444444444444444444444444444444444444444444444444o

View File

@ -0,0 +1 @@
z1=

View File

@ -0,0 +1 @@
<EFBFBD>

View File

@ -0,0 +1 @@
o0ooo0aaooooooooooooooooooooooo

View File

@ -0,0 +1 @@
Vzz0

View File

@ -0,0 +1 @@
R88R

View File

@ -0,0 +1 @@
CeGa/eG

View File

@ -0,0 +1 @@
eddddddddddddddddfffddddddddddddddddddddddddddddddddddddddddddddjej

View File

@ -0,0 +1 @@
E/0

View File

@ -0,0 +1 @@
77k

View File

@ -0,0 +1 @@
/0ooooooooX

View File

@ -0,0 +1 @@
o5mmmQWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWQmmQQU

View File

@ -0,0 +1 @@
/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=

View File

@ -0,0 +1,3 @@
k1=

View File

@ -0,0 +1 @@
oUQUQo444444444444455QUQQe444444444444444444444444444444444444444444

View File

@ -0,0 +1 @@
+GGGGGGGGAGeeeeGGGGGGAGeeeeGGGGGGGGGGGGGeeeeeeeeeeeeeeeeeeehhhhz

View File

@ -0,0 +1 @@
aCa=

View File

@ -0,0 +1 @@
AAv=zAv=zAA=GAv=zAv=zAv=zAA=GAv=

View File

@ -0,0 +1 @@
KKKKKKKKKKKKKKK1KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKAAAAAKKKKKKKKKKKKKK2KKKK

View File

@ -0,0 +1 @@
kGE

View File

@ -0,0 +1 @@
AAv=zjA=

View File

@ -0,0 +1,25 @@
337d

View File

@ -0,0 +1 @@
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJCJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJCJJJJJJJJJ

View File

@ -0,0 +1 @@
wwohoh+AQAQqoW+qoWohAQqoW+oAQA

View File

@ -0,0 +1,12 @@
l/=

View File

@ -0,0 +1 @@
+L=

View File

@ -0,0 +1 @@
CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC

View File

@ -0,0 +1 @@
00=

View File

@ -0,0 +1,10 @@
+0hh

View File

@ -0,0 +1 @@
/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=/L1=gL/=1L1=/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=/L1=gL/=1L1=gL/=gL/=/L1=gL/=1L1=gL/=

View File

@ -0,0 +1 @@
oQPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPUQQUoUoo

View File

@ -0,0 +1,16 @@
J

View File

@ -0,0 +1,5 @@
Q Qaa

View File

@ -0,0 +1 @@
kkkk

View File

@ -0,0 +1 @@
AAv=zAv=zAA=zAv=

View File

@ -0,0 +1 @@
o0ooo0aaoooooooooooooooooQUQQooo

View File

@ -0,0 +1 @@
r000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@ -0,0 +1,8 @@
aa

View File

@ -0,0 +1 @@
oUQUQoohhhihUzUUUUZZZZZoUQUQoohhhhhhhZZZZZZVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVZUQ

View File

@ -0,0 +1,13 @@

View File

@ -0,0 +1,8 @@
eR=

View File

@ -0,0 +1 @@
W/oo

View File

@ -0,0 +1,17 @@
a

View File

@ -0,0 +1 @@
2zzzzz

View File

@ -0,0 +1,8 @@
QQaa

View File

@ -0,0 +1,2 @@


View File

@ -0,0 +1 @@
oUQUQoohhhhhhhh

View File

@ -0,0 +1 @@
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm2mmmmm2mmm

View File

@ -0,0 +1 @@
VzVV

View File

@ -0,0 +1 @@
0+=0

View File

@ -0,0 +1 @@
ohhohhoo

View File

@ -0,0 +1 @@
CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==CC==L1==+8==L1==L1==

View File

@ -0,0 +1 @@
CC==CC==CC==CC==CC==CC==CC==CC==

View File

@ -0,0 +1 @@
oUQUQo44444444644444444444444444444Z4444444444444444444444UQo444444444444444444444444444464444o

View File

@ -0,0 +1 @@
CC==

View File

@ -0,0 +1 @@
o555QUQQoUoo

View File

@ -0,0 +1 @@
bbbbbbbbbbbbbbbbbbbbbbbbbMMMMMMMMMMMMMMMMMMMMbbbbbbbbbubbbbbbbbbbb

View File

@ -0,0 +1,9 @@
aa

View File

@ -0,0 +1,3 @@
ww7A

View File

@ -0,0 +1 @@
L1==L1==+1==vP=

View File

@ -0,0 +1,2 @@
A

View File

@ -0,0 +1,112 @@

View File

@ -0,0 +1 @@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjP6

View File

@ -0,0 +1,2 @@
kk1

View File

@ -0,0 +1,2 @@


View File

@ -0,0 +1,4 @@
62

View File

@ -0,0 +1 @@
vv<EFBFBD>

View File

@ -0,0 +1 @@
2R77

View File

@ -0,0 +1 @@
zv=

View File

@ -0,0 +1,2 @@
00+

View File

@ -0,0 +1,2 @@
r00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A

View File

@ -0,0 +1 @@
+/8R

View File

@ -0,0 +1,5 @@


View File

@ -0,0 +1,3 @@
A

Some files were not shown because too many files have changed in this diff Show More