Page MenuHomePhabricator

Fix strlen() of unbound array undefined behavior
ClosedPublic

Authored by jankratochvil on Tue, Feb 5, 1:21 PM.

Details

Summary

LLDB testsuite fails when built by GCC8 on:

LLDB :: SymbolFile/DWARF/find-basic-namespace.cpp

This is because this code in LLDB codebase has undefined behavior:

#include <algorithm>
#include <string.h>
// lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp:1731
static struct section_64 {
  char sectname[16];
  char segname[16];
} sect64 = { {'_','_','a','p','p','l','e','_','n','a','m','e','s','p','a','c'}, "__DWARF" };
int main() {
  return std::min<size_t>(strlen(sect64.sectname), sizeof(sect64.sectname));
}

It has been discussed as a (false) bugreport to GCC: wrong-code: LLDB testcase fails: SymbolFile/DWARF/find-basic-namespace.cpp

I will check it in if there are no comments as it looks obvious enough to me.

Diff Detail

Repository
rL LLVM

Event Timeline

jankratochvil created this revision.Tue, Feb 5, 1:21 PM
aprantl accepted this revision.Tue, Feb 5, 1:38 PM

Thanks!

This revision is now accepted and ready to land.Tue, Feb 5, 1:38 PM
labath accepted this revision.Tue, Feb 5, 1:46 PM
This revision was automatically updated to reflect the committed changes.
Herald added a project: Restricted Project. · View Herald TranscriptWed, Feb 6, 12:44 AM