aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2025-01-11 16:16:14 +1030
committerAlan Modra <amodra@gmail.com>2025-01-17 08:37:29 +1030
commit64d357bc45f26eae5d8316cec740749727fa66b7 (patch)
treeef1d703c0ed0fe2329132724fa58451b391d4e4c
parent8f5e60c87785008067c63772d9c651af626eef88 (diff)
downloadgdb-64d357bc45f26eae5d8316cec740749727fa66b7.zip
gdb-64d357bc45f26eae5d8316cec740749727fa66b7.tar.gz
gdb-64d357bc45f26eae5d8316cec740749727fa66b7.tar.bz2
ld parser buffer leak
* ldlex.l (<<EOF>>): yy_delete_buffer current. (yy_create_string_buffer): Use yyalloc.
-rw-r--r--ld/ldlex.l5
1 files changed, 3 insertions, 2 deletions
diff --git a/ld/ldlex.l b/ld/ldlex.l
index ef0c5bd..f36362f 100644
--- a/ld/ldlex.l
+++ b/ld/ldlex.l
@@ -477,6 +477,7 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
}
<<EOF>> {
+ yy_delete_buffer (YY_CURRENT_BUFFER);
include_stack_ptr--;
if (include_stack_ptr == 0)
{
@@ -528,13 +529,13 @@ yy_create_string_buffer (const char *string, size_t size)
{
YY_BUFFER_STATE b;
- b = xmalloc (sizeof (struct yy_buffer_state));
+ b = yyalloc (sizeof (struct yy_buffer_state));
b->yy_input_file = 0;
b->yy_buf_size = size;
/* yy_ch_buf has to be 2 characters longer than the size given because
we need to put in 2 end-of-buffer characters. */
- b->yy_ch_buf = xmalloc ((size_t) b->yy_buf_size + 3);
+ b->yy_ch_buf = yyalloc (b->yy_buf_size + 3);
b->yy_ch_buf[0] = '\n';
strcpy (b->yy_ch_buf+1, string);