summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/scanners.c5
-rw-r--r--src/scanners.re2
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];