#include typedef union { const char *a; const char *b; const char *c; const char *d; const char *e; const char *f; bool g; bool h; bool i; } test_t; test_t f(void); test_t f(void) { test_t example = {.g = true }; return example; } #! /usr/bin/python2 from ctypes import * test = cdll.LoadLibrary("./test.so") class TestT(Union): _fields_ = [("a", c_char_p), ("b", c_char_p), ("c", c_char_p), ("d", c_char_p), ("e", c_char_p), ("f", c_char_p), ("g", c_bool), ("h", c_bool), ("i", c_bool)] test.f.restype = TestT test.f()* ** stack smashing detected ***: python2 terminated ======= Backtrace: ========= /usr/lib/libc.so.6(+0x73f8e)[0x7f91acd64f8e] /usr/lib/libc.so.6(__fortify_fail+0x37)[0x7f91acdeae57] /usr/lib/libc.so.6(__fortify_fail+0x0)[0x7f91acdeae20] /usr/lib/libffi.so.6(ffi_call+0x0)[0x7f91ac03b580] /usr/lib/libffi.so.6(ffi_prep_cif+0x15)[0x7f91ac037ba5] /usr/lib/python2.7/lib-dynload/_ctypes.so(_ctypes_callproc+0x2b3)[0x7f91ac24eab3] /usr/lib/python2.7/lib-dynload/_ctypes.so(+0xa9d4)[0x7f91ac2489d4] /usr/lib/libpython2.7.so.1.0(PyObject_Call+0x43)[0x7f91ad3074c3] /usr/lib/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x3a5d)[0x7f91ad39947d] /usr/lib/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x830)[0x7f91ad39c3c0] /usr/lib/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7f91ad39c4b9] /usr/lib/libpython2.7.so.1.0(+0xf801f)[0x7f91ad3b501f] /usr/lib/libpython2.7.so.1.0(PyRun_FileExFlags+0x72)[0x7f91ad3b6192] /usr/lib/libpython2.7.so.1.0(PyRun_SimpleFileExFlags+0xd7)[0x7f91ad3b7297] /usr/lib/libpython2.7.so.1.0(Py_Main+0xc3a)[0x7f91ad3c815a] /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7f91acd11000] python2[0x40073e] ======= Memory map: ======== 00400000-00401000 r-xp 00000000 08:01 15877867 /usr/bin/python2.7 00600000-00601000 r--p 00000000 08:01 15877867 /usr/bin/python2.7 00601000-00602000 rw-p 00001000 08:01 15877867 /usr/bin/python2.7 01411000-014e1000 rw-p 00000000 00:00 0 [heap] 7f91abc17000-7f91abc2d000 r-xp 00000000 08:01 15876820 /usr/lib/libgcc_s.so.1 7f91abc2d000-7f91abe2c000 ---p 00016000 08:01 15876820 /usr/lib/libgcc_s.so.1 7f91abe2c000-7f91abe2d000 rw-p 00015000 08:01 15876820 /usr/lib/libgcc_s.so.1 7f91abe2d000-7f91abe34000 r-xp 00000000 08:01 16389351 /usr/lib/python2.7/lib-dynload/_struct.so 7f91abe34000-7f91ac033000 ---p 00007000 08:01 16389351 /usr/lib/python2.7/lib-dynload/_struct.so 7f91ac033000-7f91ac034000 r--p 00006000 08:01 16389351 /usr/lib/python2.7/lib-dynload/_struct.so 7f91ac034000-7f91ac036000 rw-p 00007000 08:01 16389351 /usr/lib/python2.7/lib-dynload/_struct.so 7f91ac036000-7f91ac03d000 r-xp 00000000 08:01 15892543 /usr/lib/libffi.so.6.0.2 7f91ac03d000-7f91ac23c000 ---p 00007000 08:01 15892543 /usr/lib/libffi.so.6.0.2 7f91ac23c000-7f91ac23d000 r--p 00006000 08:01 15892543 /usr/lib/libffi.so.6.0.2 7f91ac23d000-7f91ac23e000 rw-p 00007000 08:01 15892543 /usr/lib/libffi.so.6.0.2 7f91ac23e000-7f91ac258000 r-xp 00000000 08:01 16389313 /usr/lib/python2.7/lib-dynload/_ctypes.so 7f91ac258000-7f91ac457000 ---p 0001a000 08:01 16389313 /usr/lib/python2.7/lib-dynload/_ctypes.so 7f91ac457000-7f91ac458000 r--p 00019000 08:01 16389313 /usr/lib/python2.7/lib-dynload/_ctypes.so 7f91ac458000-7f91ac45d000 rw-p 0001a000 08:01 16389313 /usr/lib/python2.7/lib-dynload/_ctypes.so 7f91ac45d000-7f91ac5e6000 r--p 00000000 08:01 15894153 /usr/lib/locale/locale-archive 7f91ac5e6000-7f91ac6e9000 r-xp 00000000 08:01 15862972 /usr/lib/libm-2.19.so 7f91ac6e9000-7f91ac8e8000 ---p 00103000 08:01 15862972 /usr/lib/libm-2.19.so 7f91ac8e8000-7f91ac8e9000 r--p 00102000 08:01 15862972 /usr/lib/libm-2.19.so 7f91ac8e9000-7f91ac8ea000 rw-p 00103000 08:01 15862972 /usr/lib/libm-2.19.so 7f91ac8ea000-7f91ac8ec000 r-xp 00000000 08:01 15862997 /usr/lib/libutil-2.19.so 7f91ac8ec000-7f91acaeb000 ---p 00002000 08:01 15862997 /usr/lib/libutil-2.19.so 7f91acaeb000-7f91acaec000 r--p 00001000 08:01 15862997 /usr/lib/libutil-2.19.so 7f91acaec000-7f91acaed000 rw-p 00002000 08:01 15862997 /usr/lib/libutil-2.19.so 7f91acaed000-7f91acaf0000 r-xp 00000000 08:01 15863000 /usr/lib/libdl-2.19.so 7f91acaf0000-7f91accef000 ---p 00003000 08:01 15863000 /usr/lib/libdl-2.19.so 7f91accef000-7f91accf0000 r--p 00002000 08:01 15863000 /usr/lib/libdl-2.19.so 7f91accf0000-7f91accf1000 rw-p 00003000 08:01 15863000 /usr/lib/libdl-2.19.so 7f91accf1000-7f91ace95000 r-xp 00000000 08:01 15863063 /usr/lib/libc-2.19.so 7f91ace95000-7f91ad095000 ---p 001a4000 08:01 15863063 /usr/lib/libc-2.19.so 7f91ad095000-7f91ad099000 r--p 001a4000 08:01 15863063 /usr/lib/libc-2.19.so 7f91ad099000-7f91ad09b000 rw-p 001a8000 08:01 15863063 /usr/lib/libc-2.19.so 7f91ad09b000-7f91ad09f000 rw-p 00000000 00:00 0 7f91ad09f000-7f91ad0b7000 r-xp 00000000 08:01 15863080 /usr/lib/libpthread-2.19.so 7f91ad0b7000-7f91ad2b7000 ---p 00018000 08:01 15863080 /usr/lib/libpthread-2.19.so 7f91ad2b7000-7f91ad2b8000 r--p 00018000 08:01 15863080 /usr/lib/libpthread-2.19.so 7f91ad2b8000-7f91ad2b9000 rw-p 00019000 08:01 15863080 /usr/lib/libpthread-2.19.so 7f91ad2b9000-7f91ad2bd000 rw-p 00000000 00:00 0 7f91ad2bd000-7f91ad433000 r-xp 00000000 08:01 15896877 /usr/lib/libpython2.7.so.1.0 7f91ad433000-7f91ad633000 ---p 00176000 08:01 15896877 /usr/lib/libpython2.7.so.1.0 7f91ad633000-7f91ad634000 r--p 00176000 08:01 15896877 /usr/lib/libpython2.7.so.1.0 7f91ad634000-7f91ad677000 rw-p 00177000 08:01 15896877 /usr/lib/libpython2.7.so.1.0 7f91ad677000-7f91ad686000 rw-p 00000000 00:00 0 7f91ad686000-7f91ad6a7000 r-xp 00000000 08:01 15863038 /usr/lib/ld-2.19.so 7f91ad6ec000-7f91ad872000 rw-p 00000000 00:00 0 7f91ad872000-7f91ad873000 r-xp 00000000 08:01 21505431 /home/wes/schream/test.so 7f91ad873000-7f91ad874000 rw-p 00000000 08:01 21505431 /home/wes/schream/test.so 7f91ad874000-7f91ad8a5000 rw-p 00000000 00:00 0 7f91ad8a5000-7f91ad8a6000 rwxp 00000000 00:00 0 7f91ad8a6000-7f91ad8a7000 r--p 00020000 08:01 15863038 /usr/lib/ld-2.19.so 7f91ad8a7000-7f91ad8a8000 rw-p 00021000 08:01 15863038 /usr/lib/ld-2.19.so 7f91ad8a8000-7f91ad8a9000 rw-p 00000000 00:00 0 7ffff4d98000-7ffff4db9000 rw-p 00000000 00:00 0 [stack] 7ffff4df4000-7ffff4df6000 r-xp 00000000 00:00 0 [vdso] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] Aborted