[analyzer] do not crash when trying to convert an APSInt to an unexpected type
authorGeorge Karpenkov <ekarpenkov@apple.com>
Thu, 9 Nov 2017 21:49:38 +0000 (21:49 +0000)
committerGeorge Karpenkov <ekarpenkov@apple.com>
Thu, 9 Nov 2017 21:49:38 +0000 (21:49 +0000)
commitd860e7a6b842956b5fab2528d80775f991d26c7f
treee58266e0305661e3a079677770109343286839e1
parent39f457b36fc7aa90d457231dec26984c5e203d02
[analyzer] do not crash when trying to convert an APSInt to an unexpected type

This is the issue breaking the postgresql bot, purely by chance exposed
through taint checker, somehow appearing after
https://reviews.llvm.org/D38358 got committed.

The backstory is that the taint checker requests SVal for the value of
the pointer, and analyzer has a "fast path" in the getter to return a
constant when we know that the value is constant.
Unfortunately, the getter requires a cast to get signedness correctly,
and for the pointer `void *` the cast crashes.

This is more of a band-aid patch, as I am not sure what could be done
here "correctly", but it should be applied in any case to avoid the
crash.

Differential Revision: https://reviews.llvm.org/D39862

llvm-svn: 317839
clang/lib/StaticAnalyzer/Core/ProgramState.cpp
clang/test/Analysis/taint-tester.c