From b374e65ea7d10694d7037e7c47249c65ae21616c Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Wed, 17 Jul 2013 02:51:25 -0700 Subject: [PATCH 1/4] Fix SQL_Query Handle Leaks in sb_bans. --- game/addons/sourcemod/scripting/sb_bans.sp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/game/addons/sourcemod/scripting/sb_bans.sp b/game/addons/sourcemod/scripting/sb_bans.sp index dfdcb3f..da22cb8 100644 --- a/game/addons/sourcemod/scripting/sb_bans.sp +++ b/game/addons/sourcemod/scripting/sb_bans.sp @@ -640,6 +640,8 @@ public Action:Timer_ProcessQueue(Handle:timer, any:data) iType, sAuth, sIp, sEscapedName, sEscapedReason, iLength, g_iServerId, iAdminId, sAdminIp, iTime); SB_Query(Query_AddedFromQueue, sQuery, hPack); } + + CloseHandle(hQuery); } public Action:Timer_ProcessTemp(Handle:timer) @@ -1171,7 +1173,14 @@ bool:HasLocalBan(const String:sAuth[], const String:sIp[] = "", bool:bType = tru sAuth[0] ? sAuth : "none", sIp[0] ? sIp : "none", GetTime(), GetTime()); new Handle:hQuery = SQL_Query(g_hSQLiteDB, sQuery); - return hQuery && SQL_GetRowCount(hQuery); + new bool:bResult = false; + if (hQuery != INVALID_HANDLE) + { + bResult = SQL_GetRowCount(hQuery); + CloseHandle(hQuery); + } + + return bResult; } InsertLocalBan(iType, const String:sAuth[], const String:sIp[], const String:sName[], const String:sReason[], iLength, iAdminId, const String:sAdminIp[], iTime, bool:bQueued = false) From 139fe156f5ce9633eda8d434a0592892db66371b Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Wed, 17 Jul 2013 03:07:02 -0700 Subject: [PATCH 2/4] Fix the client's translation language not being used with generated text for them. --- game/addons/sourcemod/scripting/sb_bans.sp | 2 +- game/addons/sourcemod/scripting/sb_viewbans.sp | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/game/addons/sourcemod/scripting/sb_bans.sp b/game/addons/sourcemod/scripting/sb_bans.sp index da22cb8..fbaff38 100644 --- a/game/addons/sourcemod/scripting/sb_bans.sp +++ b/game/addons/sourcemod/scripting/sb_bans.sp @@ -741,7 +741,7 @@ public MenuHandler_Reason(Handle:menu, MenuAction:action, param1, param2) if(g_iBanTarget[param1] != -1) { decl String:sKickMessage[128]; - Format(sKickMessage, sizeof(sKickMessage), "%t", "Banned Check Site", g_sWebsite); + Format(sKickMessage, sizeof(sKickMessage), "%T", "Banned Check Site", g_iBanTarget[param1], g_sWebsite); BanClient(g_iBanTarget[param1], g_iBanTime[param1], BANFLAG_AUTO, sInfo, sKickMessage, "sm_ban", param1); } diff --git a/game/addons/sourcemod/scripting/sb_viewbans.sp b/game/addons/sourcemod/scripting/sb_viewbans.sp index 8932bb0..302de91 100644 --- a/game/addons/sourcemod/scripting/sb_viewbans.sp +++ b/game/addons/sourcemod/scripting/sb_viewbans.sp @@ -233,7 +233,7 @@ public MenuHandler_BanList(Handle:menu, MenuAction:action, param1, param2) GetMenuItem(menu, param2, sBanID, sizeof(sBanID)); // TODO: Deal with passing the target id new iTarget; - new Handle:hPanel = BuildPlayerBanInfoPanel(iTarget, StringToInt(sBanID)); + new Handle:hPanel = BuildPlayerBanInfoPanel(iTarget, StringToInt(sBanID), param1); SendPanelToClient(hPanel, param1, PanelHandler_BanInfo, MENU_TIME_FOREVER); CloseHandle(hPanel); } @@ -307,7 +307,7 @@ stock Handle:BuildPlayerMenu(iClient) { decl String:sTitle[128]; new Handle:hMenu = CreateMenu(MenuHandler_SelectPlayer); - Format(sTitle, sizeof(sTitle), "%t:", "Select player"); + Format(sTitle, sizeof(sTitle), "%T:", "Select player", iClient); SetMenuTitle(hMenu, sTitle); SetMenuExitBackButton(hMenu, true); AddTargetsToMenu2(hMenu, iClient, COMMAND_FILTER_NO_BOTS|COMMAND_FILTER_CONNECTED); @@ -320,7 +320,7 @@ stock Handle:BuildPlayerBanListMenu(iTarget) new Handle:hMenu = CreateMenu(MenuHandler_BanList); decl String:sTargetName[64], String:sTitle[128]; GetClientName(iTarget, sTargetName, sizeof(sTargetName)); - Format(sTitle, sizeof(sTitle), "%t:", "Player ban list", sTargetName); + Format(sTitle, sizeof(sTitle), "%T:", "Player ban list", iTarget, sTargetName); SetMenuTitle(hMenu, sTitle); SetMenuExitBackButton(hMenu, true); @@ -336,13 +336,13 @@ stock Handle:BuildPlayerBanListMenu(iTarget) return hMenu; } -stock Handle:BuildPlayerBanInfoPanel(iTarget, iBanID) +stock Handle:BuildPlayerBanInfoPanel(iTarget, iBanID, client = 0) { // Create the panel and set the panel options. new Handle:hPanel = CreatePanel(); decl String:sTargetName[64], String:sTitle[128]; GetClientName(iTarget, sTargetName, sizeof(sTargetName)); - Format(sTitle, sizeof(sTitle), "%t:", "Player ban info", sTargetName); + Format(sTitle, sizeof(sTitle), "%T:", "Player ban info", client, sTargetName); SetPanelTitle(hPanel, sTitle); // Create all the string variables we will need @@ -438,9 +438,8 @@ stock SendChatToAdmins(iTarget) stock PrintBans(iClient, iTarget) { - decl String:sAuth[64], String:sTargetName[64], String:sReplyBuffer[256]; + decl String:sAuth[64], String:sTargetName[64]; GetClientAuthString(iTarget, sAuth, sizeof(sAuth)); GetClientName(iTarget, sTargetName, sizeof(sTargetName)); - Format(sReplyBuffer, sizeof(sReplyBuffer), "%t", "Player bans", sTargetName, sAuth, g_iPlayerBans[iTarget]); - PrintToChat(iClient, "[SM] %s", sReplyBuffer); + PrintToChat(iClient, "[SM] %t", "Player bans", sTargetName, sAuth, g_iPlayerBans[iTarget]); } \ No newline at end of file From 614daaf06b12a6451d622c329c86fa27a36705d7 Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Wed, 17 Jul 2013 03:19:38 -0700 Subject: [PATCH 3/4] Filter bots in ProcessTargetString, not afterward. --- game/addons/sourcemod/scripting/sb_bans.sp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/game/addons/sourcemod/scripting/sb_bans.sp b/game/addons/sourcemod/scripting/sb_bans.sp index fbaff38..7597b59 100644 --- a/game/addons/sourcemod/scripting/sb_bans.sp +++ b/game/addons/sourcemod/scripting/sb_bans.sp @@ -447,14 +447,13 @@ public Action:Command_BanIp(client, args) client, iTargets, 1, - COMMAND_FILTER_CONNECTED|COMMAND_FILTER_NO_MULTI, + COMMAND_FILTER_CONNECTED|COMMAND_FILTER_NO_MULTI|COMMAND_FILTER_NO_BOTS, sTargets, sizeof(sTargets), tn_is_ml) > 0) { iTarget = iTargets[0]; - if(!IsFakeClient(iTarget) && CanUserTarget(client, iTarget)) - GetClientIP(iTarget, sIp, sizeof(sIp)); + GetClientIP(iTarget, sIp, sizeof(sIp)); } BanIdentity(sIp, iTime, BANFLAG_IP, sArg[iLen], "sm_banip", client); @@ -484,15 +483,13 @@ public Action:Command_AddBan(client, args) client, iTargets, 1, - COMMAND_FILTER_CONNECTED|COMMAND_FILTER_NO_MULTI, + COMMAND_FILTER_CONNECTED|COMMAND_FILTER_NO_MULTI|COMMAND_FILTER_NO_BOTS, sTargets, sizeof(sTargets), tn_is_ml) > 0) { iTarget = iTargets[0]; - - if(!IsFakeClient(iTarget) && CanUserTarget(client, iTarget)) - GetClientAuthString(iTarget, sAuth, sizeof(sAuth)); + GetClientAuthString(iTarget, sAuth, sizeof(sAuth), false); } BanIdentity(sAuth, iTime, BANFLAG_AUTHID, sArg[iLen], "sm_addban", client); From 6afbc82b1c360ef9966b2cf1f7f38eb80bd2f3c9 Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Wed, 17 Jul 2013 03:23:53 -0700 Subject: [PATCH 4/4] Help prevent mismatching bug from " STEAM_0:1:12323 ". --- game/addons/sourcemod/scripting/sb_bans.sp | 1 + 1 file changed, 1 insertion(+) diff --git a/game/addons/sourcemod/scripting/sb_bans.sp b/game/addons/sourcemod/scripting/sb_bans.sp index 7597b59..cd00027 100644 --- a/game/addons/sourcemod/scripting/sb_bans.sp +++ b/game/addons/sourcemod/scripting/sb_bans.sp @@ -512,6 +512,7 @@ public Action:Command_Unban(client, args) decl String:sArg[24]; GetCmdArgString(sArg, sizeof(sArg)); ReplaceString(sArg, sizeof(sArg), "\"", ""); + TrimString(sArg); RemoveBan(sArg, strncmp(sArg, "STEAM_", 6) == 0 ? BANFLAG_AUTHID : BANFLAG_IP, "sm_unban", client); return Plugin_Handled;