From bde1c16393d05e974067afc287854815f3b195a3 Mon Sep 17 00:00:00 2001 From: Rose Date: Sat, 17 May 2025 19:35:22 -0400 Subject: [PATCH] Fatal if field[0].start or field[0].end is null We should not get here, but given that the check exists, we should not let it happen if this is NULL because otherwise we just dereference it later on. --- libarchive/archive_acl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libarchive/archive_acl.c b/libarchive/archive_acl.c index bbb085afe..9e71f5ee5 100644 --- a/libarchive/archive_acl.c +++ b/libarchive/archive_acl.c @@ -1185,8 +1185,13 @@ archive_acl_from_text_w(struct archive_acl *acl, const wchar_t *text, /* Set remaining fields to blank. */ for (n = fields; n < numfields; ++n) field[n].start = field[n].end = NULL; + + if (field[0].start == NULL || field[0].end == NULL) { + /* This should never happen */ + return (ARCHIVE_FATAL); + } - if (field[0].start != NULL && *(field[0].start) == L'#') { + if (*(field[0].start) == L'#') { /* Comment, skip entry */ continue; } @@ -1676,7 +1681,12 @@ archive_acl_from_text_nl(struct archive_acl *acl, const char *text, for (n = fields; n < numfields; ++n) field[n].start = field[n].end = NULL; - if (field[0].start != NULL && *(field[0].start) == '#') { + if (field[0].start == NULL || field[0].end == NULL) { + /* This should never happen */ + return (ARCHIVE_FATAL); + } + + if (*(field[0].start) == '#') { /* Comment, skip entry */ continue; } -- 2.47.2