From: Petr Lautrbach <plautrba@redhat.com>
To: Nicolas Iooss <nicolas.iooss@m4x.org>, selinux@vger.kernel.org
Subject: Re: [PATCH] libselinux: silence -Wstringop-overflow warning from gcc 10.3.1
Date: Wed, 12 May 2021 10:08:54 +0200 [thread overview]
Message-ID: <87y2ckgyqx.fsf@redhat.com> (raw)
In-Reply-To: <87fsyyhjqv.fsf@redhat.com>
Petr Lautrbach <plautrba@redhat.com> writes:
> Nicolas Iooss <nicolas.iooss@m4x.org> writes:
>
>> When building libselinux on Fedora 33 with gcc 10.3.1, the compiler
>> reports:
>>
>> label_file.c: In function ‘lookup_all.isra’:
>> label_file.c:940:4: error: ‘strncpy’ specified bound depends on the
>> length of the source argument [-Werror=stringop-overflow=]
>> 940 | strncpy(clean_key, key, len - 1);
>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> label_file.c:927:8: note: length computed here
>> 927 | len = strlen(key);
>> | ^~~~~~~~~~~
>> cc1: all warnings being treated as errors
>>
>> As clean_key is the result of malloc(len), there is no issue here. But
>> using strncpy can be considered as strange, because the size of the
>> string is already known and the NUL terminator is always added later, in
>> function ‘lookup_all.isra.
>>
>> Replace strncpy with memcpy to silence this gcc false-positive warning.
>>
>> Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
>
> I wasn't able to reproduce it with gcc-11.0.1-0.7.fc35.x86_64, but it's
> indeed reproducible with gcc-10.3.1-1.fc33.x86_64 and this patch fixes
> it.
>
> Acked-by: Petr Lautrbach <plautrba@redhat.com>
>
Merged
>> ---
>> libselinux/src/label_file.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libselinux/src/label_file.c b/libselinux/src/label_file.c
>> index 726394ca4332..cfce23e0119e 100644
>> --- a/libselinux/src/label_file.c
>> +++ b/libselinux/src/label_file.c
>> @@ -909,7 +909,7 @@ static const struct spec **lookup_all(struct selabel_handle *rec,
>> if (!clean_key)
>> goto finish;
>>
>> - strncpy(clean_key, key, len - 1);
>> + memcpy(clean_key, key, len - 1);
>> }
>>
>> clean_key[len - 1] = '\0';
>> --
>> 2.31.0
prev parent reply other threads:[~2021-05-12 8:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-30 19:37 [PATCH] libselinux: silence -Wstringop-overflow warning from gcc 10.3.1 Nicolas Iooss
2021-05-07 11:21 ` Petr Lautrbach
2021-05-12 8:08 ` Petr Lautrbach [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y2ckgyqx.fsf@redhat.com \
--to=plautrba@redhat.com \
--cc=nicolas.iooss@m4x.org \
--cc=selinux@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.