https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108939

Ivan Krylov <ikrylov at disroot dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ikrylov at disroot dot org

--- Comment #3 from Ivan Krylov <ikrylov at disroot dot org> ---
gcc 12.2.0-14 from Debian stable emits -Wstringop-truncation for the following
example in similar circumstances: -O2 -fsanitize=address -Wall

#include <string.h>
#include <stdio.h>

#define STRING10 "1234567890"
#define MAXLINE 10

void foo(void) {
    char s1[MAXLINE + 1];
    strcpy(s1, STRING10);
    char trunc_s1[5] = { 0, };
    // recommended by GCC documentation: pass sizeof buf - 1 to avoid warning
    strncpy(trunc_s1, s1, sizeof(trunc_s1) - 1);
    trunc_s1[sizeof trunc_s1 - 1] = '\0';
}

Same thing currently happens with gcc 14.2 and trunk:
https://godbolt.org/z/Gb8bxWT9s

The example was reduced from a larger problem discussed on the R-package-devel
mailing list: https://stat.ethz.ch/pipermail/r-package-devel/2024q4/011287.html

Following an IRC discussion with sam_ and Arsen, this may be yet another
instance of bug 117881.

Reply via email to