Skip to content

Commit 4828377

Browse files
committed
Fix linked list iteration when displaying errors
When a script has problem with the magic comment encoding, we only display that error. However, if there are other syntax errors in the file, the error linked list could contain multiple items. This lead to an inconsistency in the "size" field of the linked list, and the actual items in the linked list. In other words, the linked list had more than one item, but the size field was one. The error display routine would only allocate `size` items, but iterating the linked list would overrun the array. This commit changes the iterator to compare the current node to the "finish" node in the linked list, no longer assuming the linked list ends with NULL. [Bug #21461]
1 parent c1c9dee commit 4828377

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

prism_compile.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10613,7 +10613,9 @@ pm_parse_errors_format_sort(const pm_parser_t *parser, const pm_list_t *error_li
1061310613
if (errors == NULL) return NULL;
1061410614

1061510615
int32_t start_line = parser->start_line;
10616-
for (pm_diagnostic_t *error = (pm_diagnostic_t *) error_list->head; error != NULL; error = (pm_diagnostic_t *) error->node.next) {
10616+
pm_diagnostic_t *finish = (pm_diagnostic_t * )error_list->tail->next;
10617+
10618+
for (pm_diagnostic_t *error = (pm_diagnostic_t *) error_list->head; error != finish; error = (pm_diagnostic_t *) error->node.next) {
1061710619
pm_line_column_t start = pm_newline_list_line_column(newline_list, error->location.start, start_line);
1061810620
pm_line_column_t end = pm_newline_list_line_column(newline_list, error->location.end, start_line);
1061910621

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy