test_socket_options_fuzzer.cpp
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MPL-2.0 */
2 
3 #ifdef ZMQ_USE_FUZZING_ENGINE
4 #include <fuzzer/FuzzedDataProvider.h>
5 #endif
6 
7 #include "testutil.hpp"
8 #include "testutil_unity.hpp"
9 
10 #ifdef ZMQ_DISCONNECT_MSG
11 #define LAST_OPTION ZMQ_DISCONNECT_MSG
12 #else
13 #define LAST_OPTION ZMQ_BINDTODEVICE
14 #endif
15 
16 extern "C" int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
17 {
18  int option;
19  void *ctx = zmq_ctx_new ();
21  void *server = zmq_socket (ctx, ZMQ_XPUB);
23 
24  if (!size)
25  return 0;
26 
27  for (option = ZMQ_AFFINITY; option <= LAST_OPTION; ++option) {
28  uint8_t out[8192];
29  size_t out_size = 8192;
30 
31  zmq_setsockopt (server, option, data, size);
32  zmq_getsockopt (server, option, out, &out_size);
33  }
34 
35  zmq_close (server);
36  zmq_ctx_term (ctx);
37 
38  return 0;
39 }
40 
41 #ifndef ZMQ_USE_FUZZING_ENGINE
43 {
44  uint8_t **data;
45  size_t *len, num_cases = 0;
47  "tests/libzmq-fuzz-corpora/test_socket_options_fuzzer_seed_corpus",
48  &data, &len, &num_cases)
49  != 0)
50  exit (77);
51 
52  while (num_cases-- > 0) {
54  LLVMFuzzerTestOneInput (data[num_cases], len[num_cases]));
55  free (data[num_cases]);
56  }
57 
58  free (data);
59  free (len);
60 }
61 
62 int main (int argc, char **argv)
63 {
65 
66  UNITY_BEGIN ();
68 
69  return UNITY_END ();
70 }
71 #endif
UNITY_END
return UNITY_END()
ZMQ_XPUB
#define ZMQ_XPUB
Definition: zmq.h:267
ZMQ_AFFINITY
#define ZMQ_AFFINITY
Definition: zmq.h:276
RUN_TEST
#define RUN_TEST(func)
Definition: unity_internals.h:615
zmq_ctx_new
ZMQ_EXPORT void * zmq_ctx_new(void)
Definition: zmq.cpp:109
testutil_unity.hpp
fuzzer_corpus_encode
int fuzzer_corpus_encode(const char *dirname, uint8_t ***data, size_t **len, size_t *num_cases)
Definition: testutil.cpp:534
zmq_setsockopt
ZMQ_EXPORT int zmq_setsockopt(void *s_, int option_, const void *optval_, size_t optvallen_)
Definition: zmq.cpp:250
testutil.hpp
main
int main(int argc, char **argv)
Definition: test_socket_options_fuzzer.cpp:62
LAST_OPTION
#define LAST_OPTION
Definition: test_socket_options_fuzzer.cpp:11
zmq_socket
ZMQ_EXPORT void * zmq_socket(void *, int type_)
Definition: zmq.cpp:230
server
void * server
Definition: test_security_curve.cpp:29
zmq_close
ZMQ_EXPORT int zmq_close(void *s_)
Definition: zmq.cpp:241
len
int len
Definition: php/ext/google/protobuf/map.c:206
test_socket_options_fuzzer
void test_socket_options_fuzzer()
Definition: test_socket_options_fuzzer.cpp:42
size
GLsizeiptr size
Definition: glcorearb.h:2943
setup_test_environment
void setup_test_environment(int timeout_seconds_)
Definition: testutil.cpp:201
UNITY_BEGIN
UNITY_BEGIN()
data
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: glcorearb.h:2879
zmq_ctx_term
ZMQ_EXPORT int zmq_ctx_term(void *context_)
Definition: zmq.cpp:128
LLVMFuzzerTestOneInput
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
Definition: test_socket_options_fuzzer.cpp:16
TEST_ASSERT_NOT_NULL
#define TEST_ASSERT_NOT_NULL(pointer)
Definition: unity.h:125
TEST_ASSERT_SUCCESS_ERRNO
#define TEST_ASSERT_SUCCESS_ERRNO(expr)
Definition: proxy_thr.cpp:47
zmq_getsockopt
ZMQ_EXPORT int zmq_getsockopt(void *s_, int option_, void *optval_, size_t *optvallen_)
Definition: zmq.cpp:261


libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:59