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
Stack Overflow in HandleNode() #459
Comments
|
Thanks for the report. |
|
CVE-2017-5950 has been assigned for this issue. Please add it to commit message when fixing this and/or to ChangeLog. |
|
I can't reproduce this directly. by default, on a clean build in Debian 9 "stretch", I get: If I create a ridiculously large test case (ie. 7 times the original), I manage to get a segfault on malloc: here's the stacktrace: as the SUSE folks say - maybe this is just a matter of setting a recursion limit? |
simply set a hardcoded recursion limit to 2000 (inspired by Python's) to avoid infinitely recursing into arbitrary data structures assert() the depth. unsure if this is the right approach, but given that HandleNode() is "void", I am not sure how else to return an error. the problem with this approach of course is that it will still crash the caller, unless they have proper exception handling in place. Closes: jbeder#459
|
please review the proposed fix in #489. thanks! |
|
Hi, any update on this? :) |
|
Ping |
simply set a hardcoded recursion limit to 2000 (inspired by Python's) to avoid infinitely recursing into arbitrary data structures assert() the depth. unsure if this is the right approach, but given that HandleNode() is "void", I am not sure how else to return an error. the problem with this approach of course is that it will still crash the caller, unless they have proper exception handling in place. Closes: jbeder#459
simply set a hardcoded recursion limit to 2000 (inspired by Python's) to avoid infinitely recursing into arbitrary data structures assert() the depth. unsure if this is the right approach, but given that HandleNode() is "void", I am not sure how else to return an error. the problem with this approach of course is that it will still crash the caller, unless they have proper exception handling in place. Closes: jbeder#459
simply set a hardcoded recursion limit to 2000 (inspired by Python's) to avoid infinitely recursing into arbitrary data structures assert() the depth. unsure if this is the right approach, but given that HandleNode() is "void", I am not sure how else to return an error. the problem with this approach of course is that it will still crash the caller, unless they have proper exception handling in place. Closes: jbeder#459
Stack Overflow in HandleNode()
Git HEAD: 86c69bb
Payload
To reproduce:
cat yaml_stack_overflow | parseASAN:
The text was updated successfully, but these errors were encountered: