Skip to content

Commit e232921

Browse files
committed
fix: sigsegv on malformed shebang
Signed-off-by: Dmitry Dygalo <dmitry@dygalo.dev>
1 parent e6d7144 commit e232921

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

rust/ruby-prism/src/lib.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1238,4 +1238,12 @@ end
12381238
extractor.push_scope(node.as_program_node().unwrap().statements().body().iter().next().unwrap());
12391239
assert_eq!(3, extractor.scopes.len());
12401240
}
1241+
1242+
#[test]
1243+
fn malformed_shebang() {
1244+
let source = "#!\x00";
1245+
let result = parse(source.as_ref());
1246+
assert!(result.errors().next().is_none());
1247+
assert!(result.warnings().next().is_none());
1248+
}
12411249
}

src/prism.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22663,7 +22663,7 @@ pm_parser_init(pm_parser_t *parser, const uint8_t *source, size_t size, const pm
2266322663
}
2266422664

2266522665
search_shebang = false;
22666-
} else if (options->main_script && !parser->parsing_eval) {
22666+
} else if (options != NULL && options->main_script && !parser->parsing_eval) {
2266722667
search_shebang = true;
2266822668
}
2266922669
}

0 commit comments

Comments
 (0)