P.UNS.FFI.01 避免从公开的 Rust API 直接传字符串到 C 中
【描述】
在跨越 C 边界的时候,应该对 字符串进行边界检查,避免传入一些非法字符串。
【正例】
这个示例中,从公开的 Rust API
传入非法字符串到 C
,导致字符串格式化漏洞。
// From: https://github.com/RustSec/advisory-db/issues/106 extern crate pancurses; use pancurses::{initscr, endwin}; fn main() { let crash = "!~&@%+ S"; // 特意构造非法字符串 let window = initscr(); window.printw(crash); // 通过该函数跨 C 边界传入非法字符串,引起字符串格式化漏洞 window.refresh(); window.getch(); endwin(); }