fixed possible overflow cases
authorBorja Ferrer <faluco@alliedmods.net>
Mon Mar 19 19:19:41 2007 +0000 (2007-03-19)
changeset 6517129f1566129
parent 650 ab919035c173
child 652 d62a08ba6318
fixed possible overflow cases
core/sm_srvcmds.cpp
core/sm_stringutil.cpp
core/systems/LibrarySys.cpp
plugins/include/sourcemod.inc
     1.1 --- a/core/sm_srvcmds.cpp	Mon Mar 19 18:07:15 2007 +0000
     1.2 +++ b/core/sm_srvcmds.cpp	Mon Mar 19 19:19:41 2007 +0000
     1.3 @@ -158,7 +158,7 @@
     1.4  	char buffer[255];
     1.5  	size_t len, cmdlen = strlen(cmd);
     1.6  
     1.7 -	len = snprintf(buffer, sizeof(buffer), "    %s", cmd);
     1.8 +	len = UTIL_Format(buffer, sizeof(buffer), "    %s", cmd);
     1.9  	if (cmdlen < 16)
    1.10  	{
    1.11  		size_t num = 16 - cmdlen;
     2.1 --- a/core/sm_stringutil.cpp	Mon Mar 19 18:07:15 2007 +0000
     2.2 +++ b/core/sm_stringutil.cpp	Mon Mar 19 19:19:41 2007 +0000
     2.3 @@ -890,7 +890,13 @@
     2.4  	size_t len = vsnprintf(buffer, maxlength, fmt, ap);
     2.5  	va_end(ap);
     2.6  
     2.7 -	return (len >= maxlength) ? (maxlength - 1) : len;
     2.8 +	if (len >= maxlength)
     2.9 +	{
    2.10 +		buffer[maxlength - 1] = '\0';
    2.11 +		return (maxlength - 1);
    2.12 +	} else {
    2.13 +		return len;
    2.14 +	}
    2.15  }
    2.16  
    2.17  char *sm_strdup(const char *str)
     3.1 --- a/core/systems/LibrarySys.cpp	Mon Mar 19 18:07:15 2007 +0000
     3.2 +++ b/core/systems/LibrarySys.cpp	Mon Mar 19 19:19:41 2007 +0000
     3.3 @@ -305,7 +305,7 @@
     3.4  	size_t mylen = vsnprintf(buffer, len, fmt, ap);
     3.5  	va_end(ap);
     3.6  
     3.7 -	mylen = (mylen >= len) ? (len - 1) : mylen;
     3.8 +	mylen = (mylen >= len) ? len : mylen;
     3.9  
    3.10  	for (size_t i=0; i<mylen; i++)
    3.11  	{
     4.1 --- a/plugins/include/sourcemod.inc	Mon Mar 19 18:07:15 2007 +0000
     4.2 +++ b/plugins/include/sourcemod.inc	Mon Mar 19 19:19:41 2007 +0000
     4.3 @@ -109,6 +109,7 @@
     4.4   * Called when the map is loaded and configs have been parsed.
     4.5   * Note that commands are processed per-frame, and thus config
     4.6   * files may not be fully loaded until a few seconds later.
     4.7 + * This function will be called on each mapchange.
     4.8   */
     4.9  forward OnServerLoad();
    4.10