From: Victor Stinner Date: Sat, 1 Dec 2018 01:46:40 +0000 (+0100) Subject: Fix compiler warning in structseq_repr() (GH-10841) X-Git-Tag: v3.8.0a1~374 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=989052047eea7f35da0d7ca268791b2442ee1553;p=python Fix compiler warning in structseq_repr() (GH-10841) Replace strncpy() with memcpy() in structseq_repr() to fix the following compiler warning: Objects/structseq.c:187:5: warning: 'strncpy' specified bound depends on the length of the source argument [-Wstringop-overflow=] strncpy(pbuf, typ->tp_name, len); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Objects/structseq.c:185:11: note: length computed here len = strlen(typ->tp_name) > TYPE_MAXSIZE ? TYPE_MAXSIZE : The function writes the terminating NUL byte later. --- diff --git a/Objects/structseq.c b/Objects/structseq.c index 05ea87b67a..cf94155f18 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -182,9 +182,9 @@ structseq_repr(PyStructSequence *obj) endofbuf= &buf[REPR_BUFFER_SIZE-5]; /* "typename(", limited to TYPE_MAXSIZE */ - len = strlen(typ->tp_name) > TYPE_MAXSIZE ? TYPE_MAXSIZE : - strlen(typ->tp_name); - strncpy(pbuf, typ->tp_name, len); + len = strlen(typ->tp_name); + len = Py_MIN(len, TYPE_MAXSIZE); + memcpy(pbuf, typ->tp_name, len); pbuf += len; *pbuf++ = '(';