• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <fuzzer/FuzzedDataProvider.h>
2 
3 #include "nfa_nv_ci.h"
4 #include "nfa_nv_co.h"
5 
6 extern FuzzedDataProvider* g_fuzzed_data;
7 
nfa_nv_co_read(uint8_t * pBuffer,uint16_t nbytes,uint8_t block)8 void nfa_nv_co_read(uint8_t* pBuffer, uint16_t nbytes, uint8_t block) {
9   if (g_fuzzed_data->ConsumeBool()) {
10     nfa_nv_ci_read(0, NFA_NV_CO_FAIL, block);
11     return;
12   }
13 
14   std::vector<uint8_t> bytes = g_fuzzed_data->ConsumeBytes<uint8_t>(nbytes);
15   memcpy(pBuffer, bytes.data(), bytes.size());
16   nfa_nv_ci_read(bytes.size(), NFA_NV_CO_OK, block);
17 }
18 
nfa_nv_co_write(const uint8_t * pBuffer,uint16_t nbytes,uint8_t)19 void nfa_nv_co_write(const uint8_t* pBuffer, uint16_t nbytes,
20                      uint8_t /* block */) {
21   // Copy to detect invalid pBuffer/nbytes parameters
22   std::vector<uint8_t> bytes(pBuffer, pBuffer + nbytes);
23 
24   if (g_fuzzed_data->ConsumeBool()) {
25     nfa_nv_ci_write(NFA_NV_CO_FAIL);
26     return;
27   }
28 
29   nfa_nv_ci_write(NFA_NV_CO_OK);
30 }
31 
nfa_mem_co_alloc(uint32_t num_bytes)32 extern void* nfa_mem_co_alloc(uint32_t num_bytes) {
33   // Avoid large allocations that harm fuzzer performance
34   if (num_bytes > 100000) {
35     return nullptr;
36   }
37   return malloc(num_bytes);
38 }
39 
nfa_mem_co_free(void * pBuffer)40 extern void nfa_mem_co_free(void* pBuffer) { free(pBuffer); }
41 
delete_stack_non_volatile_store(bool)42 void delete_stack_non_volatile_store(bool) {}
43