Commit Graph

6858 Commits

Author SHA1 Message Date
Jonathan Neuschäfer c2f9244137 test/fuzz: Fix use of htons vs. ntohs
Although ntohs and htons perform equivalent operations (a byte swap on
little-endian platforms), their semantic roles (as implied by the names)
are different.

In fuzz_common.c, we get integers from simulated network packages, and
convert them for host CPU use, so ntohs is the right variant to use.
2023-05-11 22:10:32 +02:00
Jonathan Neuschäfer 5514d8eb63 test/fuzz: Build with -O2 by default
Fuzzers should run fast by default, since the goal is to try many
variations of input data.
2023-05-11 22:08:46 +02:00
Jonathan Neuschäfer 911da26f96 test/fuzz: Fix CC default value in makefile
Unfortunately, CC ?= afl-gcc doesn't work. This is because CC has a
default value (of "cc"), and the ?= operator only assigns a value if the
variable previously had none. "make" currently compiles with cc.

In this patch, I implemented the more elaborate way to achieve what was
probably intended: "make" will use afl-gcc now, and "make CC=foo" will
compile with "foo".
2023-05-11 22:08:40 +02:00
Mingjie Shen 2e3dcf06d1 api,sockets: Fix signed overflow check
Signed overflow is undefined behaviour in C/C++.
2023-05-11 21:28:22 +02:00
Mingjie Shen e3a20b3bc2 mdns: Add null check for pbuf_skip 2023-05-11 21:26:22 +02:00
Jan Breuer 1c5cc7bc02 snmp_v3: fix reported usmUserAuthProtocol for SHA 2023-05-11 21:05:16 +02:00
David Cermak 3aa82745c1 dhcp: Add macro for appending extra client's request options
Co-Authored-By: Liu Han <liuhan@espressif.com>
Co-Authored-By: Simon Goldschmidt <goldsimon@gmx.de>
2023-05-11 21:03:11 +02:00
Logan Gunthorpe 90b2a6b4c4 dhcp: Set hostname for DISCOVER packets
If the hostname is not set in the DISCOVER packet, then some servers might
issue an OFFER with hostname configured and consequently reject the REQUEST
with any other hostname.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Co-Authored-By: Simon Goldschmidt <goldsimon@gmx.de>
2023-05-11 20:59:15 +02:00
xueyunfei 5231c8da23 dhcp: Enable custom config for timeouts, thresholds, backoff time
Enables to configure:
* DHCP_COARSE_TIMER_SECS
* if DHCP_DEFINE_CUSTOM_TIMEOUTS defined these addtional options are
available:
  - DHCP_CALC_TIMEOUT_FROM_OFFERED_T0_LEASE to adjust the t0 lease timeout from the offered value
  - DHCP_CALC_TIMEOUT_FROM_OFFERED_T1_RENEW same for t1 renew
  - DHCP_CALC_TIMEOUT_FROM_OFFERED_T2_REBIND same for t2 rebind
  - DHCP_NEXT_TIMEOUT_THRESHOLD to adjust the period of the next timeout
  - DHCP_REQUEST_BACKOFF_SEQUENCE to adjust back-off times based on DHCP
request attempts
Also updates timeout type from u16 to u32 - eps useful when DHCP_COARSE_TIMER_SECS is a smaller number
2023-05-11 20:49:14 +02:00
David Cermak 00f5e179b5 dhcp: Move in-place timeout/threshold calculations to macros 2023-05-11 20:44:21 +02:00
Simon Goldschmidt 90c9a482a6 ci: fix compiling test_tcp_state.c; add to msvc project 2023-05-11 20:26:21 +02:00
David Cermak 724cc173ca ci: Add the default example_app config to the build step 2023-05-10 22:20:07 +02:00
David Cermak 187e4ededd contrib/addons: Add example of using DHCP extra options hooks 2023-05-10 22:16:57 +02:00
Chen Yu Dong f50c87da6f ci: Add unit test suite to validate tcp state transitions 2023-05-10 22:02:43 +02:00
David Cermak a6874a46c6 contrib/ports: Add semaphore per thread option for unix 2023-05-10 21:49:34 +02:00
Simon Goldschmidt 3a9c1e48dd altcp_tls_mbedtls: note which version of mbedtls we are compatible to
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2023-05-10 21:00:23 +02:00
Simon Goldschmidt 59ec032fa9 pppos: add new pppos unit test to vsproj 2023-05-10 20:59:36 +02:00
Simon Goldschmidt 64f75dbd89 pppos: fix compiling new pppos unit test
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2023-05-10 20:58:23 +02:00
Peter Putz a9664395b0 pppos: fix in_tail null
happens during quick reconnect of LTE ppp session
2023-05-10 20:57:12 +02:00
David Cermak 6b734bbb2c PPP: Add test exhibiting empty packet null-deref
Also updates lcp.c to compile with PPP_AUTH_SUPPORT=0 in clang
2023-05-10 20:42:27 +02:00
Jonathan Neuschäfer d8d1e4a015 altcp: Fix NULL pointer dereference found by fuzzing
Reproducer (in bash):

