summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2018-02-12 18:14:08 (GMT)
committerBerker Peksag <berker.peksag@gmail.com>2018-02-12 18:14:08 (GMT)
commita1d33f742515dc70ae99bc3ea1c851729522afc3 (patch)
tree3190793be10eb96fd47ea0c44e22c8e8d3e545d5 /Modules
parent6708be744d032aeffab3e2cf0b064a41a719d8a1 (diff)
downloadcpython-a1d33f742515dc70ae99bc3ea1c851729522afc3.zip
cpython-a1d33f742515dc70ae99bc3ea1c851729522afc3.tar.gz
cpython-a1d33f742515dc70ae99bc3ea1c851729522afc3.tar.bz2
bpo-29248: Fix os.readlink() on Windows (GH-5577)
The PrintNameOffset field of the reparse data buffer was treated as a number of characters instead of bytes. (cherry picked from commit 3c34aad4e7a95913ec7db8e5e948a8fc69047bf7) Co-authored-by: SSE4 <tomskside@gmail.com>
Diffstat (limited to 'Modules')
-rw-r--r--Modules/posixmodule.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index e30d3c1..80b1fbd 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -7127,11 +7127,11 @@ win_readlink(PyObject *self, PyObject *args, PyObject *kwargs)
"not a symbolic link");
return NULL;
}
- print_name = rdb->SymbolicLinkReparseBuffer.PathBuffer +
- rdb->SymbolicLinkReparseBuffer.PrintNameOffset;
+ print_name = (wchar_t *)((char*)rdb->SymbolicLinkReparseBuffer.PathBuffer +
+ rdb->SymbolicLinkReparseBuffer.PrintNameOffset);
result = PyUnicode_FromWideChar(print_name,
- rdb->SymbolicLinkReparseBuffer.PrintNameLength/2);
+ rdb->SymbolicLinkReparseBuffer.PrintNameLength / sizeof(wchar_t));
return result;
}