aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/DSV.c11
-rw-r--r--src/build.c2
2 files changed, 7 insertions, 6 deletions
diff --git a/src/DSV.c b/src/DSV.c
index 91cc7ee..1a46007 100644
--- a/src/DSV.c
+++ b/src/DSV.c
@@ -117,17 +117,18 @@ int dsv_parse_next_line(struct dsv_ctx *context, const char *src, size_t len) {
break;
}
+ if (i >= context->fields_count) {
+ debug("DSV: too many fields\n");
+ context->status = E_TOO_MANY_FIELDS;
+ goto error;
+ }
+
char *buf = xmalloc(size+1);
decode_string(buf, start, size+1);
context->fields[i] = buf;
start += size + 1;
++i;
- if (i > context->fields_count) {
- debug("DSV: too many fields\n");
- context->status = E_TOO_MANY_FIELDS;
- goto error;
- }
}
if (i+1 < context->fields_count) {
diff --git a/src/build.c b/src/build.c
index 8903563..cd6f8dc 100644
--- a/src/build.c
+++ b/src/build.c
@@ -475,7 +475,7 @@ static int handle_c(dep_info *dep) {
if (dsv_parse_file(&ctx, fp)) {
retval = build_target(dep);
- goto exit;
+ goto exit2;
}
errno = 0;