-
Notifications
You must be signed in to change notification settings - Fork 326
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
Segmentation fault in ruby 3.0.4 #495
Comments
This is a bug in the json library, not in Ruby. The json extension is passing a NULL pointer as the first argument to
I think this is because the This patch fixes the issue from my testing: diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c
index b7de60d..046c2ab 100644
--- a/ext/json/ext/parser/parser.c
+++ b/ext/json/ext/parser/parser.c
@@ -2363,9 +2363,9 @@ static VALUE json_string_unescape(char *string, char *stringEnd, int intern, int
char buf[4];
if (bufferSize > MAX_STACK_BUFFER_SIZE) {
- bufferStart = buffer = ALLOC_N(char, bufferSize);
+ bufferStart = buffer = ALLOC_N(char, bufferSize ? bufferSize : 1);
} else {
- bufferStart = buffer = ALLOCA_N(char, bufferSize);
+ bufferStart = buffer = ALLOCA_N(char, bufferSize ? bufferSize : 1);
}
while (pe < stringEnd) {
You would obviously want to make the patch to the ragel file and regenerate the parser. |
I can confirm that regressing to version 2.5.1 fixes the issue for me. |
We have a large number of Ruby 3.0.3 apps in production and we would really like to upgrade to 3.0.4 a.s.ap. to fix the security issues of 3.0.3. But this issue here kind of prevents us from doing so. A new gem release including abrom@b59368a would help a lot. |
I have released a version 2.6.2 for ext and pure parsers with this fix now. I couldn't release a jruby version 2.6.2 even though I attempted to set up a build environment and failed. Maybe someone knows how to build and release this? I don't use java or jruby. |
Since upgrading to ruby 3.0.4 I am seeing segfaults when using
JSON.parse
to parse a JSON file which has an empty string as key. Repro case:This works on ruby 3.0.3, but segfaults on 3.0.4. I have observed this on both mac & linux.
I also opened a bug on the ruby bugtracker: https://bugs.ruby-lang.org/issues/18728
The text was updated successfully, but these errors were encountered: