47 lines
873 B
C
47 lines
873 B
C
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
#include "char/char.h"
|
|
#include "utils/utils.h"
|
|
|
|
int
|
|
LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
|
|
{
|
|
if (size < 2) return 0;
|
|
|
|
err_t err = ERR_T_INIT;
|
|
_VecCharInternal vec = VEC_INIT;
|
|
|
|
// Use input bytes to drive arbitrary vector operations
|
|
for (size_t i = 0; i < size; i++)
|
|
{
|
|
uint8_t op = data[i] % 5;
|
|
switch (op)
|
|
{
|
|
case 0:
|
|
_vec_char_push_back(&vec, (char)data[i], &err);
|
|
break;
|
|
case 1:
|
|
_vec_char_pop_back(&vec, &err);
|
|
break;
|
|
case 2:
|
|
if (vec._internal_size > 0)
|
|
{
|
|
size_t idx = (size_t)data[i] %
|
|
vec._internal_size;
|
|
_vec_char_erase(&vec, idx, &err);
|
|
}
|
|
break;
|
|
case 3:
|
|
_vec_char_reserve(&vec, (size_t)data[i], &err);
|
|
break;
|
|
case 4:
|
|
_vec_char_shrink_to_fit(&vec, &err);
|
|
break;
|
|
}
|
|
}
|
|
|
|
_vec_char_delete(&vec, &err);
|
|
return 0;
|
|
}
|