From fa2586fa98e6d468dd7773544d6a7d8a236d0810 Mon Sep 17 00:00:00 2001 From: Chris Novakovic Date: Wed, 8 Oct 2025 13:54:24 +0100 Subject: [PATCH 1/2] Writer: ensure file name is not empty The value of `Name` in `Header` is the file's real name, and it makes no sense for it to be undefined. Ensure it has a non-zero length before writing the header to the archive. --- writer.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/writer.go b/writer.go index 352bd35..7eab785 100644 --- a/writer.go +++ b/writer.go @@ -196,6 +196,10 @@ func (aw *Writer) WriteHeader(hdr *Header) error { header := make([]byte, HEADER_BYTE_SIZE) s := slicer(header) + if len(hdr.Name) == 0 { + return errors.New("ar: empty file name") + } + switch aw.variant { case GNU: // "/" is always appended to GNU-variant file names, which means that any file names over 15 bytes From 2c23709b80a53b221767f67f9e55b158affbe641 Mon Sep 17 00:00:00 2001 From: Chris Novakovic Date: Wed, 8 Oct 2025 13:56:52 +0100 Subject: [PATCH 2/2] Fix broken test --- writer_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/writer_test.go b/writer_test.go index ac8f2e7..24333cb 100644 --- a/writer_test.go +++ b/writer_test.go @@ -26,6 +26,7 @@ func TestWriteTooLong(t *testing.T) { body := "Hello world!\n" hdr := new(Header) + hdr.Name = "hello.txt" hdr.Size = 1 var buf bytes.Buffer