-
Notifications
You must be signed in to change notification settings - Fork 1
/
segfault.c
39 lines (33 loc) · 765 Bytes
/
segfault.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <Python.h>
static PyObject *segfault_segfault(PyObject *self, PyObject *args)
{
// According to StackOverflow, the next line will segfault
*(int*)0=0;
return PyLong_FromLong(1);
}
static PyMethodDef SegfaultMethods[] = {
{"segfault", segfault_segfault, METH_VARARGS, "Segfault"},
{NULL, NULL, 0, NULL}
};
#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef segfaultmodule = {
PyModuleDef_HEAD_INIT,
"segfault",
NULL,
-1,
SegfaultMethods
};
PyObject * PyInit_segfault(void)
#else
void initsegfault(void)
#endif
{
#if PY_MAJOR_VERSION >= 3
PyObject *module = PyModule_Create(&segfaultmodule);
#else
Py_InitModule("segfault", SegfaultMethods);
#endif
#if PY_MAJOR_VERSION >= 3
return module;
#endif
}