diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-06-26 20:32:52 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-06-26 20:32:52 +0000 | 
| commit | 08bbd35a80bf7765fe0d3043f9eb5a2f2786b649 (patch) | |
| tree | 80108f0f128657f8623f8f66ad9735b4d88e7b47 /lib/ProfileData/Coverage/CoverageMappingReader.cpp | |
| parent | 7c7aba6e5fef47a01a136be655b0a92cfd7090f6 (diff) | |
Notes
Diffstat (limited to 'lib/ProfileData/Coverage/CoverageMappingReader.cpp')
| -rw-r--r-- | lib/ProfileData/Coverage/CoverageMappingReader.cpp | 18 | 
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/ProfileData/Coverage/CoverageMappingReader.cpp b/lib/ProfileData/Coverage/CoverageMappingReader.cpp index a34f359cd542..fff0a03ccbe0 100644 --- a/lib/ProfileData/Coverage/CoverageMappingReader.cpp +++ b/lib/ProfileData/Coverage/CoverageMappingReader.cpp @@ -1,4 +1,4 @@ -//===- CoverageMappingReader.cpp - Code coverage mapping reader -*- C++ -*-===// +//===- CoverageMappingReader.cpp - Code coverage mapping reader -----------===//  //  //                     The LLVM Compiler Infrastructure  // @@ -62,7 +62,7 @@ void CoverageMappingIterator::increment() {  }  Error RawCoverageReader::readULEB128(uint64_t &Result) { -  if (Data.size() < 1) +  if (Data.empty())      return make_error<CoverageMapError>(coveragemap_error::truncated);    unsigned N = 0;    Result = decodeULEB128(reinterpret_cast<const uint8_t *>(Data.data()), &N); @@ -392,9 +392,9 @@ struct CovMapFuncRecordReader {  // A class for reading coverage mapping function records for a module.  template <CovMapVersion Version, class IntPtrT, support::endianness Endian>  class VersionedCovMapFuncRecordReader : public CovMapFuncRecordReader { -  typedef typename CovMapTraits< -      Version, IntPtrT>::CovMapFuncRecordType FuncRecordType; -  typedef typename CovMapTraits<Version, IntPtrT>::NameRefType  NameRefType; +  using FuncRecordType = +      typename CovMapTraits<Version, IntPtrT>::CovMapFuncRecordType; +  using NameRefType = typename CovMapTraits<Version, IntPtrT>::NameRefType;    // Maps function's name references to the indexes of their records    // in \c Records. @@ -419,6 +419,8 @@ class VersionedCovMapFuncRecordReader : public CovMapFuncRecordReader {        StringRef FuncName;        if (Error Err = CFR->template getFuncName<Endian>(ProfileNames, FuncName))          return Err; +      if (FuncName.empty()) +        return make_error<InstrProfError>(instrprof_error::malformed);        Records.emplace_back(Version, FuncName, FuncHash, Mapping, FilenamesBegin,                             Filenames.size() - FilenamesBegin);        return Error::success(); @@ -574,7 +576,7 @@ static Error loadTestingFormat(StringRef Data, InstrProfSymtab &ProfileNames,    Endian = support::endianness::little;    Data = Data.substr(StringRef(TestingFormatMagic).size()); -  if (Data.size() < 1) +  if (Data.empty())      return make_error<CoverageMapError>(coveragemap_error::truncated);    unsigned N = 0;    auto ProfileNamesSize = @@ -582,7 +584,7 @@ static Error loadTestingFormat(StringRef Data, InstrProfSymtab &ProfileNames,    if (N > Data.size())      return make_error<CoverageMapError>(coveragemap_error::malformed);    Data = Data.substr(N); -  if (Data.size() < 1) +  if (Data.empty())      return make_error<CoverageMapError>(coveragemap_error::truncated);    N = 0;    uint64_t Address = @@ -596,7 +598,7 @@ static Error loadTestingFormat(StringRef Data, InstrProfSymtab &ProfileNames,      return E;    CoverageMapping = Data.substr(ProfileNamesSize);    // Skip the padding bytes because coverage map data has an alignment of 8. -  if (CoverageMapping.size() < 1) +  if (CoverageMapping.empty())      return make_error<CoverageMapError>(coveragemap_error::truncated);    size_t Pad = alignmentAdjustment(CoverageMapping.data(), 8);    if (CoverageMapping.size() < Pad)  | 
