llvm-project/clang
Keno Fischer 070db177bd Make sure CallExpr::getLocStart doesn't segfault
Summary:
When the CallExpr passed to Sema::ConvertArgumentsForCall has all default parameters, and the number of actual arguments passed is zero, this function will segfault in the call to Call->getLocStart() if the Callee has an invalid getLocStart(), the reason being that since ConvertArgumentsForCall has set the correct number of arguments, but has not filled them in yet, getLocStart() will try to access the first (not yet existent) argument and thus segfaults.

This fixes that by making getLocStart return an invalid source location if the queried argument is NULL rather than segfaulting.

Reviewers: rnk

Reviewed By: rnk

Subscribers: cfe-commits

Differential Revision: http://reviews.llvm.org/D4917

llvm-svn: 215686
2014-08-15 01:39:12 +00:00
..
INPUTS
bindings Expose the CUDA shared attribute to the C API. 2014-08-08 14:59:00 +00:00
docs [UBSan] Add returns-nonnull sanitizer. 2014-08-13 00:26:40 +00:00
examples Recommit 213307: unique_ptr-ify ownership of ASTConsumers (reverted in r213325) 2014-08-10 19:56:51 +00:00
include Make sure CallExpr::getLocStart doesn't segfault 2014-08-15 01:39:12 +00:00
lib Make sure CallExpr::getLocStart doesn't segfault 2014-08-15 01:39:12 +00:00
runtime Unify the name of compiler-rt builtins library on Linux. 2014-05-22 21:13:30 +00:00
test Limit our MSVC compat hack for nested names from dependent bases 2014-08-14 23:34:52 +00:00
tools Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00
unittests Split a large unit-test, so that it doesn't exceed stack frame size in certain test environments 2014-08-14 13:07:35 +00:00
utils Remove some transient raw pointer ownership in ClangAttrEmitter::createArgument 2014-08-08 23:59:38 +00:00
www [cxx_status] Minor wording tweaks. 2014-06-22 16:00:05 +00:00
.arcconfig Updated phabricator server. 2014-04-07 03:39:55 +00:00
.clang-format
.gitignore
CMakeLists.txt Make clang's rewrite engine a core feature 2014-07-16 16:48:33 +00:00
CODE_OWNERS.TXT Adding myself as the code owner for the attribute subsystem. 2014-01-13 22:23:27 +00:00
INSTALL.txt
LICENSE.TXT
Makefile
ModuleInfo.txt
NOTES.txt Remove trailing spaces 2014-07-13 17:11:45 +00:00
README.txt Remove whitespace from test commit. 2014-07-16 19:10:36 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/