diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-02-28 07:53:32 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-02-28 07:53:32 +0000 |
| commit | 00eef441ff25e096ba04ce25fca6ba726b5d5051 (patch) | |
| tree | d9e033cdbc75a8dec2db6ceebcc0b2097ef3fc57 /clang/lib | |
| parent | 1052c99f46ae2fcd842c4313056f924f3da95b97 (diff) | |
| download | bcm5719-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.cpp | 4 |
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; } |

