[PATCH] Relax an assert when there's a type mismatch in forward references
Rafael EspĂndola
rafael.espindola at gmail.com
Mon Apr 27 15:41:23 PDT 2015
LGTM
On 27 April 2015 at 18:34, Filipe Cabecinhas
<filcab+llvm.phabricator at gmail.com> wrote:
> Hi rafael,
>
> We don't seem to need to assert here, since this function's callers expect
> to get a nullptr on error. This way we don't assert on user input.
>
> Bug found with AFL fuzz.
>
> http://reviews.llvm.org/D9308
>
> Files:
> lib/Bitcode/Reader/BitcodeReader.cpp
> test/Bitcode/Inputs/invalid-fwdref-type-mismatch.bc
> test/Bitcode/invalid.test
>
> Index: lib/Bitcode/Reader/BitcodeReader.cpp
> ===================================================================
> --- lib/Bitcode/Reader/BitcodeReader.cpp
> +++ lib/Bitcode/Reader/BitcodeReader.cpp
> @@ -794,7 +794,9 @@
> resize(Idx + 1);
>
> if (Value *V = ValuePtrs[Idx]) {
> - assert((!Ty || Ty == V->getType()) && "Type mismatch in value table!");
> + // If the types don't match, it's invalid.
> + if (Ty && Ty != V->getType())
> + return nullptr;
> return V;
> }
>
> Index: test/Bitcode/invalid.test
> ===================================================================
> --- test/Bitcode/invalid.test
> +++ test/Bitcode/invalid.test
> @@ -93,3 +93,8 @@
> RUN: FileCheck --check-prefix=INVALID-TYPE %s
>
> INVALID-TYPE: Invalid type for value
> +
> +RUN: not llvm-dis -disable-output %p/Inputs/invalid-fwdref-type-mismatch.bc 2>&1 | \
> +RUN: FileCheck --check-prefix=FWDREF-TYPE %s
> +
> +FWDREF-TYPE: Invalid record
>
> EMAIL PREFERENCES
> http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the llvm-commits
mailing list