test-fuzz.c 774 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <stddef.h>
  4. #include <limits.h>
  5. #include <libubox/blob.h>
  6. #include <libubox/blobmsg.h>
  7. #include "ubusmsg.h"
  8. #include "libubus.h"
  9. #include "libubus-internal.h"
  10. static void _ubus_validate_hdr(const uint8_t *data, size_t size)
  11. {
  12. if (size > sizeof(struct ubus_msghdr))
  13. return;
  14. ubus_validate_hdr((struct ubus_msghdr *) data);
  15. }
  16. static void _ubus_parse_msg(const uint8_t *data, size_t size)
  17. {
  18. struct blob_attr *attr = (struct blob_attr *) data;
  19. if (size < sizeof(struct blob_attr *))
  20. return;
  21. if (blob_pad_len(attr) > UBUS_MAX_MSGLEN)
  22. return;
  23. ubus_parse_msg(attr, size);
  24. }
  25. int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
  26. {
  27. _ubus_validate_hdr(data, size);
  28. _ubus_parse_msg(data, size);
  29. return 0;
  30. }