3 ms·
>I've never done any fuzzing personally, but wouldn't this be discoverable internally during testing? Yes. This seems like a somewhat embarrassing fail in term
by xoa 9y ago
>I've never done any fuzzing personally, but wouldn't this be discoverable internally during testing?
Yes. This seems like a somewhat embarrassing fail in terms of whatever automated testing Apple does. It's a pretty minimal and restricted case of fuzzing, in fact I'm not sure it'd qualify as "fuzzing" at all because here the crasher is just an actual Unicode character, part of a fixed set that can be completely run through in deterministic time. Unicode is certainly large in human terms but in terms of automated test data sets it's not.
Given the notorious difficulties and edge cases Unicode parsing has long created, testing every single individual character in Unicode as part of standard unit/regression testing seems like something that should just be done as a bare minimum for an operating system or parsing framework/library release. That's not to say there wouldn't be more complex inputs that would cause problems that sufficient fuzzing could discover, but this kind of a error from a single real language character shouldn't have slipped through, it's not random.
Unicode and image/document handling frameworks are both areas that should have extensive fuzzing as well as deterministic input sets for testing. They shouldn't need to be messed with much either once they're "done", so in the case of an org like Apple this is the sort of place where it might even make sense to really devote resources to getting at least some parts of it formally verified.
- rspeer 9y agoI wouldn't be so quick to call Unicode characters a "fixed set", because of the way that they can be arbitrarily composed from multiple codepoints. If you've encountered zalgo-text, for example, you've encountered characters made from a base letter and like 20 combining codepoints. Enumerating all of the possible characters is infeasible. To be specific, here are the codepoints in the character from Pastebin: U+0C1C [Lo] TELUGU LETTER JA U+0C4D [Mn] TELUGU SIGN VIRAMA U+0C1E [Lo] TELUGU LETTER NYA U+200C [Cf] ZERO WIDTH NON-JOINER U+0C3E [Mn] TELUGU VOWEL SIGN AA I don't know if the ZWNJ is in there to make the bug happen or to neutralize it. But the entire group of five codepoints renders and selects as one character for me (in Chrome on Ubuntu).