summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2023-04-29 03:05:15 +0000
committerAlan Antonuk <alan.antonuk@gmail.com>2023-04-29 07:18:23 -0700
commit8889ef336d7af66fb4a0e3398db4c3701c33d3e1 (patch)
tree2a9d390226387fb2905b0e34c42915f9ba8259a9
parent72e6c63ae07ca800394d38bfe5c9238c9881f0b2 (diff)
downloadrabbitmq-c-8889ef336d7af66fb4a0e3398db4c3701c33d3e1.tar.gz
fuzz: add additional debugging information to fuzz_server
The idea is to give a bit more information about what is calling exit in the fuzz test. Signed-off-by: GitHub <noreply@github.com>
-rw-r--r--fuzz/fuzz_server.c38
1 files changed, 28 insertions, 10 deletions
diff --git a/fuzz/fuzz_server.c b/fuzz/fuzz_server.c
index ae72d8e..8f48a17 100644
--- a/fuzz/fuzz_server.c
+++ b/fuzz/fuzz_server.c
@@ -2,6 +2,7 @@
// SPDX-License-Identifier: mit
#include <arpa/inet.h>
+#include <errno.h>
#include <netinet/in.h>
#include <pthread.h>
#include <stdint.h>
@@ -24,7 +25,7 @@ struct Fuzzer {
};
typedef struct Fuzzer Fuzzer;
-#define PORT 8080
+#define PORT 5672
#define kMinInputLength 9
#define kMaxInputLength 1024
@@ -32,13 +33,32 @@ void client(Fuzzer *fuzzer);
void fuzzinit(Fuzzer *fuzzer) {
struct sockaddr_in server_addr;
+ int res;
fuzzer->socket = socket(AF_INET, SOCK_STREAM, 0);
+ if (fuzzer->socket == -1) {
+ fprintf(stderr, "socket failed %s", strerror(errno));
+ exit(1);
+ }
+ memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(fuzzer->port);
server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
- setsockopt(fuzzer->socket, SOL_SOCKET, SO_REUSEADDR, &(int){1}, sizeof(int));
- bind(fuzzer->socket, (struct sockaddr *)&server_addr, sizeof(server_addr));
- listen(fuzzer->socket, 1);
+ res = setsockopt(fuzzer->socket, SOL_SOCKET, SO_REUSEADDR, &(int){1}, sizeof(int));
+ if (res) {
+ fprintf(stderr, "setsockopt failed: %s", strerror(errno));
+ exit(1);
+ }
+
+ res = bind(fuzzer->socket, (struct sockaddr *)&server_addr, sizeof(server_addr));
+ if (res) {
+ fprintf(stderr, "bind failed: %s", strerror(errno));
+ exit(1);
+ }
+ res = listen(fuzzer->socket, 1);
+ if (res) {
+ fprintf(stderr, "listen failed: %s", strerror(errno));
+ exit(1);
+ }
}
void *Server(void *args) {
@@ -46,18 +66,15 @@ void *Server(void *args) {
int client;
char clientData[10240];
- struct sockaddr_in clientAddr;
- uint32_t clientSZ = sizeof(clientAddr);
- client = accept(fuzzer->socket, (struct sockaddr *)&clientAddr, &clientSZ);
+ client = accept(fuzzer->socket, NULL, NULL);
recv(client, clientData, sizeof(clientData), 0);
send(client, fuzzer->buffer, fuzzer->size, 0);
shutdown(client, SHUT_RDWR);
close(client);
-
- pthread_exit(NULL);
+ return NULL;
}
void clean(Fuzzer *fuzzer) {
@@ -104,7 +121,8 @@ void client(Fuzzer *fuzzer) {
}
status = amqp_socket_open(socket, hostname, fuzzer->port);
- if (status) {
+ if (status != AMQP_STATUS_OK) {
+ fprintf(stderr, "amqp_socket_open failed: %s", amqp_error_string2(status));
exit(1);
}