base64 -d <<< "H4sIAP/9L2QCA+3WoQ2AMBSE4QoCTFHBBJfgSRF4RDfpRmgmYBpGQRBCk4ZiSfk/+fJMK+5dZRVpzSQzSs6oPierDV4y87WxLQLwE42SfNCdDyHJB9/xZwAARPbMJbUq4JJmu4JVT1cAAACfbGIqoqcMzy90eu+aBw2+N28WFgAA" | gunzip | test/fuzz/lwip_fuzz2

Crash log:

../../src/core/altcp_tcp.c:178:13: runtime error: member access within null pointer of type 'struct tcp_pcb'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../../src/core/altcp_tcp.c:178:13 in
AddressSanitizer:DEADLYSIGNAL
=================================================================
==192415==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000048 (pc 0x557065081703 bp 0x0aae0cb71204 sp 0x7ffd034dabc0 T0)
==192415==The signal is caused by a READ memory access.
==192415==Hint: address points to the zero page.
    #0 0x557065081703 in altcp_tcp_setup_callbacks /.../lwip/test/fuzz/../../src/core/altcp_tcp.c:178:19
    #1 0x55706508206f in altcp_tcp_setup /.../lwip/test/fuzz/../../src/core/altcp_tcp.c:189:3
    #2 0x55706508206f in altcp_tcp_accept /.../lwip/test/fuzz/../../src/core/altcp_tcp.c:84:5
    #3 0x557065095592 in tcp_input /.../lwip/test/fuzz/../../src/core/tcp_in.c:380:9
    #4 0x5570650e752f in ip4_input /.../lwip/test/fuzz/../../src/core/ipv4/ip4.c:743:9
    #5 0x55706513d4de in ethernet_input /.../lwip/test/fuzz/../../src/netif/ethernet.c:186:9
    #6 0x557064fe0959 in input_pkt /.../lwip/test/fuzz/fuzz_common.c:209:9
    #7 0x557064fdeb6a in input_pkts /.../lwip/test/fuzz/fuzz_common.c:257:9
    #8 0x557064fdeb6a in lwip_fuzztest /.../lwip/test/fuzz/fuzz_common.c:669:3
    #9 0x7ff4f578e189 in __libc_start_call_main csu/../sysdeps/nptl/libc_start_call_main.h:58:16
    #10 0x7ff4f578e244 in __libc_start_main csu/../csu/libc-start.c:381:3
    #11 0x557064f20420 in _start (/.../lwip/test/fuzz/lwip_fuzz2+0x81420) (BuildId: 8680a96430d5749c90111fe9c3a3d4f881a5dbcd)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /.../lwip/test/fuzz/../../src/core/altcp_tcp.c:178:19 in altcp_tcp_setup_callbacks
