diff --git a/code/qcommon/msg.c b/code/qcommon/msg.c index c8344a1a..e7d5047c 100644 --- a/code/qcommon/msg.c +++ b/code/qcommon/msg.c @@ -462,12 +462,14 @@ char *MSG_ReadString( msg_t *msg ) { if ( c > 127 ) { c = '.'; } - - string[l] = c; - l++; - } while (l < sizeof(string)-1); + // break only after reading all expected data from bitstream + if ( l >= sizeof(string)-1 ) { + break; + } + string[l++] = c; + } while (1); - string[l] = 0; + string[l] = '\0'; return string; } @@ -490,12 +492,14 @@ char *MSG_ReadBigString( msg_t *msg ) { if ( c > 127 ) { c = '.'; } - - string[l] = c; - l++; - } while (l < sizeof(string)-1); + // break only after reading all expected data from bitstream + if ( l >= sizeof(string)-1 ) { + break; + } + string[l++] = c; + } while (1); - string[l] = 0; + string[l] = '\0'; return string; } @@ -518,12 +522,14 @@ char *MSG_ReadStringLine( msg_t *msg ) { if ( c > 127 ) { c = '.'; } - - string[l] = c; - l++; - } while (l < sizeof(string)-1); + // break only after reading all expected data from bitstream + if ( l >= sizeof(string)-1 ) { + break; + } + string[l++] = c; + } while (1); - string[l] = 0; + string[l] = '\0'; return string; }