Skip to content

Fix null-pointer dereferences from failed device/connection init - #798

Open
MarkRose wants to merge 1 commit into
sm0svx:masterfrom
MarkRose:fix-dtor-null-guard-failed-init
Open

Fix null-pointer dereferences from failed device/connection init#798
MarkRose wants to merge 1 commit into
sm0svx:masterfrom
MarkRose:fix-dtor-null-guard-failed-init

Conversation

@MarkRose

Copy link
Copy Markdown
Contributor

RefCountingPty::instance() no longer inserts a NULL entry into
the ptys() map when open() fails, preventing a later instance() call
from dereferencing a null pty via m_refs += 1.
NetRx::~NetRx() guards tcp_con->deleteInstance() with a null
check, since tcp_con stays 0 when initialize() returns early.
NetTx::~NetTx() gets the same tcp_con null guard as NetRx::~NetRx()
above.
PttPty::~PttPty() guards pty->destroy() with a null
check, since pty stays 0 when initialize() fails before RefCountingPty
is obtained.

Co-Authored-By: Claude Opus 4.8 [email protected]


This PR also adds a unit test (DtorNullGuardTest.cpp). It is auto-discovered and executed by the CTest suite proposed in #762 once that is merged; without that suite present the test file is inert and does not affect the build.

RefCountingPty::instance() no longer inserts a NULL entry into
the ptys() map when open() fails, preventing a later instance() call
from dereferencing a null pty via m_refs += 1.
NetRx::~NetRx() guards tcp_con->deleteInstance() with a null
check, since tcp_con stays 0 when initialize() returns early.
NetTx::~NetTx() gets the same tcp_con null guard as NetRx::~NetRx()
above.
PttPty::~PttPty() guards pty->destroy() with a null
check, since pty stays 0 when initialize() fails before RefCountingPty
is obtained.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
@MarkRose MarkRose closed this Jul 12, 2026
@MarkRose MarkRose reopened this Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant