commit 205774f684fedb2330929f840c04423146309db0
parent 0af8646fd52cbf6646557e8049ee380915f72c99
Author: Pablo Fernandez <pfer@me.com>
Date: Tue, 27 Dec 2022 19:11:54 +0700
Fix when calling parse_hex_char out of bounds
Closes: #158
Changelog-Fixed: Fix crash with @ sign in some posts
Diffstat:
2 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/damus/Util/Parser.swift b/damus/Util/Parser.swift
@@ -97,6 +97,12 @@ func parse_digit(_ p: Parser) -> Int? {
func parse_hex_char(_ p: Parser) -> Character? {
let ind = p.str.index(p.str.startIndex, offsetBy: p.pos)
+ // Check that we're within the bounds of p.str's length
+ if p.pos >= p.str.count {
+ return nil
+ }
+
+
if let c = p.str[ind].unicodeScalars.first {
// hex chars
let d = c.value
diff --git a/damusTests/ReplyTests.swift b/damusTests/ReplyTests.swift
@@ -53,6 +53,14 @@ class ReplyTests: XCTestCase {
XCTAssertEqual(blocks[0].is_text, content)
}
+ func testAtAtEnd() {
+ let content = "what @"
+ let blocks = parse_post_blocks(content: content)
+
+ XCTAssertEqual(blocks.count, 1)
+ XCTAssertEqual(blocks[0].is_text, "what @")
+ }
+
func testHashtagsInQuote() {
let content = "This is my \"#awesome post\""
let blocks = parse_post_blocks(content: content)