test(fuzz): esp_netif/ping_sock/ip_addr stubs — un-break ADR-061 fuzz build after #954

csi_collector.c gained esp_netif.h / ping/ping_sock.h / lwip/ip_addr.h
includes for the #954 gateway self-ping; the host-fuzz stub env lacked
them, breaking the fuzz build on main since 5789351b7. Stubs return
no-gateway so the self-ping path early-outs (compiles + links, never
exercised — matches the fuzz threat model which targets frame
serialization, not the network stack).

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv
2026-06-11 10:48:15 -04:00
parent 25cf88f18e
commit ed527afbaf
3 changed files with 147 additions and 0 deletions
@@ -0,0 +1,48 @@
/* Host-fuzzing stub for esp_netif.h (ADR-061).
*
* csi_collector.c's #954 self-ping needs the STA netif handle + gateway IP.
* In the fuzz environment there is no network stack: the handle lookup
* returns NULL, so csi_start_self_ping() takes its no-gateway early-out and
* the esp_ping path is never exercised (but must compile and link).
*/
#pragma once
#include <stdint.h>
#include <stdio.h>
#include "esp_err.h"
typedef struct esp_netif_obj esp_netif_t;
typedef struct {
uint32_t addr;
} esp_ip4_addr_t;
typedef struct {
esp_ip4_addr_t ip;
esp_ip4_addr_t netmask;
esp_ip4_addr_t gw;
} esp_netif_ip_info_t;
static inline esp_netif_t *esp_netif_get_handle_from_ifkey(const char *if_key)
{
(void)if_key;
return NULL; /* no netif in fuzz env -> self-ping early-out */
}
static inline esp_err_t esp_netif_get_ip_info(esp_netif_t *netif, esp_netif_ip_info_t *ip_info)
{
(void)netif;
(void)ip_info;
return ESP_FAIL;
}
static inline char *esp_ip4addr_ntoa(const esp_ip4_addr_t *addr, char *buf, int buflen)
{
if (buf != NULL && buflen > 0) {
snprintf(buf, (size_t)buflen, "%u.%u.%u.%u",
(unsigned)(addr->addr & 0xff), (unsigned)((addr->addr >> 8) & 0xff),
(unsigned)((addr->addr >> 16) & 0xff), (unsigned)((addr->addr >> 24) & 0xff));
}
return buf;
}
@@ -0,0 +1,20 @@
/* Host-fuzzing stub for lwip/ip_addr.h (ADR-061). Minimal surface for the
* #954 self-ping block; never functionally exercised in the fuzz env. */
#pragma once
#include <stdint.h>
typedef struct {
uint32_t addr;
uint8_t type;
} ip_addr_t;
static inline int ipaddr_aton(const char *cp, ip_addr_t *addr)
{
(void)cp;
if (addr != NULL) {
addr->addr = 0;
addr->type = 0;
}
return 1;
}
@@ -0,0 +1,79 @@
/* Host-fuzzing stub for ping/ping_sock.h (ADR-061). The #954 self-ping is
* unreachable in the fuzz env (esp_netif stub returns no gateway), but the
* symbols must compile and link. */
#pragma once
#include <stdint.h>
#include "esp_err.h"
#include "lwip/ip_addr.h"
typedef void *esp_ping_handle_t;
typedef void (*esp_ping_cb_t)(esp_ping_handle_t hdl, void *args);
typedef struct {
uint32_t count;
uint32_t interval_ms;
uint32_t timeout_ms;
uint32_t data_size;
uint8_t tos;
int ttl;
ip_addr_t target_addr;
uint32_t task_stack_size;
uint32_t task_prio;
uint32_t interface;
} esp_ping_config_t;
#define ESP_PING_COUNT_INFINITE (0)
#define ESP_PING_DEFAULT_CONFIG() \
{ \
.count = 5, \
.interval_ms = 1000, \
.timeout_ms = 1000, \
.data_size = 64, \
.tos = 0, \
.ttl = 64, \
.target_addr = {0, 0}, \
.task_stack_size = 2048, \
.task_prio = 2, \
.interface = 0, \
}
typedef struct {
void *cb_args;
esp_ping_cb_t on_ping_success;
esp_ping_cb_t on_ping_timeout;
esp_ping_cb_t on_ping_end;
} esp_ping_callbacks_t;
static inline esp_err_t esp_ping_new_session(const esp_ping_config_t *config,
const esp_ping_callbacks_t *cbs,
esp_ping_handle_t *hdl_out)
{
(void)config;
(void)cbs;
if (hdl_out != NULL) {
*hdl_out = (void *)0;
}
return ESP_FAIL; /* never starts a ping task in the fuzz env */
}
static inline esp_err_t esp_ping_start(esp_ping_handle_t hdl)
{
(void)hdl;
return ESP_OK;
}
static inline esp_err_t esp_ping_stop(esp_ping_handle_t hdl)
{
(void)hdl;
return ESP_OK;
}
static inline esp_err_t esp_ping_delete_session(esp_ping_handle_t hdl)
{
(void)hdl;
return ESP_OK;
}