Browse Source

return the original string if it already contains padding, do not throw

pull/1278/head
Chris Johnston 6 years ago
parent
commit
d3d2f395fa
1 changed files with 4 additions and 6 deletions
  1. +4
    -6
      src/Discord.Net.Core/Utils/TokenUtils.cs

+ 4
- 6
src/Discord.Net.Core/Utils/TokenUtils.cs View File

@@ -23,13 +23,14 @@ namespace Discord
/// Pads a base64-encoded string with 0, 1, or 2 '=' characters, /// Pads a base64-encoded string with 0, 1, or 2 '=' characters,
/// if the string is not a valid multiple of 4. /// if the string is not a valid multiple of 4.
/// Does not ensure that the provided string contains only valid base64 characters. /// Does not ensure that the provided string contains only valid base64 characters.
/// Strings that already contain padding will not have any more padding applied.
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// A string that would require 3 padding characters is considered to be already corrupt. /// A string that would require 3 padding characters is considered to be already corrupt.
/// Some older bot tokens may require padding, as the format provided by Discord /// Some older bot tokens may require padding, as the format provided by Discord
/// does not include this padding in the token. /// does not include this padding in the token.
/// </remarks> /// </remarks>
/// <param name="encodedBase64">The base64 encoded string to pad with characters. </param>
/// <param name="encodedBase64">The base64 encoded string to pad with characters.</param>
/// <returns>A string containing the base64 padding.</returns> /// <returns>A string containing the base64 padding.</returns>
/// <exception cref="FormatException"> /// <exception cref="FormatException">
/// Thrown if <paramref name="encodedBase64"/> would require an invalid number of padding characters. /// Thrown if <paramref name="encodedBase64"/> would require an invalid number of padding characters.
@@ -37,18 +38,15 @@ namespace Discord
/// <exception cref="ArgumentNullException"> /// <exception cref="ArgumentNullException">
/// Thrown if <paramref name="encodedBase64"/> is null, empty, or whitespace. /// Thrown if <paramref name="encodedBase64"/> is null, empty, or whitespace.
/// </exception> /// </exception>
/// <exception cref="ArgumentException">
/// Thrown if the given input string already contains padding characters.
/// </exception>
internal static string PadBase64String(string encodedBase64) internal static string PadBase64String(string encodedBase64)
{ {
if (string.IsNullOrWhiteSpace(encodedBase64)) if (string.IsNullOrWhiteSpace(encodedBase64))
throw new ArgumentNullException(paramName: encodedBase64, throw new ArgumentNullException(paramName: encodedBase64,
message: "The supplied base64-encoded string was null or whitespace."); message: "The supplied base64-encoded string was null or whitespace.");


// do not pad if already contains padding characters
if (encodedBase64.IndexOf(Base64Padding) != -1) if (encodedBase64.IndexOf(Base64Padding) != -1)
throw new ArgumentException(paramName: encodedBase64,
message: "The supplied base64-encoded string already contains padding characters.");
return encodedBase64;


// based from https://stackoverflow.com/a/1228744 // based from https://stackoverflow.com/a/1228744
var padding = (4 - (encodedBase64.Length % 4)) % 4; var padding = (4 - (encodedBase64.Length % 4)) % 4;


Loading…
Cancel
Save