summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDirk Engling <erdgeist@erdgeist.org>2026-11-06 18:31:07 +0100
committerDirk Engling <erdgeist@erdgeist.org>2026-11-06 18:31:07 +0100
commitc965744e09a24270bb26e3e008dc2ede76544c98 (patch)
tree0ea105e7346f6d195b5e01ca171d721abffcf180 /src
parent92c27bbda9e809683537e5cc48adad0d5c390587 (diff)
Fix: livesync watermark used sizeof(ot_peer) which is a byte. Clamping on copy length now
Diffstat (limited to 'src')
-rw-r--r--src/ot_livesync.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/ot_livesync.c b/src/ot_livesync.c
index 7d7208e..1381b3b 100644
--- a/src/ot_livesync.c
+++ b/src/ot_livesync.c
@@ -30,7 +30,7 @@ static uint16_t g_port = LIVESYNC_PORT;
30#define LIVESYNC_INCOMING_BUFFSIZE (256 * 256) 30#define LIVESYNC_INCOMING_BUFFSIZE (256 * 256)
31 31
32#define LIVESYNC_OUTGOING_BUFFSIZE_PEERS 1480 32#define LIVESYNC_OUTGOING_BUFFSIZE_PEERS 1480
33#define LIVESYNC_OUTGOING_WATERMARK_PEERS (sizeof(ot_peer) + sizeof(ot_hash)) 33#define LIVESYNC_OUTGOING_WATERMARK_PEERS (sizeof(ot_hash) + OT_PEER_SIZE6)
34 34
35#define LIVESYNC_MAXDELAY 15 /* seconds */ 35#define LIVESYNC_MAXDELAY 15 /* seconds */
36 36
@@ -127,6 +127,10 @@ static void livesync_issue_peersync(sync_buffer *buf) {
127 char mycopy[LIVESYNC_OUTGOING_BUFFSIZE_PEERS]; 127 char mycopy[LIVESYNC_OUTGOING_BUFFSIZE_PEERS];
128 size_t fill = buf->fill; 128 size_t fill = buf->fill;
129 129
130 /* The flush watermark keeps fill within the buffer */
131 if (fill > LIVESYNC_OUTGOING_BUFFSIZE_PEERS)
132 fill = LIVESYNC_OUTGOING_BUFFSIZE_PEERS;
133
130 memcpy(mycopy, buf->data, fill); 134 memcpy(mycopy, buf->data, fill);
131 buf->fill = sizeof(g_tracker_id) + sizeof(uint32_t); 135 buf->fill = sizeof(g_tracker_id) + sizeof(uint32_t);
132 buf->next_packet_time = time_future_seconds(LIVESYNC_MAXDELAY); 136 buf->next_packet_time = time_future_seconds(LIVESYNC_MAXDELAY);