mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
[*** Not tested as I don't have Windows running right now! ***]
Trent Mick <trentm@activestate.com>: Fix PC/msvcrtmodule.c and PC/winreg.c for Win64. Basically: - sizeof(HKEY) > sizeof(long) on Win64, so use PyLong_FromVoidPtr() instead of PyInt_FromLong() to return HKEY values on Win64 - Check for string overflow of an arbitrary registry value (I know that ensuring that a registry value does not overflow 2**31 characters seems ridiculous but it is *possible*). Closes SourceForge patch #100517.
This commit is contained in:
parent
7efcafb994
commit
25e1726d31
2 changed files with 24 additions and 4 deletions
|
@ -90,7 +90,7 @@ static PyObject *msvcrt_open_osfhandle(PyObject *self, PyObject *args)
|
|||
static PyObject *msvcrt_get_osfhandle(PyObject *self, PyObject *args)
|
||||
{
|
||||
int fd;
|
||||
long handle;
|
||||
intptr_t handle;
|
||||
|
||||
if (!PyArg_ParseTuple(args,"i:get_osfhandle", &fd))
|
||||
return NULL;
|
||||
|
@ -99,7 +99,10 @@ static PyObject *msvcrt_get_osfhandle(PyObject *self, PyObject *args)
|
|||
if (handle == -1)
|
||||
return PyErr_SetFromErrno(PyExc_IOError);
|
||||
|
||||
return PyInt_FromLong(handle);
|
||||
/* technically 'handle' is not a pointer, but a integer as
|
||||
large as a pointer, Python's *VoidPtr interface is the
|
||||
most appropriate here */
|
||||
return PyLong_FromVoidPtr((void*)handle);
|
||||
}
|
||||
|
||||
/* Console I/O */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue