diff options
| author | Dirk Engling <erdgeist@erdgeist.org> | 2026-11-06 18:31:07 +0100 |
|---|---|---|
| committer | Dirk Engling <erdgeist@erdgeist.org> | 2026-11-06 18:31:07 +0100 |
| commit | c965744e09a24270bb26e3e008dc2ede76544c98 (patch) | |
| tree | 0ea105e7346f6d195b5e01ca171d721abffcf180 /src | |
| parent | 92c27bbda9e809683537e5cc48adad0d5c390587 (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.c | 6 |
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); |
