aboutsummaryrefslogtreecommitdiffstats
path: root/src/ngSanitize
diff options
context:
space:
mode:
authorpaolo-delmundo2013-10-02 20:49:20 +0100
committerPete Bacon Darwin2013-10-03 08:43:06 +0100
commitc7658d94579d0e802bcdd43fe8fdee24c9a45dcb (patch)
tree9c82ba7095e31204e3629748fcd14e9f38c6f2ed /src/ngSanitize
parentb92c650e056bc3e445fdbe6f355d115338ecca2f (diff)
downloadangular.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.js8
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 );