diff options
Diffstat (limited to 'src/scanners.re')
-rw-r--r-- | src/scanners.re | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/scanners.re b/src/scanners.re index efa6731..fbe3283 100644 --- a/src/scanners.re +++ b/src/scanners.re @@ -315,3 +315,17 @@ bufsize_t _scan_entity(const unsigned char *p) .? { return 0; } */ } + +// Returns positive value if a URL begins in a way that is potentially +// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0. +bufsize_t _scan_dangerous_url(const unsigned char *p) +{ + const unsigned char *marker = NULL; + const unsigned char *start = p; +/*!re2c + 'data:image/' ('png'|'gif'|'jpeg'|'webp') { return 0; } + 'javascript:' | 'vbscript:' | 'file:' | 'data:' { return (bufsize_t)(p - start); } + .? { return 0; } +*/ +} + |