Compare commits

..

2 Commits

Author SHA1 Message Date
chloe a0b204fadd core: parser: Add parser-side nom function
Signed-off-by: Chloe M. <chloe@mirocom.org>
2026-05-23 14:36:55 +00:00
chloe 19c7587f28 core: tokbuf: Fix buffer overflow
Signed-off-by: Chloe M. <chloe@mirocom.org>
2026-05-23 14:36:20 +00:00
2 changed files with 24 additions and 2 deletions
+23 -1
View File
@@ -58,6 +58,28 @@ static const char *toktab[] = {
[TT_U64] = qtok("u64")
};
static int
parser_nom(struct cescal_state *state, struct token *res)
{
struct token tok;
if (state == NULL || res == NULL) {
errno = EINVAL;
return -1;
}
if (lexer_nom(state, &tok) < 0) {
return -1;
}
if (tokbuf_push(&state->tokbuf, &tok) < 0) {
return -1;
}
*res = tok;
return 0;
}
int
parser_parse(struct cescal_state *state)
{
@@ -68,7 +90,7 @@ parser_parse(struct cescal_state *state)
return -1;
}
while (lexer_nom(state, &tok) == 0) {
while (parser_nom(state, &tok) == 0) {
cc_trace("got token %s\n", tokstr(&tok));
}
+1 -1
View File
@@ -30,7 +30,7 @@ tokbuf_push(struct tokbuf *tokbuf, struct token *tok)
return -1;
}
if ((tokbuf->head++) >= TOKBUF_CAP) {
if ((tokbuf->head++) >= TOKBUF_CAP - 1) {
tokbuf->head = 0;
}