From 5282c14c1d05ab55753a3f694398862fa299fc9b Mon Sep 17 00:00:00 2001
From: Rudolf Polzer <divverent@alientrap.org>
Date: Sat, 29 Jan 2011 09:28:35 +0100
Subject: [PATCH] do some sanity checking when getting player entity from #<n>
 spec

---
 qcsrc/server/miscfunctions.qc | 102 +++++++++++++++++-----------------
 1 file changed, 51 insertions(+), 51 deletions(-)

diff --git a/qcsrc/server/miscfunctions.qc b/qcsrc/server/miscfunctions.qc
index 849dcdab45..112162e407 100644
--- a/qcsrc/server/miscfunctions.qc
+++ b/qcsrc/server/miscfunctions.qc
@@ -2862,65 +2862,65 @@ void SoundEntity_Detach(entity pl)
 float ParseCommandPlayerSlotTarget_firsttoken;
 entity GetCommandPlayerSlotTargetFromTokenizedCommand(float tokens, float idx) // idx = start index
 {
-    string s;
-    entity e, head;
-    float n;
+	string s;
+	entity e, head;
+	float n;
 
-    s = string_null;
+	s = string_null;
 
-    ParseCommandPlayerSlotTarget_firsttoken = -1;
+	ParseCommandPlayerSlotTarget_firsttoken = -1;
 
-    if (tokens > idx)
-    {
-        if (substring(argv(idx), 0, 1) == "#")
-        {
-            s = substring(argv(idx), 1, -1);
-            ++idx;
-            if (s == "")
-                if (tokens > idx)
-                {
-                    s = argv(idx);
-                    ++idx;
-                }
+	if (tokens > idx)
+	{
+		if (substring(argv(idx), 0, 1) == "#")
+		{
+			s = substring(argv(idx), 1, -1);
+			++idx;
+			if (s == "") if (tokens > idx)
+			{
+				s = argv(idx);
+				++idx;
+			}
 			ParseCommandPlayerSlotTarget_firsttoken = idx;
-            if (s == ftos(stof(s)))
-            {
-                e = edict_num(stof(s));
-                if (e.flags & FL_CLIENT)
-                    return e;
-            }
-        }
-        else
-        {
-            // it must be a nick name
-            s = argv(idx);
-            ++idx;
+			n = stof(s);
+			if (s == ftos(n) && n > 0 && n <= maxclients)
+			{
+				e = edict_num(n);
+				if (e.flags & FL_CLIENT)
+					return e;
+			}
+		}
+		else
+		{
+			// it must be a nick name
+			s = argv(idx);
+			++idx;
 			ParseCommandPlayerSlotTarget_firsttoken = idx;
 
-            n = 0;
-            FOR_EACH_CLIENT(head)
-            if (head.netname == s)
-            {
-                e = head;
-                ++n;
-            }
-            if (n == 1)
-                return e;
+			n = 0;
+			FOR_EACH_CLIENT(head)
+				if (head.netname == s)
+				{
+					e = head;
+					++n;
+				}
+			if (n == 1)
+				return e;
 
-            s = strdecolorize(s);
-            n = 0;
-            FOR_EACH_CLIENT(head)
-            if (strdecolorize(head.netname) == s)
-            {
-                e = head;
-                ++n;
-            }
-            if (n == 1)
-                return e;
-        }
-    }
+			s = strdecolorize(s);
+			n = 0;
+			FOR_EACH_CLIENT(head)
+				if (strdecolorize(head.netname) == s)
+				{
+					e = head;
+					++n;
+				}
+			if (n == 1)
+				return e;
+		}
+	}
 
-    return world;
+	return world;
 }
 
 .float scale2;
-- 
2.39.5