[augeas-devel] augeas: master - * src/pathx.c: it is an error if we don't consume the whole expression
David Lutterkort
lutter at fedoraproject.org
Mon Mar 2 19:29:50 UTC 2009
Gitweb: http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=9bcd7b66aa6781d69d917166293fc80cfdab4066
Commit: 9bcd7b66aa6781d69d917166293fc80cfdab4066
Parent: 39783f31002f1f6d8ccb44f3841e9ceb3efcf43c
Author: David Lutterkort <lutter at redhat.com>
AuthorDate: Mon Mar 2 11:11:50 2009 -0800
Committer: David Lutterkort <lutter at redhat.com>
CommitterDate: Mon Mar 2 11:11:50 2009 -0800
* src/pathx.c: it is an error if we don't consume the whole expression
---
src/internal.h | 3 ++-
src/pathx.c | 7 ++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/internal.h b/src/internal.h
index faa407f..1b020c5 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -369,7 +369,8 @@ typedef enum {
PATHX_EPAREN,
PATHX_ESLASH,
PATHX_EINTERNAL,
- PATHX_ETYPE
+ PATHX_ETYPE,
+ PATHX_EEND
} pathx_errcode_t;
struct pathx;
diff --git a/src/pathx.c b/src/pathx.c
index 25446e5..5da5caf 100644
--- a/src/pathx.c
+++ b/src/pathx.c
@@ -39,7 +39,8 @@ static const char *const errcodes[] = {
"unmatched '('",
"expected a '/'",
"internal error", /* PATHX_EINTERNAL */
- "type error" /* PATHX_ETYPE */
+ "type error", /* PATHX_ETYPE */
+ "garbage at end of path expression" /* PATHX_EEND */
};
/*
@@ -1583,6 +1584,10 @@ int pathx_parse(const struct tree *tree, const char *txt,
parse_expr(state);
if (HAS_ERROR(state))
goto done;
+ if (state->pos != state->txt + strlen(state->txt)) {
+ STATE_ERROR(state, PATHX_EEND);
+ goto done;
+ }
if (state->exprs_used != 1) {
STATE_ERROR(state, PATHX_EINTERNAL);
More information about the augeas-devel
mailing list