From: Wilfried Goesgens Date: Sat, 8 Jun 2013 15:03:50 +0000 (+0200) Subject: NETIN: save strlens when deserializing network message buffers. X-Git-Tag: v8.20~29 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=51af14d17696f72e1c4d9beda8aa80a8c5b40376 NETIN: save strlens when deserializing network message buffers. --- 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 */