summaryrefslogtreecommitdiffstats
path: root/src/shared
diff options
context:
space:
mode:
authorSimon Rettberg2025-12-09 15:49:52 +0100
committerSimon Rettberg2025-12-09 15:49:52 +0100
commitb3062b85b6778acb499998216fb8f3fd71119583 (patch)
tree2df3de5930e1430cfaf792f4b6dae7b8993dfc0c /src/shared
parent[KERNEL] Fix build on newer gcc (diff)
parent[SERVER] iscsi: More comments (diff)
downloaddnbd3-b3062b85b6778acb499998216fb8f3fd71119583.tar.gz
dnbd3-b3062b85b6778acb499998216fb8f3fd71119583.tar.xz
dnbd3-b3062b85b6778acb499998216fb8f3fd71119583.zip
Merge branch 'iscsi-refactor'
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/CMakeLists.txt5
-rw-r--r--src/shared/sockhelper.c16
2 files changed, 20 insertions, 1 deletions
diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt
index a1bd49a..ce129af 100644
--- a/src/shared/CMakeLists.txt
+++ b/src/shared/CMakeLists.txt
@@ -11,6 +11,11 @@ find_package(Libatomic REQUIRED)
# add compile option to get POLLRDHUP support for signals
add_definitions(-D_GNU_SOURCE)
+if(DNBD3_SERVER_AFL)
+ message(STATUS "Building dnbd3-shared with AFL support")
+ add_definitions(-DDNBD3_SERVER_AFL)
+endif(DNBD3_SERVER_AFL)
+
set(DNBD3_SHARED_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/crc32.c
${CMAKE_CURRENT_SOURCE_DIR}/fdsignal.c
${CMAKE_CURRENT_SOURCE_DIR}/log.c
diff --git a/src/shared/sockhelper.c b/src/shared/sockhelper.c
index 5096320..b3f479a 100644
--- a/src/shared/sockhelper.c
+++ b/src/shared/sockhelper.c
@@ -13,6 +13,8 @@
#define MAXLISTEN 20
+#include <dnbd3/afl.h>
+
struct _poll_list {
int count;
struct pollfd entry[MAXLISTEN];
@@ -435,6 +437,18 @@ ssize_t sock_recv(const int sock, void *buffer, const size_t len)
done += ret;
}
if ( done == 0 ) return ret;
- return done;
+ return (ssize_t)done;
}
+bool sock_sendPadding(const int fd, size_t bytes)
+{
+ static char nullbytes[512] = {0};
+
+ while ( bytes >= sizeof(nullbytes) ) {
+ ssize_t ret = sock_sendAll( fd, nullbytes, sizeof(nullbytes), 2 );
+ if ( ret <= 0 )
+ return false;
+ bytes -= (uint32_t)ret;
+ }
+ return sock_sendAll( fd, nullbytes, bytes, 2 ) == (ssize_t)bytes;
+} \ No newline at end of file