git-svn: trunk@4201
Török Edvin authored on 2008/09/24 05:52:221 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1 @@ |
0 |
+<a href="data:application/octet-stream;base64,TVpQAAIAAAAEAA8A//8AALgAAAAhAAAAQAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAALtxEEAAM8BQUIvzU1NQsClAMARmrHn5ujEAeA2tUP9mcA4fvjEA6eX/tAnNIbRMzSFiDAoBAnB2FwIeTgwEL9rMEAAAAAAAAAAAAAAAAAAAwBAAAIAQAAAAAAAAAAAAAAAAAADaEAAA9BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAS0VSTkVMMzIuRExMAABFeGl0UHJvY2VzcwBVU0VSMzIuRExMAENMQU1lc3NhZ2VCb3hBAOYQAAAAAAAAPz8/P1BFAABMAQEAYUNhQgAAAAAAAAAA4ACOgQsBAhkABAAAAAYAAAAAAABAEAAAABAAAEAAAAAAAEAAABAAAAACAAABAAAAAAAAAAMACgAAAAAAACAAAAAEAAAAAAAAAgAAAAAAEAAAIAAAAAAQAAAQAAAAAAAAEAAAAAAAAAAAAAAAhBAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW0NMQU1BVl0AEAAAABAAAAACAAABAAAAAAAAAAAAAAAAAAAAAAAAwA==">t</a> |
... | ... |
@@ -337,7 +337,11 @@ static inline int buf_outs(const char *s, struct buf *buf) |
337 | 337 |
i = buf->pos; |
338 | 338 |
while(*s) { |
339 | 339 |
while(i < buf_len && *s) { |
340 |
- buf->buf[i++] = tolower((unsigned char)(*s++)); |
|
340 |
+ if(isspace(*s)) |
|
341 |
+ buf->buf[i++] = ' '; |
|
342 |
+ else |
|
343 |
+ buf->buf[i++] = tolower((unsigned char)(*s)); |
|
344 |
+ ++s; |
|
341 | 345 |
} |
342 | 346 |
if(i == buf_len) { |
343 | 347 |
if(write(buf->outfd, buf->buf, buf_len) < 0) |
... | ... |
@@ -882,11 +886,15 @@ void cli_js_output(struct parser_state *state, const char *tempdir) |
882 | 882 |
/* separate multiple scripts with \n */ |
883 | 883 |
buf_outc('\n', &buf); |
884 | 884 |
} |
885 |
+ buf_outs("<script>", &buf); |
|
885 | 886 |
state->current = state->global; |
886 | 887 |
for(i = 0; i < state->tokens.cnt; i++) { |
887 | 888 |
if(state_update_scope(state, &state->tokens.data[i])) |
888 | 889 |
lastchar = output_token(&state->tokens.data[i], state->current, &buf, lastchar); |
889 | 890 |
} |
891 |
+ /* add /script if not already there */ |
|
892 |
+ if(buf.pos < 9 || memcmp(buf.buf + buf.pos - 9, "</script>", 9)) |
|
893 |
+ buf_outs("</script>", &buf); |
|
890 | 894 |
if(write(buf.outfd, buf.buf, buf.pos) < 0) { |
891 | 895 |
cli_dbgmsg(MODULE "I/O error"); |
892 | 896 |
} |
... | ... |
@@ -1512,7 +1520,9 @@ static int yylex(YYSTYPE *lvalp, yyscan_t scanner) |
1512 | 1512 |
return parseNumber(lvalp, scanner); |
1513 | 1513 |
case SinglelineComment: |
1514 | 1514 |
while(scanner->pos < scanner->insize) { |
1515 |
- if(in[scanner->pos] == '\n') |
|
1515 |
+ /* htmlnorm converts \n to space, so |
|
1516 |
+ * stop on space too */ |
|
1517 |
+ if(in[scanner->pos] == '\n' || in[scanner->pos] == ' ') |
|
1516 | 1518 |
break; |
1517 | 1519 |
scanner->pos++; |
1518 | 1520 |
} |
... | ... |
@@ -4,7 +4,7 @@ FILES = clam-v2.rar clam-v3.rar clam.cab clam.exe.bz2 clam.exe clam.zip \ |
4 | 4 |
clam-nsis.exe clam-petite.exe clam-upack.exe clam-wwpack.exe clam.pdf\ |
5 | 5 |
clam.mail clam.ppt clam.tnef clam.ea05.exe clam.ea06.exe clam.d64.zip\ |
6 | 6 |
clam.exe.mbox.base64 clam.exe.mbox.uu clam.exe.binhex clam.ole.doc \ |
7 |
- clam.impl.zip |
|
7 |
+ clam.impl.zip clam.exe.html |
|
8 | 8 |
|
9 | 9 |
SPLIT_DIR=$(top_srcdir)/test/.split |
10 | 10 |
|
... | ... |
@@ -197,7 +197,7 @@ FILES = clam-v2.rar clam-v3.rar clam.cab clam.exe.bz2 clam.exe clam.zip \ |
197 | 197 |
clam-nsis.exe clam-petite.exe clam-upack.exe clam-wwpack.exe clam.pdf\ |
198 | 198 |
clam.mail clam.ppt clam.tnef clam.ea05.exe clam.ea06.exe clam.d64.zip\ |
199 | 199 |
clam.exe.mbox.base64 clam.exe.mbox.uu clam.exe.binhex clam.ole.doc \ |
200 |
- clam.impl.zip |
|
200 |
+ clam.impl.zip clam.exe.html |
|
201 | 201 |
|
202 | 202 |
SPLIT_DIR = $(top_srcdir)/test/.split |
203 | 203 |
EXTRA_DIST = .split |
... | ... |
@@ -15,7 +15,10 @@ check_PROGRAMS = $(programs) |
15 | 15 |
check_SCRIPTS = $(scripts) |
16 | 16 |
|
17 | 17 |
if HAVE_LIBCHECK |
18 |
-check_clamav_SOURCES = check_clamav.c check_jsnorm.c check_str.c check_regex.c checks.h $(top_builddir)/libclamav/clamav.h check_disasm.c check_uniq.c check_matchers.c |
|
18 |
+check_clamav_SOURCES = check_clamav.c checks.h $(top_builddir)/libclamav/clamav.h\ |
|
19 |
+ check_jsnorm.c check_str.c check_regex.c\ |
|
20 |
+ check_disasm.c check_uniq.c check_matchers.c\ |
|
21 |
+ check_htmlnorm.c |
|
19 | 22 |
check_clamav_CPPFLAGS = @CHECK_CPPFLAGS@ -DSRCDIR=\"$(abs_srcdir)\" |
20 | 23 |
check_clamav_LDADD = $(top_builddir)/libclamav/libclamav.la @THREAD_LIBS@ @CHECK_LIBS@ |
21 | 24 |
else |
... | ... |
@@ -41,7 +44,7 @@ lcov: $(LCOV_HTML) |
41 | 41 |
DIRECTORIES=--directory . --directory ../libclamav --directory ../clamd --directory ../freshclam --directory ../sigtool --directory ../clamscan --directory ../clamdscan |
42 | 42 |
.libs/check_clamav.gcda: $(TESTS) |
43 | 43 |
$(LCOV_LCOV) $(DIRECTORIES) --zerocounters |
44 |
- @$(MAKE) check VALGRIND= |
|
44 |
+ @$(MAKE) check VALGRIND= LIBDUMA=no LIBEFENCE=no |
|
45 | 45 |
|
46 | 46 |
$(LCOV_OUTPUT): .libs/check_clamav.gcda |
47 | 47 |
$(LCOV_LCOV) --capture $(DIRECTORIES) --output-file $@ |
... | ... |
@@ -51,9 +51,9 @@ CONFIG_HEADER = $(top_builddir)/clamav-config.h |
51 | 51 |
CONFIG_CLEAN_FILES = |
52 | 52 |
am__EXEEXT_1 = check_clamav$(EXEEXT) |
53 | 53 |
am__check_clamav_SOURCES_DIST = check_clamav_skip.c check_clamav.c \ |
54 |
- check_jsnorm.c check_str.c check_regex.c checks.h \ |
|
55 |
- $(top_builddir)/libclamav/clamav.h check_disasm.c check_uniq.c \ |
|
56 |
- check_matchers.c |
|
54 |
+ checks.h $(top_builddir)/libclamav/clamav.h check_jsnorm.c \ |
|
55 |
+ check_str.c check_regex.c check_disasm.c check_uniq.c \ |
|
56 |
+ check_matchers.c check_htmlnorm.c |
|
57 | 57 |
@HAVE_LIBCHECK_FALSE@am_check_clamav_OBJECTS = \ |
58 | 58 |
@HAVE_LIBCHECK_FALSE@ check_clamav-check_clamav_skip.$(OBJEXT) |
59 | 59 |
@HAVE_LIBCHECK_TRUE@am_check_clamav_OBJECTS = \ |
... | ... |
@@ -63,7 +63,8 @@ am__check_clamav_SOURCES_DIST = check_clamav_skip.c check_clamav.c \ |
63 | 63 |
@HAVE_LIBCHECK_TRUE@ check_clamav-check_regex.$(OBJEXT) \ |
64 | 64 |
@HAVE_LIBCHECK_TRUE@ check_clamav-check_disasm.$(OBJEXT) \ |
65 | 65 |
@HAVE_LIBCHECK_TRUE@ check_clamav-check_uniq.$(OBJEXT) \ |
66 |
-@HAVE_LIBCHECK_TRUE@ check_clamav-check_matchers.$(OBJEXT) |
|
66 |
+@HAVE_LIBCHECK_TRUE@ check_clamav-check_matchers.$(OBJEXT) \ |
|
67 |
+@HAVE_LIBCHECK_TRUE@ check_clamav-check_htmlnorm.$(OBJEXT) |
|
67 | 68 |
check_clamav_OBJECTS = $(am_check_clamav_OBJECTS) |
68 | 69 |
@HAVE_LIBCHECK_TRUE@check_clamav_DEPENDENCIES = \ |
69 | 70 |
@HAVE_LIBCHECK_TRUE@ $(top_builddir)/libclamav/libclamav.la |
... | ... |
@@ -234,7 +235,11 @@ scripts = check_clamd.sh check_freshclam.sh check_sigtool.sh check_clamscan.sh\ |
234 | 234 |
TESTS_ENVIRONMENT = export abs_srcdir=$(abs_srcdir) AWK=$(AWK); |
235 | 235 |
check_SCRIPTS = $(scripts) |
236 | 236 |
@HAVE_LIBCHECK_FALSE@check_clamav_SOURCES = check_clamav_skip.c |
237 |
-@HAVE_LIBCHECK_TRUE@check_clamav_SOURCES = check_clamav.c check_jsnorm.c check_str.c check_regex.c checks.h $(top_builddir)/libclamav/clamav.h check_disasm.c check_uniq.c check_matchers.c |
|
237 |
+@HAVE_LIBCHECK_TRUE@check_clamav_SOURCES = check_clamav.c checks.h $(top_builddir)/libclamav/clamav.h\ |
|
238 |
+@HAVE_LIBCHECK_TRUE@ check_jsnorm.c check_str.c check_regex.c\ |
|
239 |
+@HAVE_LIBCHECK_TRUE@ check_disasm.c check_uniq.c check_matchers.c\ |
|
240 |
+@HAVE_LIBCHECK_TRUE@ check_htmlnorm.c |
|
241 |
+ |
|
238 | 242 |
@HAVE_LIBCHECK_TRUE@check_clamav_CPPFLAGS = @CHECK_CPPFLAGS@ -DSRCDIR=\"$(abs_srcdir)\" |
239 | 243 |
@HAVE_LIBCHECK_TRUE@check_clamav_LDADD = $(top_builddir)/libclamav/libclamav.la @THREAD_LIBS@ @CHECK_LIBS@ |
240 | 244 |
CLEANFILES = lcov.out *.gcno *.gcda *.log $(FILES) test-stderr.log clamscan.log valgrind-*.log duma.log duma2.log |
... | ... |
@@ -298,6 +303,7 @@ distclean-compile: |
298 | 298 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_clamav.Po@am__quote@ |
299 | 299 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_clamav_skip.Po@am__quote@ |
300 | 300 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_disasm.Po@am__quote@ |
301 |
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_htmlnorm.Po@am__quote@ |
|
301 | 302 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_jsnorm.Po@am__quote@ |
302 | 303 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_matchers.Po@am__quote@ |
303 | 304 |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_clamav-check_regex.Po@am__quote@ |
... | ... |
@@ -437,6 +443,20 @@ check_clamav-check_matchers.obj: check_matchers.c |
437 | 437 |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
438 | 438 |
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_clamav_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o check_clamav-check_matchers.obj `if test -f 'check_matchers.c'; then $(CYGPATH_W) 'check_matchers.c'; else $(CYGPATH_W) '$(srcdir)/check_matchers.c'; fi` |
439 | 439 |
|
440 |
+check_clamav-check_htmlnorm.o: check_htmlnorm.c |
|
441 |
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_clamav_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT check_clamav-check_htmlnorm.o -MD -MP -MF $(DEPDIR)/check_clamav-check_htmlnorm.Tpo -c -o check_clamav-check_htmlnorm.o `test -f 'check_htmlnorm.c' || echo '$(srcdir)/'`check_htmlnorm.c |
|
442 |
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/check_clamav-check_htmlnorm.Tpo $(DEPDIR)/check_clamav-check_htmlnorm.Po |
|
443 |
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='check_htmlnorm.c' object='check_clamav-check_htmlnorm.o' libtool=no @AMDEPBACKSLASH@ |
|
444 |
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
|
445 |
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_clamav_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o check_clamav-check_htmlnorm.o `test -f 'check_htmlnorm.c' || echo '$(srcdir)/'`check_htmlnorm.c |
|
446 |
+ |
|
447 |
+check_clamav-check_htmlnorm.obj: check_htmlnorm.c |
|
448 |
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_clamav_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT check_clamav-check_htmlnorm.obj -MD -MP -MF $(DEPDIR)/check_clamav-check_htmlnorm.Tpo -c -o check_clamav-check_htmlnorm.obj `if test -f 'check_htmlnorm.c'; then $(CYGPATH_W) 'check_htmlnorm.c'; else $(CYGPATH_W) '$(srcdir)/check_htmlnorm.c'; fi` |
|
449 |
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/check_clamav-check_htmlnorm.Tpo $(DEPDIR)/check_clamav-check_htmlnorm.Po |
|
450 |
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='check_htmlnorm.c' object='check_clamav-check_htmlnorm.obj' libtool=no @AMDEPBACKSLASH@ |
|
451 |
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
|
452 |
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_clamav_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o check_clamav-check_htmlnorm.obj `if test -f 'check_htmlnorm.c'; then $(CYGPATH_W) 'check_htmlnorm.c'; else $(CYGPATH_W) '$(srcdir)/check_htmlnorm.c'; fi` |
|
453 |
+ |
|
440 | 454 |
mostlyclean-libtool: |
441 | 455 |
-rm -f *.lo |
442 | 456 |
|
... | ... |
@@ -710,7 +730,7 @@ $(top_builddir)/test/clam.exe: |
710 | 710 |
@ENABLE_COVERAGE_TRUE@lcov: $(LCOV_HTML) |
711 | 711 |
@ENABLE_COVERAGE_TRUE@.libs/check_clamav.gcda: $(TESTS) |
712 | 712 |
@ENABLE_COVERAGE_TRUE@ $(LCOV_LCOV) $(DIRECTORIES) --zerocounters |
713 |
-@ENABLE_COVERAGE_TRUE@ @$(MAKE) check VALGRIND= |
|
713 |
+@ENABLE_COVERAGE_TRUE@ @$(MAKE) check VALGRIND= LIBDUMA=no LIBEFENCE=no |
|
714 | 714 |
|
715 | 715 |
@ENABLE_COVERAGE_TRUE@$(LCOV_OUTPUT): .libs/check_clamav.gcda |
716 | 716 |
@ENABLE_COVERAGE_TRUE@ $(LCOV_LCOV) --capture $(DIRECTORIES) --output-file $@ |
717 | 717 |
new file mode 100644 |
... | ... |
@@ -0,0 +1 @@ |
0 |
+<a href="example.com">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</a><a href="example.com">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</a><a href="example.com">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</a><a href="example.com">aa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bba</a>ab axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb |
|
0 | 1 |
\ No newline at end of file |
1 | 2 |
new file mode 100644 |
... | ... |
@@ -0,0 +1 @@ |
0 |
+ example.com aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa example.com aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa example.com aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa example.com aa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bbaa bba ab axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb |
|
0 | 1 |
\ No newline at end of file |
... | ... |
@@ -326,11 +326,50 @@ int open_testfile(const char *name) |
326 | 326 |
sprintf(str, "%s/%s", srcdir, name); |
327 | 327 |
|
328 | 328 |
fd = open(str, O_RDONLY); |
329 |
- fail_unless(fd >= 0, "open()"); |
|
329 |
+ fail_unless(fd >= 0, "open() failed: %s", str); |
|
330 | 330 |
free(str); |
331 | 331 |
return fd; |
332 | 332 |
} |
333 | 333 |
|
334 |
+void diff_file_mem(int fd, const char *ref, size_t len) |
|
335 |
+{ |
|
336 |
+ size_t p, reflen = len; |
|
337 |
+ char *buf = cli_malloc(len); |
|
338 |
+ |
|
339 |
+ fail_unless(!!buf, "unable to malloc buffer: %d", len); |
|
340 |
+ fail_unless(read(fd, buf, len) == len, "file is smaller: %lu, expected: %lu", p, len); |
|
341 |
+ p = 0; |
|
342 |
+ while(len > 0) { |
|
343 |
+ char c1 = ref[p]; |
|
344 |
+ char c2 = buf[p]; |
|
345 |
+ fail_unless(c1 == c2, "file contents mismatch at byte: %lu, was: %c, expected: %c", p, c2, c1); |
|
346 |
+ p++; |
|
347 |
+ len--; |
|
348 |
+ } |
|
349 |
+ free(buf); |
|
350 |
+ p = lseek(fd, 0, SEEK_END); |
|
351 |
+ fail_unless(p == reflen, "trailing garbage, file size: %ld, expected: %ld", p, reflen); |
|
352 |
+ close(fd); |
|
353 |
+} |
|
354 |
+ |
|
355 |
+void diff_files(int fd, int ref_fd) |
|
356 |
+{ |
|
357 |
+ char *ref; |
|
358 |
+ ssize_t nread; |
|
359 |
+ off_t siz = lseek(ref_fd, 0, SEEK_END); |
|
360 |
+ fail_unless(siz != -1, "lseek failed"); |
|
361 |
+ |
|
362 |
+ ref = cli_malloc(siz); |
|
363 |
+ fail_unless(!!ref, "unable to malloc buffer: %d", siz); |
|
364 |
+ |
|
365 |
+ fail_unless(lseek(ref_fd, 0, SEEK_SET) == 0,"lseek failed"); |
|
366 |
+ nread = read(ref_fd, ref, siz); |
|
367 |
+ fail_unless(nread == siz, "short read, expected: %ld, was: %ld", siz, nread); |
|
368 |
+ close(ref_fd); |
|
369 |
+ diff_file_mem(fd, ref, siz); |
|
370 |
+ free(ref); |
|
371 |
+} |
|
372 |
+ |
|
334 | 373 |
int main(int argc, char **argv) |
335 | 374 |
{ |
336 | 375 |
int nf; |
... | ... |
@@ -347,6 +386,7 @@ int main(int argc, char **argv) |
347 | 347 |
srunner_add_suite(sr, test_disasm_suite()); |
348 | 348 |
srunner_add_suite(sr, test_uniq_suite()); |
349 | 349 |
srunner_add_suite(sr, test_matchers_suite()); |
350 |
+ srunner_add_suite(sr, test_htmlnorm_suite()); |
|
350 | 351 |
|
351 | 352 |
srunner_set_log(sr, "test.log"); |
352 | 353 |
if(freopen("test-stderr.log","w+",stderr) == NULL) { |
353 | 354 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,155 @@ |
0 |
+/* |
|
1 |
+ * Unit tests for HTML normalizer; |
|
2 |
+ * |
|
3 |
+ * Copyright (C) 2008 Sourcefire, Inc. |
|
4 |
+ * |
|
5 |
+ * Authors: Török Edvin |
|
6 |
+ * |
|
7 |
+ * This program is free software; you can redistribute it and/or modify |
|
8 |
+ * it under the terms of the GNU General Public License version 2 as |
|
9 |
+ * published by the Free Software Foundation. |
|
10 |
+ * |
|
11 |
+ * This program is distributed in the hope that it will be useful, |
|
12 |
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
14 |
+ * GNU General Public License for more details. |
|
15 |
+ * |
|
16 |
+ * You should have received a copy of the GNU General Public License |
|
17 |
+ * along with this program; if not, write to the Free Software |
|
18 |
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
19 |
+ * MA 02110-1301, USA. |
|
20 |
+ */ |
|
21 |
+#include <check.h> |
|
22 |
+#include <fcntl.h> |
|
23 |
+#include "checks.h" |
|
24 |
+#include "../libclamav/dconf.h" |
|
25 |
+#include "../libclamav/htmlnorm.h" |
|
26 |
+#include "../libclamav/others.h" |
|
27 |
+ |
|
28 |
+static char *dir; |
|
29 |
+static struct cli_dconf *dconf; |
|
30 |
+ |
|
31 |
+static void htmlnorm_setup(void) |
|
32 |
+{ |
|
33 |
+ dconf = cli_dconf_init(); |
|
34 |
+ dir = cli_gentemp(NULL); |
|
35 |
+ fail_unless(!!dconf, "failed to init dconf"); |
|
36 |
+ fail_unless(!!dir, "cli_gentemp failed"); |
|
37 |
+} |
|
38 |
+ |
|
39 |
+static void htmlnorm_teardown(void) |
|
40 |
+{ |
|
41 |
+ free(dconf); |
|
42 |
+ fail_unless(cli_rmdirs(dir) == 0, "rmdirs failed"); |
|
43 |
+ free(dir); |
|
44 |
+ dir = NULL; |
|
45 |
+} |
|
46 |
+ |
|
47 |
+static struct test { |
|
48 |
+ const char *input; |
|
49 |
+ const char *nocommentref; |
|
50 |
+ const char *notagsref; |
|
51 |
+ const char *jsref; |
|
52 |
+} tests[] = { |
|
53 |
+ /* NULL means don't test it */ |
|
54 |
+ {"input/htmlnorm_buf.html","buf.nocomment.ref","buf.notags.ref",NULL}, |
|
55 |
+ {"input/htmlnorm_encode.html","encode.nocomment.ref",NULL,"encode.js.ref"}, |
|
56 |
+ {"input/htmlnorm_js_test.html","js.nocomment.ref",NULL,"js.js.ref"}, |
|
57 |
+ {"input/htmlnorm_test.html","test.nocomment.ref","test.notags.ref",NULL}, |
|
58 |
+ {"input/htmlnorm_urls.html","urls.nocomment.ref","urls.notags.ref",NULL} |
|
59 |
+}; |
|
60 |
+ |
|
61 |
+#ifdef CHECK_HAVE_LOOPS |
|
62 |
+ |
|
63 |
+static void check_dir(const char *dir, const struct test *test) |
|
64 |
+{ |
|
65 |
+ char filename[4096]; |
|
66 |
+ int fd, reffd; |
|
67 |
+ |
|
68 |
+ if (test->nocommentref) { |
|
69 |
+ snprintf(filename, sizeof(filename), "%s/nocomment.html", dir); |
|
70 |
+ fd = open(filename, O_RDONLY); |
|
71 |
+ fail_unless(fd > 0,"unable to open: %s", filename); |
|
72 |
+ reffd = open_testfile(test->nocommentref); |
|
73 |
+ |
|
74 |
+ diff_files(fd, reffd); |
|
75 |
+ |
|
76 |
+ close(reffd); |
|
77 |
+ close(fd); |
|
78 |
+ } |
|
79 |
+ if (test->notagsref) { |
|
80 |
+ snprintf(filename, sizeof(filename), "%s/notags.html", dir); |
|
81 |
+ fd = open(filename, O_RDONLY); |
|
82 |
+ fail_unless(fd > 0,"unable to open: %s", filename); |
|
83 |
+ reffd = open_testfile(test->notagsref); |
|
84 |
+ |
|
85 |
+ diff_files(fd, reffd); |
|
86 |
+ |
|
87 |
+ close(reffd); |
|
88 |
+ close(fd); |
|
89 |
+ } |
|
90 |
+ if (test->jsref) { |
|
91 |
+ snprintf(filename, sizeof(filename), "%s/javascript", dir); |
|
92 |
+ fd = open(filename, O_RDONLY); |
|
93 |
+ fail_unless(fd > 0,"unable to open: %s", filename); |
|
94 |
+ reffd = open_testfile(test->jsref); |
|
95 |
+ |
|
96 |
+ diff_files(fd, reffd); |
|
97 |
+ |
|
98 |
+ close(reffd); |
|
99 |
+ close(fd); |
|
100 |
+ } |
|
101 |
+} |
|
102 |
+ |
|
103 |
+START_TEST (test_htmlnorm_api) |
|
104 |
+{ |
|
105 |
+ int fd; |
|
106 |
+ tag_arguments_t hrefs; |
|
107 |
+ |
|
108 |
+ memset(&hrefs, 0, sizeof(hrefs)); |
|
109 |
+ |
|
110 |
+ fd = open_testfile(tests[_i].input); |
|
111 |
+ fail_unless(fd > 0,"open_testfile failed"); |
|
112 |
+ |
|
113 |
+ |
|
114 |
+ fail_unless(mkdir(dir, 0700) == 0,"mkdir failed"); |
|
115 |
+ fail_unless(html_normalise_fd(fd, dir, NULL, dconf) == 1, "html_normalise_fd failed"); |
|
116 |
+ check_dir(dir, &tests[_i]); |
|
117 |
+ fail_unless(cli_rmdirs(dir) == 0, "rmdirs failed"); |
|
118 |
+ |
|
119 |
+ fail_unless(mkdir(dir, 0700) == 0,"mkdir failed"); |
|
120 |
+ fail_unless(html_normalise_fd(fd, dir, NULL, NULL) == 1, "html_normalise_fd failed"); |
|
121 |
+ fail_unless(cli_rmdirs(dir) == 0, "rmdirs failed"); |
|
122 |
+ |
|
123 |
+ fail_unless(mkdir(dir, 0700) == 0,"mkdir failed"); |
|
124 |
+ fail_unless(html_normalise_fd(fd, dir, &hrefs, dconf) == 1, "html_normalise_fd failed"); |
|
125 |
+ fail_unless(cli_rmdirs(dir) == 0, "rmdirs failed"); |
|
126 |
+ html_tag_arg_free(&hrefs); |
|
127 |
+ |
|
128 |
+ memset(&hrefs, 0, sizeof(hrefs)); |
|
129 |
+ hrefs.scanContents = 1; |
|
130 |
+ fail_unless(mkdir(dir, 0700) == 0,"mkdir failed"); |
|
131 |
+ fail_unless(html_normalise_fd(fd, dir, &hrefs, dconf) == 1, "html_normalise_fd failed"); |
|
132 |
+ fail_unless(cli_rmdirs(dir) == 0, "rmdirs failed"); |
|
133 |
+ html_tag_arg_free(&hrefs); |
|
134 |
+ |
|
135 |
+ close(fd); |
|
136 |
+} |
|
137 |
+END_TEST |
|
138 |
+#endif |
|
139 |
+ |
|
140 |
+Suite *test_htmlnorm_suite(void) |
|
141 |
+{ |
|
142 |
+ Suite *s = suite_create("htmlnorm"); |
|
143 |
+ TCase *tc_htmlnorm_api; |
|
144 |
+ |
|
145 |
+ tc_htmlnorm_api = tcase_create("htmlnorm api"); |
|
146 |
+ suite_add_tcase (s, tc_htmlnorm_api); |
|
147 |
+#ifdef CHECK_HAVE_LOOPS |
|
148 |
+ tcase_add_loop_test(tc_htmlnorm_api, test_htmlnorm_api, 0, sizeof(tests)/sizeof(tests[0])); |
|
149 |
+#endif |
|
150 |
+ tcase_add_unchecked_fixture(tc_htmlnorm_api, |
|
151 |
+ htmlnorm_setup, htmlnorm_teardown); |
|
152 |
+ |
|
153 |
+ return s; |
|
154 |
+} |
... | ... |
@@ -249,83 +249,50 @@ static void tokenizer_test(const char *in, const char *expected, int split) |
249 | 249 |
cli_js_output(state, tmpdir); |
250 | 250 |
snprintf(filename, 1023, "%s/javascript", tmpdir); |
251 | 251 |
|
252 |
- buf = cli_malloc(len + 1); |
|
253 |
- if(!buf) { |
|
254 |
- jstest_teardown(); |
|
255 |
- fail("malloc buffer"); |
|
256 |
- } |
|
257 |
- |
|
258 | 252 |
fd = open(filename, O_RDONLY); |
259 | 253 |
if(fd < 0) { |
260 | 254 |
jstest_teardown(); |
261 | 255 |
fail("failed to open output file: %s", filename); |
262 | 256 |
} |
263 | 257 |
|
264 |
- p = read(fd, buf, len); |
|
265 |
- if(p != len) { |
|
266 |
- close(fd); |
|
267 |
- jstest_teardown(); |
|
268 |
- fail("file is smaller: %lu, expected: %lu", p, len); |
|
269 |
- } |
|
270 |
- p = lseek(fd, 0, SEEK_CUR); |
|
271 |
- fail_unless(p == len, "lseek position incorrect: %ld != %ld", p, len); |
|
272 |
- p = 0; |
|
273 |
- while(len > 0) { |
|
274 |
- char c1 = expected[p]; |
|
275 |
- char c2 = buf[p]; |
|
276 |
- if(c1 != c2) { |
|
277 |
- close(fd); |
|
278 |
- jstest_teardown(); |
|
279 |
- fail("file contents mismatch at byte: %lu, was: %c, expected: %c", p, c2, c1); |
|
280 |
- } |
|
281 |
- p++; |
|
282 |
- len--; |
|
283 |
- } |
|
284 |
- free(buf); |
|
285 |
- p2 = lseek(fd, 0, SEEK_END); |
|
286 |
- if(p != p2) { |
|
287 |
- close(fd); |
|
288 |
- jstest_teardown(); |
|
289 |
- fail("trailing garbage, file size: %ld, expected: %ld", p2, p); |
|
290 |
- } |
|
291 |
- close(fd); |
|
258 |
+ diff_file_mem(fd, expected, len); |
|
292 | 259 |
} |
293 | 260 |
|
294 | 261 |
static const char jstest_buf0[] = |
295 | 262 |
"function foo(a, b) {\n"\ |
296 | 263 |
"var x = 1.9e2*2*a/ 4.;\n"\ |
297 |
-"var y = 'test\\'tst';//var foo=5\n"\ |
|
264 |
+"var y = 'test\\'tst';//var\n"\ |
|
298 | 265 |
"x=b[5],/* multiline\nvar z=6;\nsome*some/other**/"\ |
299 | 266 |
"z=x/y;/* multiline oneline */var t=z/a;\n"\ |
300 | 267 |
"z=[test;testi];"\ |
301 |
-"document.writeln('something');}"; |
|
268 |
+"document.writeln('something\n');}"; |
|
302 | 269 |
|
303 | 270 |
static const char jstest_expected0[] = |
304 |
-"function n000(n001,n002){"\ |
|
271 |
+"<script>function n000(n001,n002){"\ |
|
305 | 272 |
"var n003=190*2*n001/4;"\ |
306 | 273 |
"var n004=\"test\'tst\";"\ |
307 | 274 |
"n003=n002[5],"\ |
308 | 275 |
"z=n003/n004;var n005=z/n001;"\ |
309 | 276 |
"z=[test;testi];"\ |
310 |
-"document.writeln(\"something\");}"; |
|
277 |
+"document.writeln(\"something \");}</script>"; |
|
311 | 278 |
|
312 | 279 |
static const char jstest_buf1[] = |
313 | 280 |
"function () { var id\\u1234tx;}"; |
314 | 281 |
|
315 | 282 |
static const char jstest_expected1[] = |
316 |
-"function(){var n000;}"; |
|
283 |
+"<script>function(){var n000;}</script>"; |
|
317 | 284 |
|
318 | 285 |
static const char jstest_buf2[] = |
319 | 286 |
"function () { var tst=\"a\"+'bc'+ 'd'; }"; |
320 | 287 |
|
321 | 288 |
static const char jstest_expected2[] = |
322 |
-"function(){var n000=\"abcd\";}"; |
|
289 |
+"<script>function(){var n000=\"abcd\";}</script>"; |
|
323 | 290 |
|
324 | 291 |
static const char jstest_buf3[] = |
325 | 292 |
"dF('bmfsu%2639%2638x11u%2638%263%3A%264C1');"; |
326 | 293 |
|
327 | 294 |
static const char jstest_expected3[] = |
328 |
-"alert(\"w00t\");"; |
|
295 |
+"<script>alert(\"w00t\");</script>"; |
|
329 | 296 |
|
330 | 297 |
#define B64 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" |
331 | 298 |
|
... | ... |
@@ -334,61 +301,61 @@ static char jstest_buf4[] = |
334 | 334 |
"qbphzrag.jevgr(harfpncr('%3P%73%63%72%69%70%74%20%6P%61%6R%67%75%61%67%65%3Q%22%6N%61%76%61%73%63%72%69%70%74%22%3R%66%75%6R%63%74%69%6S%6R%20%64%46%28%73%29%7O%76%61%72%20%73%31%3Q%75%6R%65%73%63%61%70%65%28%73%2R%73%75%62%73%74%72%28%30%2P%73%2R%6P%65%6R%67%74%68%2Q%31%29%29%3O%20%76%61%72%20%74%3Q%27%27%3O%66%6S%72%28%69%3Q%30%3O%69%3P%73%31%2R%6P%65%6R%67%74%68%3O%69%2O%2O%29%74%2O%3Q%53%74%72%69%6R%67%2R%66%72%6S%6Q%43%68%61%72%43%6S%64%65%28%73%31%2R%63%68%61%72%43%6S%64%65%41%74%28%69%29%2Q%73%2R%73%75%62%73%74%72%28%73%2R%6P%65%6R%67%74%68%2Q%31%2P%31%29%29%3O%64%6S%63%75%6Q%65%6R%74%2R%77%72%69%74%65%28%75%6R%65%73%63%61%70%65%28%74%29%29%3O%7Q%3P%2S%73%63%72%69%70%74%3R'));riny(qS('tV%285%3O%285%3Nsdwjl%28585%3N7%28586Q%28585%3N7%3P%7P55l%28585%3N7%3P%28585%3N7%28586R%28585%3N8T5%285%3N%285%3P%286R3'));"; |
335 | 335 |
|
336 | 336 |
static char jstest_expected4[] = |
337 |
-"qbphzrag.jevgr(\"<fpevcg ynathntr=\"wninfpevcg\">shapgvba qs(f){ine f1=harfpncr(f.fhofge(0,f.yratgu-1)); ine g='';sbe(v=0;v<f1.yratgu;v++)g+=fgevat.sebzpunepbqr(f1.punepbqrng(v)-f.fhofge(f.yratgu-1,1));qbphzrag.jevgr(harfpncr(g));}</fpevcg>\");riny();nyreg(\"j00g\");"; |
|
337 |
+"<fpevcg>qbphzrag.jevgr(\"<fpevcg ynathntr=\"wninfpevcg\">shapgvba qs(f){ine f1=harfpncr(f.fhofge(0,f.yratgu-1)); ine g='';sbe(v=0;v<f1.yratgu;v++)g+=fgevat.sebzpunepbqr(f1.punepbqrng(v)-f.fhofge(f.yratgu-1,1));qbphzrag.jevgr(harfpncr(g));}</fpevcg>\");riny();nyreg(\"j00g\");</fpevcg>"; |
|
338 | 338 |
|
339 | 339 |
static char jstest_buf5[] = |
340 | 340 |
"shapgvba (c,n,p,x,r,e){}('0(\\'1\\');',2,2,'nyreg|j00g'.fcyvg('|'),0,{});"; |
341 | 341 |
|
342 | 342 |
static const char jstest_expected5[] = |
343 |
-"function(n000,n001,n002,n003,n004,n005){}(alert(\"w00t\"););"; |
|
343 |
+"<script>function(n000,n001,n002,n003,n004,n005){}(alert(\"w00t\"););</script>"; |
|
344 | 344 |
|
345 | 345 |
static const char jstest_buf6[] = |
346 | 346 |
"function $(p,a,c,k,e,d){} something(); $('0(\\'1\\');',2,2,'alert|w00t'.split('|'),0,{});"; |
347 | 347 |
|
348 | 348 |
static const char jstest_expected6[] = |
349 |
-"function n000(n001,n002,n003,n004,n005,n006){}something();$(alert(\"w00t\"););"; |
|
349 |
+"<script>function n000(n001,n002,n003,n004,n005,n006){}something();$(alert(\"w00t\"););</script>"; |
|
350 | 350 |
|
351 | 351 |
static const char jstest_buf7[] = |
352 | 352 |
"var z=\"tst" B64 "tst\";"; |
353 | 353 |
|
354 | 354 |
static const char jstest_expected7[] = |
355 |
-"var n000=\"tst" B64 "tst\";"; |
|
355 |
+"<script>var n000=\"tst" B64 "tst\";</script>"; |
|
356 | 356 |
|
357 | 357 |
static const char jstest_buf8[] = |
358 | 358 |
"var z=\'tst" B64 "tst\';"; |
359 | 359 |
|
360 | 360 |
static const char jstest_expected8[] = |
361 |
-"var n000=\"tst" B64 "tst\";"; |
|
361 |
+"<script>var n000=\"tst" B64 "tst\";</script>"; |
|
362 | 362 |
|
363 | 363 |
static char jstest_buf9[] = |
364 | 364 |
"riny(harfpncr('%61%6p%65%72%74%28%27%74%65%73%74%27%29%3o'));"; |
365 | 365 |
|
366 | 366 |
static const char jstest_expected9[] = |
367 |
-"alert(\"test\");"; |
|
367 |
+"<script>alert(\"test\");</script>"; |
|
368 | 368 |
|
369 | 369 |
static const char jstest_buf10[] = |
370 | 370 |
"function $ $() dF(x); function (p,a,c,k,e,r){function $(){}"; |
371 | 371 |
|
372 | 372 |
static const char jstest_expected10[] = |
373 |
-"function n000 n000()n001(x);function(n002,n003,n004,n005,n006,n007){function n008(){}"; |
|
373 |
+"<script>function n000 n000()n001(x);function(n002,n003,n004,n005,n006,n007){function n008(){}</script>"; |
|
374 | 374 |
|
375 | 375 |
static const char jstest_buf11[] = |
376 | 376 |
"var x=123456789 ;"; |
377 | 377 |
|
378 | 378 |
static const char jstest_expected11[] = |
379 |
-"var n000=123456789;"; |
|
379 |
+"<script>var n000=123456789;</script>"; |
|
380 | 380 |
|
381 | 381 |
static const char jstest_buf12[] = |
382 | 382 |
"var x='test\\u0000test';"; |
383 | 383 |
|
384 | 384 |
static const char jstest_expected12[] = |
385 |
-"var n000=\"test\x1test\";"; |
|
385 |
+"<script>var n000=\"test\x1test\";</script>"; |
|
386 | 386 |
|
387 | 387 |
static const char jstest_buf13[] = |
388 | 388 |
"var x\\s12345"; |
389 | 389 |
|
390 | 390 |
static const char jstest_expected13[] = |
391 |
-"var n000"; |
|
391 |
+"<script>var n000</script>"; |
|
392 | 392 |
|
393 | 393 |
|
394 | 394 |
static struct { |
... | ... |
@@ -430,7 +397,10 @@ START_TEST (js_buffer) |
430 | 430 |
const size_t len = 512*1024; |
431 | 431 |
const char s[] = "x=\""; |
432 | 432 |
const char e[] = "\""; |
433 |
+ const char s_exp[] = "<script>"; |
|
434 |
+ const char e_exp[] = "</script>"; |
|
433 | 435 |
char *tst = malloc(len); |
436 |
+ char *exp = malloc(len + sizeof(s_exp) + sizeof(e_exp) - 2); |
|
434 | 437 |
|
435 | 438 |
fail_unless(!!tst, "malloc"); |
436 | 439 |
|
... | ... |
@@ -438,7 +408,11 @@ START_TEST (js_buffer) |
438 | 438 |
strncpy(tst, s, strlen(s)); |
439 | 439 |
strncpy(tst + len - sizeof(e), e, sizeof(e)); |
440 | 440 |
|
441 |
- tokenizer_test(tst,tst,1); |
|
441 |
+ strncpy(exp, s_exp, len); |
|
442 |
+ strncpy(exp + sizeof(s_exp) - 1, tst, len-1); |
|
443 |
+ strncpy(exp + sizeof(s_exp) + len - 2, e_exp, sizeof(e_exp)); |
|
444 |
+ |
|
445 |
+ tokenizer_test(tst,exp,1); |
|
442 | 446 |
free(tst); |
443 | 447 |
} |
444 | 448 |
END_TEST |
... | ... |
@@ -10,6 +10,10 @@ Suite *test_regex_suite(void); |
10 | 10 |
Suite *test_disasm_suite(void); |
11 | 11 |
Suite *test_uniq_suite(void); |
12 | 12 |
Suite *test_matchers_suite(void); |
13 |
+Suite *test_htmlnorm_suite(void); |
|
13 | 14 |
void errmsg_expected(void); |
14 | 15 |
int open_testfile(const char *name); |
16 |
+void diff_files(int fd, int reffd); |
|
17 |
+void diff_file_mem(int fd, const char *ref, size_t len); |
|
18 |
+ |
|
15 | 19 |
#endif |
16 | 20 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,2 @@ |
0 |
+<script><!--function n000(){alert("test@<test> ");}</script> |
|
1 |
+<script><!--function n000(){var n001="fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";</script> |
|
0 | 2 |
\ No newline at end of file |
1 | 3 |
new file mode 100644 |
... | ... |
@@ -0,0 +1 @@ |
0 |
+<script language="jscript.encode"><script language="javascript"><!--// //comment1 //comment2functionfoo(){alert("test@<test>");}//--></script><script language="jscript.encode"><script language="javascript"><!--// functionfoo(){varx="fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff";//--></script> |
|
0 | 1 |
\ No newline at end of file |
3 | 4 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,7 @@ |
0 |
+<script language='JScript.Encode'><!--// |
|
1 |
+//comment1 |
|
2 |
+//comment2#@~^LAAAAA==W!x^DkKxP6WKc#Pls+MYcvD+/D@$@!D+/D@*@#@&E#p8Vg0AAA==^#~@ |
|
3 |
+//--></script> |
|
4 |
+<script language='JScript.Encode'><!--// |
|
5 |
+#@~^JyAAAA==@#@&0; mDkW P6GWv#~ @#@&7-mDPXxJwsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswsswooswswsosoowsoswoswsoowssoowsoswowsowswsswswoswsoswsoowsswoswJi@#@&58gIAA==^#~@ |
|
6 |
+//--></script> |
0 | 7 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,13 @@ |
0 |
+<script> |
|
1 |
+ function() { var x = "htmlJS"+"testsignature"; } |
|
2 |
+</script> |
|
3 |
+<script> |
|
4 |
+ <!-- |
|
5 |
+ </something> |
|
6 |
+ function() { var x = "htmlJS"+"testsignature"; } |
|
7 |
+ --> |
|
8 |
+</script> |
|
9 |
+<script> |
|
10 |
+ //some comment |
|
11 |
+ function() { var x = "htmlJS"+"testsignature"; } |
|
12 |
+</script> |
2 | 15 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,8 @@ |
0 |
+ <form action="fake.example.com"> |
|
1 |
+ <img src="real.example.com"> |
|
2 |
+ <img dynsrc="real.example.com"> |
|
3 |
+ <a title="öreal.example.com" href="fake.example.com">real.example.com<a |
|
4 |
+ href="real.example.com">real.example.com</a> |
|
5 |
+ <iframe src='fake.example.com'> |
|
6 |
+ <area href='real.example.com'> |
|
7 |
+ </form> |