implements PyOS_CheckStack for Windows and MSVC. this fixes a

couple of potential stack overflows, including bug #110615.

closes patch #101238
This commit is contained in:
Fredrik Lundh 2000-08-27 19:15:31 +00:00
parent 0ae722e0a2
commit 2f15b25da2
2 changed files with 42 additions and 1 deletions

View file

@ -1165,3 +1165,32 @@ Py_FdIsInteractive(FILE *fp, char *filename)
(strcmp(filename, "<stdin>") == 0) ||
(strcmp(filename, "???") == 0);
}
#if defined(USE_STACKCHECK)
#if defined(WIN32) && defined(_MSC_VER)
/* Stack checking for Microsoft C */
#include <malloc.h>
#include <excpt.h>
int
PyOS_CheckStack()
{
__try {
/* _alloca throws a stack overflow exception if there's
not enough space left on the stack */
_alloca(PYOS_STACK_MARGIN * sizeof(void*));
return 0;
} __except (EXCEPTION_EXECUTE_HANDLER) {
/* just ignore all errors */
}
return 1;
}
#endif /* WIN32 && _MSC_VER */
/* Alternate implementations can be added here... */
#endif /* USE_STACKCHECK */