diff --git a/DiscordChatExporter.Core/Discord/Data/User.cs b/DiscordChatExporter.Core/Discord/Data/User.cs index d38c863..a446be9 100644 --- a/DiscordChatExporter.Core/Discord/Data/User.cs +++ b/DiscordChatExporter.Core/Discord/Data/User.cs @@ -71,4 +71,4 @@ namespace DiscordChatExporter.Core.Discord.Data return new User(id, isBot, discriminator, name, avatarUrl); } } -} +} \ No newline at end of file diff --git a/DiscordChatExporter.Core/Markdown/Parsing/MarkdownParser.cs b/DiscordChatExporter.Core/Markdown/Parsing/MarkdownParser.cs index 7432074..fe5b064 100644 --- a/DiscordChatExporter.Core/Markdown/Parsing/MarkdownParser.cs +++ b/DiscordChatExporter.Core/Markdown/Parsing/MarkdownParser.cs @@ -238,8 +238,8 @@ namespace DiscordChatExporter.Core.Markdown.Parsing new Regex("", DefaultRegexOptions), (_, m) => { - // We don't care about the 'R' parameter because we're not going to - // show relative timestamps in an export anyway. + // TODO: support formatting parameters + // See: https://github.com/Tyrrrz/DiscordChatExporter/issues/662 if (!long.TryParse(m.Groups[1].Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out var offset)) @@ -247,6 +247,13 @@ namespace DiscordChatExporter.Core.Markdown.Parsing return null; } + // Bound check + // https://github.com/Tyrrrz/DiscordChatExporter/issues/681 + if (offset < TimeSpan.MinValue.TotalSeconds || offset > TimeSpan.MaxValue.TotalSeconds) + { + return null; + } + return new UnixTimestampNode(DateTimeOffset.UnixEpoch + TimeSpan.FromSeconds(offset)); } );