diff options
-rw-r--r-- | src/scanners.c | 5 | ||||
-rw-r--r-- | src/scanners.re | 2 |
2 files changed, 3 insertions, 4 deletions
diff --git a/src/scanners.c b/src/scanners.c index c0df18b..ae4125f 100644 --- a/src/scanners.c +++ b/src/scanners.c @@ -7,10 +7,9 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t offset) { bufsize_t res; unsigned char *ptr = (unsigned char *)c->data; - unsigned char zero = '\0'; - if (ptr == NULL) { - res = scanner(&zero); + if (ptr == NULL || offset > c->len) { + return 0; } else { unsigned char lim = ptr[c->len]; diff --git a/src/scanners.re b/src/scanners.re index befe7d0..8176590 100644 --- a/src/scanners.re +++ b/src/scanners.re @@ -7,7 +7,7 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t res; unsigned char *ptr = (unsigned char *)c->data; - if (ptr == NULL) { + if (ptr == NULL || offset > c->len) { return 0; } else { unsigned char lim = ptr[c->len]; |