From: Christian Heimes Date: Fri, 23 Sep 2016 18:24:28 +0000 (+0200) Subject: Increase buffer for readlink() in case OS will support longer names one day. X-Git-Tag: v3.6.0b2~132^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3cb091e576cf3c8a71b8cff6951cfadfd8f5cd7a;p=thirdparty%2FPython%2Fcpython.git Increase buffer for readlink() in case OS will support longer names one day. --- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index c993fb6b64ef..d73762431a44 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -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);