Skip to content

壊れた文字列があった場合、そこで変換が切れた変換後文字列になる可能性 #8

Open
@tgk1

Description

@tgk1

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)
とかサイズ指定をすると影響は最小限になると思います。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions