diff --git a/llvm/lib/MC/XCOFFObjectWriter.cpp b/llvm/lib/MC/XCOFFObjectWriter.cpp --- a/llvm/lib/MC/XCOFFObjectWriter.cpp +++ b/llvm/lib/MC/XCOFFObjectWriter.cpp @@ -140,10 +140,11 @@ Section(const char *N, XCOFF::SectionTypeFlags Flags, bool IsVirtual, CsectGroups Groups) - : Address(0), Size(0), FileOffsetToData(0), FileOffsetToRelocations(0), - RelocationCount(0), Flags(Flags), Index(UninitializedIndex), - IsVirtual(IsVirtual), Groups(Groups) { - strncpy(Name, N, XCOFF::NameSize); + : Name(), Address(0), Size(0), FileOffsetToData(0), + FileOffsetToRelocations(0), RelocationCount(0), Flags(Flags), + Index(UninitializedIndex), IsVirtual(IsVirtual), Groups(Groups) { + assert(strlen(N) <= XCOFF::NameSize && "section name too long"); + memcpy(Name, N, strlen(N)); } };