Skip to content

Commit

Permalink
bpo-38020: Fixes crash in os.readlink() on Windows (pythonGH-15663)
Browse files Browse the repository at this point in the history
(cherry picked from commit 993ac92)

Co-authored-by: Steve Dower <steve.dower@python.org>
  • Loading branch information
miss-islington and zooba authored Sep 3, 2019
1 parent 59e8fba commit 54dac6c
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fixes potential crash when calling :func:`os.readlink` (or indirectly
through :func:`~os.path.realpath`) on a file that is not a supported link.
4 changes: 2 additions & 2 deletions Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -7821,7 +7821,7 @@ os_readlink_impl(PyObject *module, path_t *path, int dir_fd)
HANDLE reparse_point_handle;
char target_buffer[_Py_MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
_Py_REPARSE_DATA_BUFFER *rdb = (_Py_REPARSE_DATA_BUFFER *)target_buffer;
PyObject *result;
PyObject *result = NULL;

/* First get a handle to the reparse point */
Py_BEGIN_ALLOW_THREADS
Expand Down Expand Up @@ -7875,7 +7875,7 @@ os_readlink_impl(PyObject *module, path_t *path, int dir_fd)
name[1] = L'\\';
}
result = PyUnicode_FromWideChar(name, nameLen);
if (path->narrow) {
if (result && path->narrow) {
Py_SETREF(result, PyUnicode_EncodeFSDefault(result));
}
}
Expand Down

0 comments on commit 54dac6c

Please sign in to comment.