3 ms·
Boundary Value tests are standard practice when doing extensive testing. Bugs rarely occur for typical input values but more often occur at the "boundaries" or
by admax88qqq 4y ago
Boundary Value tests are standard practice when doing extensive testing.
Bugs rarely occur for typical input values but more often occur at the "boundaries" or limits of the input domain.
That being said I don't really fault SQlites testing here.
The key takeaway for me is that even with exhaustive testing you can still have security issues like this, so perhaps what is needed is a language or methodology change.
If SQLite, a quality codebase with exhaustive tests, can have memory vulnerabilities, maybe we need to leave C behind.
- ghoward 4y agoSQLite is used in places that Rust has no compiler for and that no other language has a compiler for. One severe CVE in about 20 years is no reason to rewrite in another language and remove support for some platforms.
- admax88qqq 4y agoI'm not saying we need to rewrite SQLite and I'm not sure why everyone is assuming I suggested rust. But people need to consider how much testing SQLite did and still hit memory vulnerabilities when they consider picking up C for a new project.
- nicoburns 4y agoIn the long term, I hope C stops being the default language that hardware vendors provide for their hardware.
- ghoward 4y agoMe too, but I also hope Rust is not that default language.
- threatofrain 4y agoJust how many machines are we talking about? Does anyone have estimates?
- ghoward 4y agoProbably every Airbus A350 XWB and a lot of GM, Nissan, and Suzuki cars. Maybe also a few or a lot of General Electric products. [1] The Library of Congress also recommends it for preservation of digital content, which would be harder if Rust compilers were lost. If all C89 compilers were lost, it would be much more simple to create a new one to compile SQLite than it would be to recreate a Rust compiler. [1]: https://www.sqlite.org/famous.html https://www.sqlite.org/famous.html
- deleted 4y ago[deleted]
- chasil 4y agoYour problem is that you need to replicate the DO-178B certification in Rust: "I’m going to write tests to bring SQLite up to the quality of 100% MCDC, and that took a year of 60 hour weeks. That was hard, hard work." Whatever comes out of Rust will be much worse until compliance is achieved. That's going to take substantial time.