[2.7] bpo-38730: Fix -Wstringop-truncation warnings. (GH-17075)
This commit is contained in:
parent
089e5f52a3
commit
f32bcf8c27
|
@ -0,0 +1 @@
|
||||||
|
Fix problems identified by GCC's ``-Wstringop-truncation`` warning.
|
|
@ -486,7 +486,7 @@ calculate_path(void)
|
||||||
if (tmpbuffer[0] == SEP)
|
if (tmpbuffer[0] == SEP)
|
||||||
/* tmpbuffer should never be longer than MAXPATHLEN,
|
/* tmpbuffer should never be longer than MAXPATHLEN,
|
||||||
but extra check does not hurt */
|
but extra check does not hurt */
|
||||||
strncpy(argv0_path, tmpbuffer, MAXPATHLEN);
|
strncpy(argv0_path, tmpbuffer, MAXPATHLEN + 1);
|
||||||
else {
|
else {
|
||||||
/* Interpret relative to progpath */
|
/* Interpret relative to progpath */
|
||||||
reduce(argv0_path);
|
reduce(argv0_path);
|
||||||
|
|
|
@ -1055,14 +1055,15 @@ validate_numnodes(node *n, int num, const char *const name)
|
||||||
static int
|
static int
|
||||||
validate_terminal(node *terminal, int type, char *string)
|
validate_terminal(node *terminal, int type, char *string)
|
||||||
{
|
{
|
||||||
int res = (validate_ntype(terminal, type)
|
if (!validate_ntype(terminal, type)) {
|
||||||
&& ((string == 0) || (strcmp(string, STR(terminal)) == 0)));
|
return 0;
|
||||||
|
}
|
||||||
if (!res && !PyErr_Occurred()) {
|
if (string != NULL && strcmp(string, STR(terminal)) != 0) {
|
||||||
PyErr_Format(parser_error,
|
PyErr_Format(parser_error,
|
||||||
"Illegal terminal: expected \"%s\"", string);
|
"Illegal terminal: expected \"%s\"", string);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return (res);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1180,7 +1180,7 @@ call_readline(FILE *sys_stdin, FILE *sys_stdout, char *prompt)
|
||||||
q = p;
|
q = p;
|
||||||
p = PyMem_Malloc(n+2);
|
p = PyMem_Malloc(n+2);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
strncpy(p, q, n);
|
memcpy(p, q, n);
|
||||||
p[n] = '\n';
|
p[n] = '\n';
|
||||||
p[n+1] = '\0';
|
p[n+1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,8 +173,10 @@ trip_signal(int sig_num)
|
||||||
cleared in PyErr_CheckSignals() before .tripped. */
|
cleared in PyErr_CheckSignals() before .tripped. */
|
||||||
is_tripped = 1;
|
is_tripped = 1;
|
||||||
Py_AddPendingCall(checksignals_witharg, NULL);
|
Py_AddPendingCall(checksignals_witharg, NULL);
|
||||||
if (wakeup_fd != -1)
|
if (wakeup_fd != -1) {
|
||||||
write(wakeup_fd, "\0", 1);
|
int rc = write(wakeup_fd, "\0", 1);
|
||||||
|
(void)rc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -714,8 +714,8 @@ read_directory(const char *archive)
|
||||||
unsigned int count, i;
|
unsigned int count, i;
|
||||||
unsigned char buffer[46];
|
unsigned char buffer[46];
|
||||||
size_t length;
|
size_t length;
|
||||||
char path[MAXPATHLEN + 5];
|
char name[MAXPATHLEN + 1];
|
||||||
char name[MAXPATHLEN + 5];
|
char path[2*MAXPATHLEN + 2]; /* archive + SEP + name + '\0' */
|
||||||
const char *errmsg = NULL;
|
const char *errmsg = NULL;
|
||||||
|
|
||||||
if (strlen(archive) > MAXPATHLEN) {
|
if (strlen(archive) > MAXPATHLEN) {
|
||||||
|
@ -838,7 +838,7 @@ read_directory(const char *archive)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
strncpy(path + length + 1, name, MAXPATHLEN - length - 1);
|
memcpy(path + length + 1, name, name_size + 1);
|
||||||
|
|
||||||
t = Py_BuildValue("sHIIkHHI", path, compress, data_size,
|
t = Py_BuildValue("sHIIkHHI", path, compress, data_size,
|
||||||
file_size, file_offset, time, date, crc);
|
file_size, file_offset, time, date, crc);
|
||||||
|
|
|
@ -252,10 +252,7 @@ structseq_repr(PyStructSequence *obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* "typename(", limited to TYPE_MAXSIZE */
|
/* "typename(", limited to TYPE_MAXSIZE */
|
||||||
len = strlen(typ->tp_name) > TYPE_MAXSIZE ? TYPE_MAXSIZE :
|
pbuf = stpncpy(pbuf, typ->tp_name, TYPE_MAXSIZE);
|
||||||
strlen(typ->tp_name);
|
|
||||||
strncpy(pbuf, typ->tp_name, len);
|
|
||||||
pbuf += len;
|
|
||||||
*pbuf++ = '(';
|
*pbuf++ = '(';
|
||||||
|
|
||||||
for (i=0; i < VISIBLE_SIZE(obj); i++) {
|
for (i=0; i < VISIBLE_SIZE(obj); i++) {
|
||||||
|
|
|
@ -221,7 +221,7 @@ _Py_Mangle(PyObject *privateobj, PyObject *ident)
|
||||||
}
|
}
|
||||||
plen = strlen(p);
|
plen = strlen(p);
|
||||||
|
|
||||||
if (plen + nlen >= PY_SSIZE_T_MAX - 1) {
|
if (nlen >= PY_SSIZE_T_MAX - 1 - plen) {
|
||||||
PyErr_SetString(PyExc_OverflowError,
|
PyErr_SetString(PyExc_OverflowError,
|
||||||
"private identifier too large to be mangled");
|
"private identifier too large to be mangled");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -233,7 +233,7 @@ _Py_Mangle(PyObject *privateobj, PyObject *ident)
|
||||||
/* ident = "_" + p[:plen] + name # i.e. 1+plen+nlen bytes */
|
/* ident = "_" + p[:plen] + name # i.e. 1+plen+nlen bytes */
|
||||||
buffer = PyString_AS_STRING(ident);
|
buffer = PyString_AS_STRING(ident);
|
||||||
buffer[0] = '_';
|
buffer[0] = '_';
|
||||||
strncpy(buffer+1, p, plen);
|
memcpy(buffer+1, p, plen);
|
||||||
strcpy(buffer+1+plen, name);
|
strcpy(buffer+1+plen, name);
|
||||||
return ident;
|
return ident;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue