From 51af14d17696f72e1c4d9beda8aa80a8c5b40376 Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sat, 8 Jun 2013 17:03:50 +0200 Subject: [PATCH] NETIN: save strlens when deserializing network message buffers. --- citadel/modules/network/serv_netspool.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/citadel/modules/network/serv_netspool.c b/citadel/modules/network/serv_netspool.c index 61ccbc992..9928c7e4b 100644 --- a/citadel/modules/network/serv_netspool.c +++ b/citadel/modules/network/serv_netspool.c @@ -395,6 +395,7 @@ void network_spoolout_room(SpoolControl *sc) */ void network_process_buffer(char *buffer, long size, HashList *working_ignetcfg, HashList *the_netmap, int *netmap_changed) { + long len; struct CitContext *CCC = CC; StrBuf *Buf = NULL; struct CtdlMessage *msg = NULL; @@ -433,8 +434,10 @@ void network_process_buffer(char *buffer, long size, HashList *working_ignetcfg, for (pos = 3; pos < size; ++pos) { field = buffer[pos]; - msg->cm_fields[field] = strdup(&buffer[pos+1]); - pos = pos + strlen(&buffer[(int)pos]); + len = strlen(buffer + pos + 1); + msg->cm_fields[field] = malloc(len + 1); + memcpy (msg->cm_fields[field], buffer+ pos + 1, len + 1); + pos = pos + len + 1; } /* Check for message routing */ -- 2.30.2