]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Increase buffer for readlink() in case OS will support longer names one day.
authorChristian Heimes <christian@python.org>
Fri, 23 Sep 2016 18:24:28 +0000 (20:24 +0200)
committerChristian Heimes <christian@python.org>
Fri, 23 Sep 2016 18:24:28 +0000 (20:24 +0200)
Modules/posixmodule.c

index c993fb6b64ef3b8c351cfedcec7ff0ebb3320a62..d73762431a447a6cec9519f47597ece339795fa6 100644 (file)
@@ -7087,7 +7087,7 @@ posix_readlink(PyObject *self, PyObject *args, PyObject *kwargs)
 {
     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};
@@ -7102,16 +7102,17 @@ posix_readlink(PyObject *self, PyObject *args, PyObject *kwargs)
     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);