Skip to content

Return false in Reader::readValue when stack limit is exceeded #1619

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

xuhdev
Copy link

@xuhdev xuhdev commented Aug 8, 2025

jsoncpp, as a shared library, should not call abort merely because there's an error reading a value.

See https://en.cppreference.com/w/c/program/abort, abort should only be called to abnormally cause the program to exit. Functions inserted by atexit are also not called, meaning that the host program may have not cleaned up resources properly. But here, exceeding stack limit isn't a sign of abnormalty.

exit is not a good substitute either, see the exit-in-shared-library from Debian: https://lintian.debian.org/tags/exit-in-shared-library.html

Fix #1618

In this case, returning false seems like a better idea.

jsoncpp, as a shared library, should not call `abort` merely because there's an error reading a value.

See https://en.cppreference.com/w/c/program/abort, `abort` should only be called to **abnormally** cause the program to exit. Functions inserted by `atexit` are also not called, meaning that the host program may have not cleaned up resources properly. But here, exceeding stack limit isn't a sign of abnormalty.

`exit` is not a good substitute either, see the `exit-in-shared-library` from Debian:
https://lintian.debian.org/tags/exit-in-shared-library.html

Fix open-source-parsers#1618

In this case, returning false seems like a better idea.
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.

jsoncpp, as a shared library, should not call abort in Reader::readValue()
1 participant