Content-Length: 262687 | pFad | http://github.com/micropython/micropython/issues/17719

84 crash in ssl module · Issue #17719 · micropython/micropython · GitHub
Skip to content

crash in ssl module #17719

@jepler

Description

@jepler

Port, board and/or hardware

unix, coverage build

MicroPython version

MicroPython v1.26.0-preview.387.g67acac257f.dirty on 2025-07-19; linux [GCC 12.2.0] version

Reproduction

Run the following code:

import io
import ssl

class TestSocket(io.IOBase):
    def write(self, buf):
        return len(buf)

    def readinto(self, buf):
        return 0

    def ioctl(self, cmd, arg):
        print("TestSocket.ioctl", cmd, arg)
        return 0

    def setblocking(self, value):
        print("TestSocket.setblocking({})".format(value))


ss = ssl.wrap_socket(TestSocket(), server_side=1, do_handshake=0)
ss.close()
ss.setblocking(0)

Expected behaviour

When calling setblocking on a closed ssl socket, no crash occurs

Observed behaviour

segmentation fault. gdb says

Program received signal SIGSEGV, Segmentation fault.
mp_obj_get_type (o_in=o_in@entry=0x0) at ../../py/obj.c:61
61	        return o->type;
(gdb) where
#0  mp_obj_get_type (o_in=o_in@entry=0x0) at ../../py/obj.c:61
#1  0x00005555555e8ed0 in mp_load_method_maybe (obj=obj@entry=0x0, 
    attr=attr@entry=745, dest=dest@entry=0x7fffffffd870)
    at ../../py/runtime.c:1196
#2  0x00005555555e96c6 in mp_load_method (base=0x0, attr=attr@entry=745, 
    dest=dest@entry=0x7fffffffd870) at ../../py/runtime.c:1239
#3  0x000055555563c7f2 in socket_setblocking (self_in=<optimized out>, 
    flag_in=0xe) at ../../extmod/modtls_mbedtls.c:778

Additional Information

This method, and perhaps other ones, needs to check for a NULL o->sock.

Code of Conduct

Yes, I agree

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions









      ApplySandwichStrip

      pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


      --- a PPN by Garber Painting Akron. With Image Size Reduction included!

      Fetched URL: http://github.com/micropython/micropython/issues/17719

      Alternative Proxies:

      Alternative Proxy

      pFad Proxy

      pFad v3 Proxy

      pFad v4 Proxy