Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
libconfig
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
libconfig
Commits
a6b370e7
Unverified
Commit
a6b370e7
authored
Oct 21, 2019
by
Mark Lindner
Committed by
GitHub
Oct 21, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #155 from thomastrapp/tok-string-memory-leak-clean
Fix memory leak when parsing invalid syntax
parents
221ca9d9
f2e951cb
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
52 additions
and
40 deletions
+52
-40
lib/grammar.c
lib/grammar.c
+51
-40
lib/grammar.y
lib/grammar.y
+1
-0
No files found.
lib/grammar.c
View file @
a6b370e7
...
...
@@ -517,11 +517,11 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static
const
yytype_uint16
yyrline
[]
=
{
0
,
9
1
,
91
,
93
,
97
,
98
,
101
,
103
,
106
,
108
,
1
09
,
114
,
113
,
133
,
132
,
156
,
155
,
178
,
179
,
180
,
18
1
,
185
,
186
,
190
,
210
,
232
,
254
,
276
,
298
,
316
,
34
4
,
345
,
346
,
349
,
351
,
355
,
356
,
357
,
360
,
362
,
36
7
,
366
0
,
9
2
,
92
,
94
,
98
,
99
,
102
,
104
,
107
,
109
,
1
10
,
115
,
114
,
134
,
133
,
157
,
156
,
179
,
180
,
181
,
18
2
,
186
,
187
,
191
,
211
,
233
,
255
,
277
,
299
,
317
,
34
5
,
346
,
347
,
350
,
352
,
356
,
357
,
358
,
361
,
363
,
36
8
,
367
};
#endif
...
...
@@ -1074,7 +1074,18 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *scanner, str
YY_SYMBOL_PRINT
(
yymsg
,
yytype
,
yyvaluep
,
yylocationp
);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
YYUSE
(
yytype
);
switch
(
yytype
)
{
case
9
:
/* TOK_STRING */
#line 88 "grammar.y"
/* yacc.c:1257 */
{
free
(((
*
yyvaluep
).
sval
));
}
#line 1083 "grammar.c"
/* yacc.c:1257 */
break
;
default:
break
;
}
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
...
...
@@ -1334,7 +1345,7 @@ yyreduce:
switch
(
yyn
)
{
case
11
:
#line 11
4
"grammar.y"
/* yacc.c:1646 */
#line 11
5
"grammar.y"
/* yacc.c:1646 */
{
ctx
->
setting
=
config_setting_add
(
ctx
->
parent
,
(
yyvsp
[
0
].
sval
),
CONFIG_TYPE_NONE
);
...
...
@@ -1348,11 +1359,11 @@ yyreduce:
CAPTURE_PARSE_POS
(
ctx
->
setting
);
}
}
#line 13
52
"grammar.c"
/* yacc.c:1646 */
#line 13
63
"grammar.c"
/* yacc.c:1646 */
break
;
case
13
:
#line 13
3
"grammar.y"
/* yacc.c:1646 */
#line 13
4
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_LIST
())
{
...
...
@@ -1366,20 +1377,20 @@ yyreduce:
ctx
->
setting
=
NULL
;
}
}
#line 13
70
"grammar.c"
/* yacc.c:1646 */
#line 13
81
"grammar.c"
/* yacc.c:1646 */
break
;
case
14
:
#line 14
8
"grammar.y"
/* yacc.c:1646 */
#line 14
9
"grammar.y"
/* yacc.c:1646 */
{
if
(
ctx
->
parent
)
ctx
->
parent
=
ctx
->
parent
->
parent
;
}
#line 13
79
"grammar.c"
/* yacc.c:1646 */
#line 13
90
"grammar.c"
/* yacc.c:1646 */
break
;
case
15
:
#line 15
6
"grammar.y"
/* yacc.c:1646 */
#line 15
7
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_LIST
())
{
...
...
@@ -1393,32 +1404,32 @@ yyreduce:
ctx
->
setting
=
NULL
;
}
}
#line 1
397
"grammar.c"
/* yacc.c:1646 */
#line 1
408
"grammar.c"
/* yacc.c:1646 */
break
;
case
16
:
#line 17
1
"grammar.y"
/* yacc.c:1646 */
#line 17
2
"grammar.y"
/* yacc.c:1646 */
{
if
(
ctx
->
parent
)
ctx
->
parent
=
ctx
->
parent
->
parent
;
}
#line 14
06
"grammar.c"
/* yacc.c:1646 */
#line 14
17
"grammar.c"
/* yacc.c:1646 */
break
;
case
21
:
#line 18
5
"grammar.y"
/* yacc.c:1646 */
#line 18
6
"grammar.y"
/* yacc.c:1646 */
{
parsectx_append_string
(
ctx
,
(
yyvsp
[
0
].
sval
));
free
((
yyvsp
[
0
].
sval
));
}
#line 14
12
"grammar.c"
/* yacc.c:1646 */
#line 14
23
"grammar.c"
/* yacc.c:1646 */
break
;
case
22
:
#line 18
6
"grammar.y"
/* yacc.c:1646 */
#line 18
7
"grammar.y"
/* yacc.c:1646 */
{
parsectx_append_string
(
ctx
,
(
yyvsp
[
0
].
sval
));
free
((
yyvsp
[
0
].
sval
));
}
#line 14
18
"grammar.c"
/* yacc.c:1646 */
#line 14
29
"grammar.c"
/* yacc.c:1646 */
break
;
case
23
:
#line 19
1
"grammar.y"
/* yacc.c:1646 */
#line 19
2
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1438,11 +1449,11 @@ yyreduce:
else
config_setting_set_bool
(
ctx
->
setting
,
(
int
)(
yyvsp
[
0
].
ival
));
}
#line 14
42
"grammar.c"
/* yacc.c:1646 */
#line 14
53
"grammar.c"
/* yacc.c:1646 */
break
;
case
24
:
#line 21
1
"grammar.y"
/* yacc.c:1646 */
#line 21
2
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1464,11 +1475,11 @@ yyreduce:
config_setting_set_format
(
ctx
->
setting
,
CONFIG_FORMAT_DEFAULT
);
}
}
#line 14
68
"grammar.c"
/* yacc.c:1646 */
#line 14
79
"grammar.c"
/* yacc.c:1646 */
break
;
case
25
:
#line 23
3
"grammar.y"
/* yacc.c:1646 */
#line 23
4
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1490,11 +1501,11 @@ yyreduce:
config_setting_set_format
(
ctx
->
setting
,
CONFIG_FORMAT_DEFAULT
);
}
}
#line 1
494
"grammar.c"
/* yacc.c:1646 */
#line 1
505
"grammar.c"
/* yacc.c:1646 */
break
;
case
26
:
#line 25
5
"grammar.y"
/* yacc.c:1646 */
#line 25
6
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1516,11 +1527,11 @@ yyreduce:
config_setting_set_format
(
ctx
->
setting
,
CONFIG_FORMAT_HEX
);
}
}
#line 15
20
"grammar.c"
/* yacc.c:1646 */
#line 15
31
"grammar.c"
/* yacc.c:1646 */
break
;
case
27
:
#line 27
7
"grammar.y"
/* yacc.c:1646 */
#line 27
8
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1542,11 +1553,11 @@ yyreduce:
config_setting_set_format
(
ctx
->
setting
,
CONFIG_FORMAT_HEX
);
}
}
#line 15
46
"grammar.c"
/* yacc.c:1646 */
#line 15
57
"grammar.c"
/* yacc.c:1646 */
break
;
case
28
:
#line
299
"grammar.y"
/* yacc.c:1646 */
#line
300
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1564,11 +1575,11 @@ yyreduce:
else
config_setting_set_float
(
ctx
->
setting
,
(
yyvsp
[
0
].
fval
));
}
#line 15
68
"grammar.c"
/* yacc.c:1646 */
#line 15
79
"grammar.c"
/* yacc.c:1646 */
break
;
case
29
:
#line 31
7
"grammar.y"
/* yacc.c:1646 */
#line 31
8
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_ARRAY
()
||
IN_LIST
())
{
...
...
@@ -1593,11 +1604,11 @@ yyreduce:
__delete
(
s
);
}
}
#line 1
597
"grammar.c"
/* yacc.c:1646 */
#line 1
608
"grammar.c"
/* yacc.c:1646 */
break
;
case
40
:
#line 36
7
"grammar.y"
/* yacc.c:1646 */
#line 36
8
"grammar.y"
/* yacc.c:1646 */
{
if
(
IN_LIST
())
{
...
...
@@ -1611,20 +1622,20 @@ yyreduce:
ctx
->
setting
=
NULL
;
}
}
#line 16
15
"grammar.c"
/* yacc.c:1646 */
#line 16
26
"grammar.c"
/* yacc.c:1646 */
break
;
case
41
:
#line 38
2
"grammar.y"
/* yacc.c:1646 */
#line 38
3
"grammar.y"
/* yacc.c:1646 */
{
if
(
ctx
->
parent
)
ctx
->
parent
=
ctx
->
parent
->
parent
;
}
#line 16
24
"grammar.c"
/* yacc.c:1646 */
#line 16
35
"grammar.c"
/* yacc.c:1646 */
break
;
#line 16
28
"grammar.c"
/* yacc.c:1646 */
#line 16
39
"grammar.c"
/* yacc.c:1646 */
default:
break
;
}
/* User semantic actions sometimes alter yychar, and that requires
...
...
@@ -1852,5 +1863,5 @@ yyreturn:
#endif
return
yyresult
;
}
#line 38
8
"grammar.y"
/* yacc.c:1906 */
#line 38
9
"grammar.y"
/* yacc.c:1906 */
lib/grammar.y
View file @
a6b370e7
...
...
@@ -85,6 +85,7 @@ void libconfig_yyerror(void *scanner, struct parse_context *ctx,
%token <fval> TOK_FLOAT
%token <sval> TOK_STRING TOK_NAME
%token TOK_EQUALS TOK_NEWLINE TOK_ARRAY_START TOK_ARRAY_END TOK_LIST_START TOK_LIST_END TOK_COMMA TOK_GROUP_START TOK_GROUP_END TOK_SEMICOLON TOK_GARBAGE TOK_ERROR
%destructor { free($$); } TOK_STRING
%%
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment