2 ms·
You can't get null bytes from a command-line argument. And going by https://news.ycombinator.com/item?id=44991638 https://news.ycombinator.com/item?id=44991638
by kragen 1y ago
You can't get null bytes from a command-line argument. And going by https://news.ycombinator.com/item?id=44991638 https://news.ycombinator.com/item?id=44991638 it's common to not use OsString when accepting command-line arguments, because std::env::args yields Strings, which means that probably most Rust programs that accept filenames on the command line have this bug.
- adastra22 1y agoRust String can contain null bytes! Rust uses explicit string lengths. Agree though that most OS wouldn't be able to pass null bytes in arguments though.
- kragen 1y agoRight, but it can't contain invalid UTF-8, which is valid in both command-line parameters and in filenames on Linux, FreeBSD, and other normal Unixes. See my link above for a demonstration of how this causes bugs in Rust programs.