gcc tells fortify-source that p refers to a buffer of length 1 which triggers a trap --- a/libcap/cap_text.c +++ b/libcap/cap_text.c @@ -428,7 +428,7 @@ char *cap_to_text(cap_t caps, ssize_t *length_p) base += 2; op = '='; } - p += sprintf(p, "%c%s%s%s", op, + p += sprintf(&buf[p - buf], "%c%s%s%s", op, (n & LIBCAP_EFF) ? "e" : "", (n & LIBCAP_INH) ? "i" : "", (n & LIBCAP_PER) ? "p" : "");