From b383d8c89e473be83a15485e5bb0cc571c1ebe6a Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 29 May 2008 05:39:58 +0000 Subject: [PATCH] fixed amb1686 - ReplaceString or ReplaceStringEx with an empty search string would crash. it now throws an error instead. --HG-- branch : sourcemod-1.0.x extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/branches/sourcemod-1.0.x%402221 --- core/smn_string.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/smn_string.cpp b/core/smn_string.cpp index 0b5c2125..e9d7b647 100644 --- a/core/smn_string.cpp +++ b/core/smn_string.cpp @@ -460,8 +460,12 @@ static cell_t ReplaceString(IPluginContext *pContext, const cell_t *params) pContext->LocalToString(params[4], &replace); maxlength = (size_t)params[2]; + if (search[0] == '\0') + { + return pContext->ThrowNativeError("Cannot replace searches of empty strings"); + } - return UTIL_ReplaceAll(text, maxlength, search, replace); + return UTIL_ReplaceAll(text, maxlength, search, replace); } static cell_t ReplaceStringEx(IPluginContext *pContext, const cell_t *params) @@ -477,6 +481,11 @@ static cell_t ReplaceStringEx(IPluginContext *pContext, const cell_t *params) size_t searchLen = (params[5] == -1) ? strlen(search) : (size_t)params[5]; size_t replaceLen = (params[6] == -1) ? strlen(replace) : (size_t)params[6]; + if (searchLen == 0) + { + return pContext->ThrowNativeError("Cannot replace searches of empty strings"); + } + char *ptr = UTIL_ReplaceEx(text, maxlength, search, searchLen, replace, replaceLen); if (ptr == NULL)