[Python-checkins] cpython (merge 3.6 -> default): Increase buffer for readlink() in case OS will support longer names one day.

christian.heimes python-checkins at python.org
Fri Sep 23 14:25:09 EDT 2016


https://hg.python.org/cpython/rev/e2c66ec43125
changeset:   104036:e2c66ec43125
parent:      104033:3d2ea746d4b6
parent:      104035:ab8e3dfee2f5
user:        Christian Heimes <christian at python.org>
date:        Fri Sep 23 20:24:45 2016 +0200
summary:
  Increase buffer for readlink() in case OS will support longer names one day.

files:
  Modules/posixmodule.c |  7 ++++---
  1 files changed, 4 insertions(+), 3 deletions(-)


diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -6944,7 +6944,7 @@
 {
     path_t path;
     int dir_fd = DEFAULT_DIR_FD;
-    char buffer[MAXPATHLEN];
+    char buffer[MAXPATHLEN+1];
     ssize_t length;
     PyObject *return_value = NULL;
     static char *keywords[] = {"path", "dir_fd", NULL};
@@ -6959,16 +6959,17 @@
     Py_BEGIN_ALLOW_THREADS
 #ifdef HAVE_READLINKAT
     if (dir_fd != DEFAULT_DIR_FD)
-        length = readlinkat(dir_fd, path.narrow, buffer, sizeof(buffer));
+        length = readlinkat(dir_fd, path.narrow, buffer, MAXPATHLEN);
     else
 #endif
-        length = readlink(path.narrow, buffer, sizeof(buffer));
+        length = readlink(path.narrow, buffer, MAXPATHLEN);
     Py_END_ALLOW_THREADS
 
     if (length < 0) {
         return_value = path_error(&path);
         goto exit;
     }
+    buffer[length] = '\0';
 
     if (PyUnicode_Check(path.object))
         return_value = PyUnicode_DecodeFSDefaultAndSize(buffer, length);

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list