We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NKF.swiftの
let out: (UnsafeMutablePointer<UInt8>, Int) = convert(src: src, length: length, options: newOptions) からの let ptr = UnsafeMutableRawPointer(out.0).assumingMemoryBound(to: CChar.self) についてです。
let out: (UnsafeMutablePointer<UInt8>, Int) = convert(src: src, length: length, options: newOptions)
let ptr = UnsafeMutableRawPointer(out.0).assumingMemoryBound(to: CChar.self)
ここでout.0内に壊れた文字列があってNULL終端っぽい扱いをされると、ptrが意図しないところで終わるような気がします。 そもそも不正なデータを送るのはアレですが。
let str = String(bytesNoCopy: ptr, length: out.1 - 1, encoding: .utf8, freeWhenDone: false) とかサイズ指定をすると影響は最小限になると思います。
let str = String(bytesNoCopy: ptr, length: out.1 - 1, encoding: .utf8, freeWhenDone: false)
The text was updated successfully, but these errors were encountered:
ご連絡ありがとうございます。 0.5.0 にて修正してみました。Foundation側のソースを見る限り、String作成時にUTF8のバリデーションが行われないので、パフォーマンスは良くなるかもしれません。UTF8のバリデーションを行うには、.strict オプションを使うことができます。
0.5.0
.strict
Sorry, something went wrong.
No branches or pull requests
NKF.swiftの
let out: (UnsafeMutablePointer<UInt8>, Int) = convert(src: src, length: length, options: newOptions)
からの
let ptr = UnsafeMutableRawPointer(out.0).assumingMemoryBound(to: CChar.self)
についてです。
ここでout.0内に壊れた文字列があってNULL終端っぽい扱いをされると、ptrが意図しないところで終わるような気がします。
そもそも不正なデータを送るのはアレですが。
let str = String(bytesNoCopy: ptr, length: out.1 - 1, encoding: .utf8, freeWhenDone: false)
とかサイズ指定をすると影響は最小限になると思います。
The text was updated successfully, but these errors were encountered: