damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

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:
Mdamus/Util/Parser.swift | 6++++++
MdamusTests/ReplyTests.swift | 8++++++++
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)