[Python-checkins] bpo-38730: Replace strncpy in import.c with memcpy. (GH-17633)

Benjamin Peterson webhook-mailer at python.org
Mon Dec 16 19:40:04 EST 2019


https://github.com/python/cpython/commit/052f47ef5cc363e842e0e839980cfa55ada123b5
commit: 052f47ef5cc363e842e0e839980cfa55ada123b5
branch: 2.7
author: Benjamin Peterson <benjamin at python.org>
committer: GitHub <noreply at github.com>
date: 2019-12-16T16:39:57-08:00
summary:

bpo-38730: Replace strncpy in import.c with memcpy. (GH-17633)

In all these cases, we know the exact length we want copied, so memcpy is the right function to use.

files:
M Python/import.c

diff --git a/Python/import.c b/Python/import.c
index ccbd949e624f1..b79354b37a406 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2456,7 +2456,7 @@ get_parent(PyObject *globals, char *buf, Py_ssize_t *p_buflen, int level)
                                 "Module name too long");
                 return NULL;
             }
-            strncpy(buf, start, len);
+            memcpy(buf, start, len);
             buf[len] = '\0';
             pkgname = PyString_FromString(buf);
             if (pkgname == NULL) {
@@ -2554,7 +2554,7 @@ load_next(PyObject *mod, PyObject *altmod, char **p_name, char *buf,
                         "Module name too long");
         return NULL;
     }
-    strncpy(p, name, len);
+    memcpy(p, name, len);
     p[len] = '\0';
     *p_buflen = p+len-buf;
 
@@ -2568,7 +2568,7 @@ load_next(PyObject *mod, PyObject *altmod, char **p_name, char *buf,
                 Py_DECREF(result);
                 return NULL;
             }
-            strncpy(buf, name, len);
+            memcpy(buf, name, len);
             buf[len] = '\0';
             *p_buflen = len;
         }



More information about the Python-checkins mailing list