diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/DSV.c | 11 | ||||
| -rw-r--r-- | src/build.c | 2 | 
2 files changed, 7 insertions, 6 deletions
@@ -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;  | 
