Fuzzing-related changes, mostly
This commit is contained in:
parent
1d6013fce4
commit
77359d410d
1 changed files with 14 additions and 20 deletions
34
nmrp.c
34
nmrp.c
|
|
@ -266,9 +266,10 @@ static inline void msg_init(struct nmrp_msg *msg, uint16_t code)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NMRPFLASH_FUZZ
|
#ifdef NMRPFLASH_FUZZ
|
||||||
#define ethsock_create(a, b) ethsock_create_fake(a, b)
|
#define NMRP_INITIAL_TIMEOUT 0
|
||||||
|
#define ethsock_create(a, b) ((struct ethsock*)1)
|
||||||
#define ethsock_get_hwaddr(a) ethsock_get_hwaddr_fake(a)
|
#define ethsock_get_hwaddr(a) ethsock_get_hwaddr_fake(a)
|
||||||
#define ethsock_recv(a, b, c) ethsock_recv_fake(a, b, c)
|
#define ethsock_recv(sock, buf, len) read(STDIN_FILENO, buf, len)
|
||||||
#define ethsock_send(a, b, c) (0)
|
#define ethsock_send(a, b, c) (0)
|
||||||
#define ethsock_set_timeout(a, b) (0)
|
#define ethsock_set_timeout(a, b) (0)
|
||||||
#define ethsock_ip_add(a, b, c, d) (0)
|
#define ethsock_ip_add(a, b, c, d) (0)
|
||||||
|
|
@ -276,22 +277,13 @@ static inline void msg_init(struct nmrp_msg *msg, uint16_t code)
|
||||||
#define ethsock_close(a) (0)
|
#define ethsock_close(a) (0)
|
||||||
#define tftp_put(a) (0)
|
#define tftp_put(a) (0)
|
||||||
|
|
||||||
static struct ethsock* ethsock_create_fake(const char *intf, uint16_t protocol)
|
|
||||||
{
|
|
||||||
return (struct ethsock*)1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint8_t *ethsock_get_hwaddr_fake(struct ethsock* sock)
|
static uint8_t *ethsock_get_hwaddr_fake(struct ethsock* sock)
|
||||||
{
|
{
|
||||||
static uint8_t hwaddr[6];
|
static uint8_t hwaddr[6] = { 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa };
|
||||||
memset(hwaddr, 0xfa, 6);
|
|
||||||
return hwaddr;
|
return hwaddr;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
static ssize_t ethsock_recv_fake(struct ethsock *sock, void *buf, size_t len)
|
#define NMRP_INITIAL_TIMEOUT 60
|
||||||
{
|
|
||||||
return read(STDIN_FILENO, buf, len);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int pkt_send(struct ethsock *sock, struct nmrp_pkt *pkt)
|
static int pkt_send(struct ethsock *sock, struct nmrp_pkt *pkt)
|
||||||
|
|
@ -542,13 +534,12 @@ int nmrp_do(struct nmrpd_args *args)
|
||||||
} else if (status == 1) {
|
} else if (status == 1) {
|
||||||
goto out;
|
goto out;
|
||||||
} else {
|
} else {
|
||||||
if ((time_monotonic() - beg) >= 60) {
|
/* because we don't want nmrpflash's exit status to be zero */
|
||||||
|
status = 1;
|
||||||
|
if ((time_monotonic() - beg) >= NMRP_INITIAL_TIMEOUT) {
|
||||||
printf("\nNo response after 60 seconds. Bailing out.\n");
|
printf("\nNo response after 60 seconds. Bailing out.\n");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
#ifdef NMRPFLASH_FUZZ
|
|
||||||
goto out;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -666,11 +657,14 @@ int nmrp_do(struct nmrpd_args *args)
|
||||||
printf("Uploading %s ... ", leafname(args->file_local));
|
printf("Uploading %s ... ", leafname(args->file_local));
|
||||||
}
|
}
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
status = tftp_put(args);
|
if (!(status = tftp_put(args))) {
|
||||||
|
printf("OK\n");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!status) {
|
if (!status) {
|
||||||
printf("OK\nWaiting for remote to respond.\n");
|
printf("Waiting for remote to respond.\n");
|
||||||
upload_ok = 1;
|
upload_ok = 1;
|
||||||
ethsock_set_timeout(sock, args->ul_timeout);
|
ethsock_set_timeout(sock, args->ul_timeout);
|
||||||
tx.msg.code = NMRP_C_KEEP_ALIVE_REQ;
|
tx.msg.code = NMRP_C_KEEP_ALIVE_REQ;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue