[LLD] [COFF] Use the new encodeSectionName() helper for long section names
authorMartin Storsjö <martin@martin.st>
Mon, 28 Feb 2022 21:07:16 +0000 (23:07 +0200)
committerMartin Storsjö <martin@martin.st>
Tue, 1 Mar 2022 09:33:02 +0000 (11:33 +0200)
commit9dd2d50984f5b02e19d3576812dc9b09ddcc9483
treedb5334e52e6664bda9e9776c9dbaaeb40fbd1b4e
parent7c77d414e230f5dbac614b7b0396a64c4c7ee63e
[LLD] [COFF] Use the new encodeSectionName() helper for long section names

The previous code used an unbounded sprintf, which in theory can
overflow, writing either the null terminator or the last digits
into the next struct member.

In practice, in LLD, all long section names are written sequentially
first at the start of the string table, followed by all the long
symbol names. Due to this, even if the total string table would
end up large, the long section names have fairly short offsets,
which is why this hasn't been an issue in practice.

I don't think it's worth trying to write a test that produces an
executable with enough long section names to make the section names
themselves exceed 10^6 bytes, which is currently necessary to trigger
faults with the previous form.

Differential Revision: https://reviews.llvm.org/D120676
lld/COFF/Writer.cpp