diff options
author | Tharre <tharre3@gmail.com> | 2016-08-02 11:05:32 +0200 |
---|---|---|
committer | Tharre <tharre3@gmail.com> | 2016-08-03 18:31:48 +0200 |
commit | 9ebc2a17515af7f7196362c9f7373fcea36c7835 (patch) | |
tree | f45fa798b4a882671a12927155c620cca86abcf5 /src/DSV.c | |
parent | 220d44f961b0813b2786e45e069660dd37d15f67 (diff) | |
download | redo-9ebc2a17515af7f7196362c9f7373fcea36c7835.tar.gz redo-9ebc2a17515af7f7196362c9f7373fcea36c7835.tar.xz redo-9ebc2a17515af7f7196362c9f7373fcea36c7835.zip |
Fix overflow error when there are too many fields
Diffstat (limited to 'src/DSV.c')
-rw-r--r-- | src/DSV.c | 11 |
1 files changed, 6 insertions, 5 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) { |