==192415==ABORTING
Aborted
2023-04-07 22:32:18 +02:00
Jonathan Neuschäfer 95a63bc352 test/fuzz: Use HTTPS URLs and mention AFL++ 2023-04-07 22:27:30 +02:00
Jonathan Neuschäfer e8b0324f81 test/fuzz: Don't crash with assertion failure when a packet is too big
A fuzzer may generate big packets, and it will interpret assertion
failures as bugs. Instead of asserting that the packet size is
reasonable, simply skip the packet when it's not the case.
2023-04-07 22:25:50 +02:00
Renzo Davoli 0f2de1f684 contrib/ports/unix: add vdeif 2023-04-07 22:13:55 +02:00
Renzo Davoli 427b4f9b08 add posixlib 2023-04-07 22:11:27 +02:00
Renzo Davoli 6a350a0278 contrib/port/unix/lib: exclude slipif.c source 2023-04-07 22:07:17 +02:00
Simon Goldschmidt 3fe8d2fc43 get cmake to compile under windows with ms cl compiler
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2023-01-03 21:34:05 +01:00
Simon Goldschmidt eaf4926239 UPGRADING: added a not about merging contrib 2022-12-22 22:07:16 +01:00
Simon Goldschmidt e6341a6081 some documentation fixes after merging contrib and example apps
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2022-12-22 21:42:42 +01:00
Simon Goldschmidt 790b914fea pbuf_copy_partial_pbuf: fix warning about assigning to smaller type when using '-=' operator
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2022-12-22 20:43:18 +01:00
Steven Wartik 4b7a54c06c Added warning to cmake instructions when lwipcfg.h isn't present.
Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2022-12-22 20:42:25 +01:00
yuanjm 239918ccc1 tcp: Make retransmission timeout (RTO) configurable 2022-05-09 21:24:57 +02:00
Erik Ekman 876517ea3e gitignore: *.exe moved to top level
Requested on lwip-devel list
2022-05-09 21:13:38 +02:00
Jonathan Demeyer 234d282936 mqtt: Fix typos on 'incomming' 2022-05-09 21:10:34 +02:00
Giuseppe Modugno 52b4649636 Replace C++ comment with standard C comment to avoid error during building with -Werror. 2022-05-09 21:07:14 +02:00
Simon Goldschmidt 124dc0a64e vscode: fix debugging on windows 2022-03-25 21:29:31 +01:00
Simon Goldschmidt 7807402899 cmake: fix building on windows with mingw64
- wpcap/packet libraries were wrong (.a, not .lib; not the x64 ones)
- link order resulted in undefined references

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2022-03-22 22:38:28 +01:00
Simon Goldschmidt 215dec653b fix some compile problems with mingw 2022-02-12 09:40:32 +01:00
Simon Goldschmidt a55679224f fs: move prototypes required to implement custom files as fs addon to header 2022-02-12 09:40:32 +01:00
Florian La Roche 34e435c786 tapif: fix strncpy
Adjust the strncpy() call in tapif.c to how this is coded
in other strncpy() invocations. Also gcc warns about this.

See patch #10142
2021-12-30 22:58:52 +01:00
Florian La Roche 7c3aab2ea2 gcc warning for sign conversion
See patch #10143
2021-12-30 22:48:18 +01:00
Florian La Roche 62ac0faad8 redefine many vars as "static"
See patch #10156
2021-12-30 22:13:01 +01:00
Wouter van Gulik 5ab46f82f9 Fix failing fuzzer if compiling with ubsan
See patch #10163

Signed-off-by: Simon Goldschmidt <goldsimon@gmx.de>
2021-12-30 22:04:23 +01:00
Simon Goldschmidt 7e96691ccf ignore LwipMibCompiler output files 2021-12-22 21:39:27 +01:00
weycen 9f7d9170c1 netif: fix the netif's index error
When using multiple netifs on one hardware interface (e.g. when mapping multiple IP addresses to one hardware interface), if the netif's low-level receive routine cannot decide for the correct netif, here the `netif` parameter may be a default netif, in this case, `p-> if_idx` will get a wrong netif index value. It should be placed after `netif = LWIP_ARP_FILTER_NETIF_FN(p, netif, lwip_htons(type));`.  Filter function can returns the correct netif before assigning `p-> if_idx`.
2021-12-07 00:57:48 +01:00
0x1abin 63d21c53e5 altcp mbedtls: Compile error fix. 2021-12-07 00:47:05 +01:00
Erik Ekman 562431b034 Update gitattributes after travis removal 2021-11-28 20:56:37 +01:00
Erik Ekman ff28f73fa0 README: Update CI link 2021-11-27 21:09:06 +01:00
Erik Ekman 853258fff0 Switch from travis to github actions for CI
travis.org is no longer active
2021-11-27 20:48:02 +01:00
Erik Ekman 7c84799c4f doxygen: Remove obsolete config
warning: Tag 'PERL_PATH' at line 2212 of file '/home/runner/work/lwip/lwip/doc/doxygen/lwip.Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
warning: Tag 'MSCGEN_PATH' at line 2234 of file '/home/runner/work/lwip/lwip/doc/doxygen/lwip.Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
2021-11-27 20:40:54 +01:00