Fix issue with string extractor not extracting all strings
This commit is contained in:
@@ -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 }
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user