Fix issue with string extractor not extracting all strings

This commit is contained in:
Tellow Krinkle
2018-09-14 23:25:01 -05:00
parent 9dffaffb1c
commit 2e5e223e1f
2 changed files with 3 additions and 3 deletions

View File

@@ -88,10 +88,10 @@ func stringFinder(data: Data, maxStringLength: Int = 100) -> [String] {
continue continue
} }
let uint32Length = Int((int &+ 3) / 4) let uint32Length = Int((int &+ 3) / 4)
let padding = (4 - (int % 4)) let padding = ((4 - (int % 4)) % 4)
let unicode = UnsafeBufferPointer(rebasing: ints[(index + 1)...].prefix(uint32Length)) let unicode = UnsafeBufferPointer(rebasing: ints[(index + 1)...].prefix(uint32Length))
// Ensure padding is all 0s // Ensure padding is all 0s
guard unicode.last!.littleEndian &>> (padding * 8) == 0 else { continue } guard padding == 0 || unicode.last!.littleEndian &>> (padding * 8) == 0 else { continue }
let optionalStr = unicode.withMemoryRebound(to: UInt8.self) { (unicode) -> String? in let optionalStr = unicode.withMemoryRebound(to: UInt8.self) { (unicode) -> String? in
let stringUnicode = unicode[..<Int(int)] let stringUnicode = unicode[..<Int(int)]
guard isValidUTF8(data: stringUnicode) else { return nil } guard isValidUTF8(data: stringUnicode) else { return nil }