Skip to content

Commit 0feea2e

Browse files
fix(range): validate input
1 parent 9cc8445 commit 0feea2e

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

tree_sitter/binding/parser.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,7 @@ int parser_set_included_ranges(Parser *self, PyObject *arg, void *Py_UNUSED(payl
295295
}
296296

297297
if (!ts_parser_set_included_ranges(self->parser, ranges, length)) {
298-
PyErr_SetString(PyExc_ValueError,
299-
"Included ranges must not overlap or end before it starts");
298+
PyErr_SetString(PyExc_ValueError, "Included ranges cannot overlap");
300299
PyMem_Free(ranges);
301300
return -1;
302301
}

tree_sitter/binding/range.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ int range_init(Range *self, PyObject *args, PyObject *kwargs) {
1010
return -1;
1111
}
1212

13+
if (start_row > end_row || (start_row == end_row && start_col > end_col)) {
14+
PyErr_Format(PyExc_ValueError, "Invalid point range: (%u, %u) to (%u, %u)", start_row,
15+
start_col, end_row, end_col);
16+
return -1;
17+
}
18+
19+
if (start_byte > end_byte) {
20+
PyErr_Format(PyExc_ValueError, "Invalid byte range: %u to %u", start_byte, end_byte);
21+
return -1;
22+
}
23+
1324
self->range.start_point.row = start_row;
1425
self->range.start_point.column = start_col;
1526
self->range.end_point.row = end_row;

0 commit comments

Comments
 (0)