diff options
| author | paolo-delmundo | 2013-10-02 20:49:20 +0100 |
|---|---|---|
| committer | Pete Bacon Darwin | 2013-10-03 08:43:06 +0100 |
| commit | c7658d94579d0e802bcdd43fe8fdee24c9a45dcb (patch) | |
| tree | 9c82ba7095e31204e3629748fcd14e9f38c6f2ed /src/ngSanitize | |
| parent | b92c650e056bc3e445fdbe6f355d115338ecca2f (diff) | |
| download | angular.js-c7658d94579d0e802bcdd43fe8fdee24c9a45dcb.tar.bz2 | |
fix($sanitize): sanitize DOCTYPE declarations correctly
HTML to be sanitized that contains a DOCTYPE declaration were causing
the HTML parser to throw an error. Now the parser correctly removes
the declarations when sanitizing HTML.
Closes #3931
Diffstat (limited to 'src/ngSanitize')
| -rw-r--r-- | src/ngSanitize/sanitize.js | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/ngSanitize/sanitize.js b/src/ngSanitize/sanitize.js index 6f28324e..73340043 100644 --- a/src/ngSanitize/sanitize.js +++ b/src/ngSanitize/sanitize.js @@ -141,6 +141,7 @@ var START_TAG_REGEXP = /^<\s*([\w:-]+)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?: BEGIN_TAG_REGEXP = /^</, BEGING_END_TAGE_REGEXP = /^<\s*\//, COMMENT_REGEXP = /<!--(.*?)-->/g, + DOCTYPE_REGEXP = /<!DOCTYPE([^>]*?)>/i, CDATA_REGEXP = /<!\[CDATA\[(.*?)]]>/g, URI_REGEXP = /^((ftp|https?):\/\/|mailto:|#)/i, NON_ALPHANUMERIC_REGEXP = /([^\#-~| |!])/g; // Match everything outside of normal chars and " (quote character) @@ -223,7 +224,14 @@ function htmlParser( html, handler ) { html = html.substring( index + 3 ); chars = false; } + // DOCTYPE + } else if ( DOCTYPE_REGEXP.test(html) ) { + match = html.match( DOCTYPE_REGEXP ); + if ( match ) { + html = html.replace( match[0] , ''); + chars = false; + } // end tag } else if ( BEGING_END_TAGE_REGEXP.test(html) ) { match = html.match( END_TAG_REGEXP ); |
