-
Notifications
You must be signed in to change notification settings - Fork 129
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PPP: Add test exhibiting empty packet null-deref
- Loading branch information
1 parent
1c9cd9c
commit 202a07d
Showing
6 changed files
with
88 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#include "test_pppos.h" | ||
|
||
#include "lwip/netif.h" | ||
#include "netif/ppp/pppos.h" | ||
#include "netif/ppp/ppp.h" | ||
|
||
#if PPP_SUPPORT && PPPOS_SUPPORT | ||
static struct netif pppos_netif; | ||
static ppp_pcb *ppp; | ||
|
||
static u32_t ppp_output_cb(struct ppp_pcb_s *pcb, u8_t *data, u32_t len, void *ctx) | ||
{ | ||
LWIP_UNUSED_ARG(pcb); | ||
LWIP_UNUSED_ARG(data); | ||
LWIP_UNUSED_ARG(len); | ||
LWIP_UNUSED_ARG(ctx); | ||
|
||
return 0; | ||
} | ||
|
||
static void ppp_link_status_cb(ppp_pcb *pcb, int err_code, void *ctx) | ||
{ | ||
LWIP_UNUSED_ARG(pcb); | ||
LWIP_UNUSED_ARG(err_code); | ||
LWIP_UNUSED_ARG(ctx); | ||
} | ||
|
||
static void pppos_setup(void) | ||
{ | ||
ppp = pppos_create(&pppos_netif, ppp_output_cb, ppp_link_status_cb, NULL); | ||
fail_if(ppp == NULL); | ||
ppp_connect(ppp, 0); | ||
} | ||
|
||
static void pppos_teardown(void) | ||
{ | ||
} | ||
|
||
START_TEST(test_pppos_empty_packet_with_valid_fcs) | ||
{ | ||
u8_t two_breaks[] = { 0x7e, 0, 0, 0x7e }; | ||
u8_t other_packet[] = { 0x7e, 0x7d, 0x20, 0x00, 0x7e }; | ||
/* Set internal states of the underlying pcb */ | ||
pppos_pcb *pppos = (pppos_pcb *)ppp->link_ctx_cb; | ||
pppos->open = 1; /* Pretend the connection is open already */ | ||
pppos->in_accm[0] = 0xf0; /* Make sure 0x0's are not escaped chars */ | ||
|
||
pppos_input(ppp, two_breaks, sizeof(two_breaks)); | ||
pppos_input(ppp, other_packet, sizeof(other_packet)); | ||
|
||
} | ||
END_TEST | ||
|
||
/** Create the suite including all tests for this module */ | ||
Suite * | ||
pppos_suite(void) | ||
{ | ||
testfunc tests[] = { | ||
TESTFUNC(test_pppos_empty_packet_with_valid_fcs) | ||
}; | ||
return create_suite("PPPOS", tests, sizeof(tests)/sizeof(testfunc), pppos_setup, pppos_teardown); | ||
} | ||
|
||
#endif /* PPP_SUPPORT && PPPOS_SUPPORT */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#ifndef LWIP_HDR_TEST_PPPOS_H | ||
#define LWIP_HDR_TEST_PPPOS_H | ||
|
||
#include "../lwip_check.h" | ||
#include "netif/ppp/ppp.h" | ||
|
||
#if PPP_SUPPORT && PPPOS_SUPPORT | ||
|
||
Suite* pppos_suite(void); | ||
|
||
#endif /* PPP_SUPPORT && PPPOS_SUPPORT */ | ||
|
||
#endif /* LWIP_HDR_TEST_PPPOS_H */ |