fix: memory pool alloc mismatch in tests, db_sync SEND_DATA buffer overflow
- test_etcp_router_reconnect, test_etcp_connect, test_stcp_traffic: replace u_calloc with memory_pool_alloc for TOPO_SOCKMETA4/TOPO_ADDR4 - db_sync.c: fix req[14] -> req[15] — SEND_DATA request header is 15 bytes (type:1 + from:4 + count:2 + vp:4 + want_from:4)
This commit is contained in:
1 parent
fe9be74e29
commit
d310bccf08
52 files changed
+1796
-585
No files matched your search
+2
-2
@@ -1089,10 +1089,10 @@ static void db_handle_sync_done(struct DB_SYNC_INSTANCE* si, uint64_t src, const
|
||||
} else if (mc < pc) {
|
||||
// Request tail
|
||||
uint32_t vp_send = mc > 0 ? mc - 1 : (uint32_t)-1;
|
||||
uint8_t req[14]; req[0] = DB_MSG_SEND_DATA;
|
||||
uint8_t req[15]; req[0] = DB_MSG_SEND_DATA;
|
||||
memcpy(req + 1, &mc, 4); uint16_t z = 0; memcpy(req + 5, &z, 2);
|
||||
memcpy(req + 7, &vp_send, 4); memcpy(req + 11, &mc, 4);
|
||||
db_sync_send(si, src, req, 14);
|
||||
db_sync_send(si, src, req, 15);
|
||||
if (sp) sp->sync_state = 1;
|
||||
DEBUG_INFO(DEBUG_CATEGORY_DB_SYNC, "sync [%s:%04llX] ← SYNC_DONE: mc=%u < pc=%u → request tail from=%u",
|
||||
SI_SHRT(si), (unsigned long long)(src >> 16), mc, pc, mc);
|
||||
|
||||
Reference in new issue
Block a user