[*** 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:
Fred Drake 2000-06-30 17:48:51 +00:00
parent 7efcafb994
commit 25e1726d31
2 changed files with 24 additions and 4 deletions

View file

@ -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 */