From d0a0fe43e8c2354ee84782d6c425b6193fe9a5dd Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Fri, 30 Nov 2018 16:50:54 -0800 Subject: [PATCH] fix userid conversion --- src/Discord.Net.Core/Utils/TokenUtils.cs | 9 +++++---- test/Discord.Net.Tests/Tests.TokenUtils.cs | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Core/Utils/TokenUtils.cs b/src/Discord.Net.Core/Utils/TokenUtils.cs index 8e533bcfa..f57a3ccac 100644 --- a/src/Discord.Net.Core/Utils/TokenUtils.cs +++ b/src/Discord.Net.Core/Utils/TokenUtils.cs @@ -1,4 +1,5 @@ using System; +using System.Text; namespace Discord { @@ -41,10 +42,10 @@ namespace Discord try { // decode the first segment as base64 - var v = Convert.FromBase64String(segments[0]); - BitConverter.ToUInt64(v, 0); - // if no exception thrown, token is valid - return true; + var bytes = Convert.FromBase64String(segments[0]); + var idStr = Encoding.UTF8.GetString(bytes); + // discard id + return ulong.TryParse(idStr, out var id); } catch (FormatException) { diff --git a/test/Discord.Net.Tests/Tests.TokenUtils.cs b/test/Discord.Net.Tests/Tests.TokenUtils.cs index 1348b7744..317b8c719 100644 --- a/test/Discord.Net.Tests/Tests.TokenUtils.cs +++ b/test/Discord.Net.Tests/Tests.TokenUtils.cs @@ -138,6 +138,7 @@ namespace Discord [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4. this part is invalid. this part is also invalid", true)] [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4.", false)] [InlineData("MTk4NjIyNDgzNDcxOTI1MjQ4", false)] + [InlineData("NDI4NDc3OTQ0MDA5MTk1NTIw.xxxx.xxxxx", true)] // should not throw an unexpected exception [InlineData("", false)] [InlineData(null, false)]