[PATCH] D84050: YAML: Don't assume an arbitrary StringRef is null terminated

Duncan P. N. Exon Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 12 13:35:22 PST 2020


dexonsmith added a comment.

In D84050#2391741 <https://reviews.llvm.org/D84050#2391741>, @scott.linder wrote:

> Restore the correct behavior of `Scanner::scanAliasOrAnchor`, last version of the patch mistakenly changed `Token.Range` when only intending to fix the error checking around an empty alias/anchor.
>
> I think this version now removes the assumption that `End` points to a dereferencable `'\0'`, but I'm not sure how to go about testing this comprehensively.

One idea would be to hack the parser to always duplicate the input, append a bad character (like `'\1'`), and parse the new buffer with the original bounds. If something reads too far it would likely get upset at the bad character. Running the test suites for LLVM and Clang with that hack might be enough coverage.

Is there a libfuzzer instance for the yaml parser? That's probably the ideal thing to do, and if it's already set up maybe it's not too hard.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D84050/new/

https://reviews.llvm.org/D84050



More information about the llvm-commits mailing list