summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-02-28 07:53:32 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-02-28 07:53:32 +0000
commit00eef441ff25e096ba04ce25fca6ba726b5d5051 (patch)
treed9e033cdbc75a8dec2db6ceebcc0b2097ef3fc57 /clang/lib
parent1052c99f46ae2fcd842c4313056f924f3da95b97 (diff)
downloadbcm5719-llvm-00eef441ff25e096ba04ce25fca6ba726b5d5051.tar.gz
bcm5719-llvm-00eef441ff25e096ba04ce25fca6ba726b5d5051.zip
Fix global overflow in types::lookupTypeForTypeSpecifier.
memcpy() is allowed to read entire contents of both memory areas. Found with AddressSanitizer. llvm-svn: 176237
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/Types.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/clang/lib/Driver/Types.cpp b/clang/lib/Driver/Types.cpp
index cab6dcc3272..88574fc2c34 100644
--- a/clang/lib/Driver/Types.cpp
+++ b/clang/lib/Driver/Types.cpp
@@ -168,12 +168,10 @@ types::ID types::lookupTypeForExtension(const char *Ext) {
}
types::ID types::lookupTypeForTypeSpecifier(const char *Name) {
- unsigned N = strlen(Name);
-
for (unsigned i=0; i<numTypes; ++i) {
types::ID Id = (types::ID) (i + 1);
if (canTypeBeUserSpecified(Id) &&
- memcmp(Name, getInfo(Id).Name, N + 1) == 0)
+ strcmp(Name, getInfo(Id).Name) == 0)
return Id;
}
OpenPOWER on IntegriCloud