Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Mark Martinec (via RT) <perlbug-followup <at> perl.org>
Subject: [perl #69973] Invalid and tainted utf-8 char crashes perl 5.10.1 in regexp evaluation
Newsgroups: gmane.comp.lang.perl.perl5.porters
Date: Thursday 22nd October 2009 19:47:22 UTC (over 8 years ago)
# New Ticket Created by  Mark Martinec 
# Please include the string:  [perl #69973]
# in the subject line of all future correspondence about this issue. 
# http://rt.perl.org/rt3/Ticket/Display.html?id=69973
>



This is a bug report for perl from [email protected],
generated with the help of perlbug 1.39 running under perl 5.10.1.


-----------------------------------------------------------------
[Please describe your issue here]

Tracking down a reason for crashes of a perl process while processing
certain obfuscated spam messages, it turns out that an utf-8 character
with a large (and invalid) codepoint is causing a perl 5.10.1 crash
while matching such string to a particular regular expression.

This is happening on a FreeBSD 7.2, using perl as installed from ports
with no special settings.

Reducing the actual crashing application to a small test case,
here it is: 


#!/usr/bin/perl -T
  use strict;

  # Here is a HTML snippet from a malicious/obfuscated mail message.
  # Note the last character has an invalid and huge UTF-8 code
  # (as a result of an unrelated bug in HTML::Parser).
  #
  my $t = 'Attention Homeοωnөrs...1ѕt '.
          'Tімe Eνө􆞃';

  $t =~ s/&#(\d+)/chr($1)/ge;    # convert HTML entities to UTF8
  $t .= substr($ENV{PATH},0,0);  # make it tainted

  # show character codes in the resulting string
  print join(", ", map {ord} split(//,$t)), "\n";

  # The following regexp evaluation crashes perl 5.10.1 on FreeBSD.
  # Note that $t must be tainted and must have the UTF8 flag on,
  # otherwise the crash seems to be avoided.

  $t =~ /( |\b)(http:|www\.)/i;


and here is the result (hand wrapped):

  60, 97, 62, 65, 116, 116, 101, 110, 116, 105, 111, 110, 32, 72, 111,
  109, 101, 959, 969, 110, 1257, 114, 115, 46, 46, 46, 49, 1109, 116,
  32, 84, 1110, 1084, 101, 32, 69, 957, 1257, 1075075, 60, 47, 97, 62
  Segmentation fault: 11 (core dumped)


Here is a backtrace as obtained from a core dump
(cut/pasted from screen, the actual 8-bit characters may be wrong):

$ gdb -c perl5.10.1.core /usr/local/bin/perl5.10.1   
GNU gdb 6.1.1 [FreeBSD]                                         
Copyright 2004 Free Software Foundation, Inc.                   
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.                                 
 
There is absolutely no warranty for GDB.  Type "show warranty" for details.
 
This GDB was configured as "amd64-marcel-freebsd"...                       
 
Core was generated by `perl5.10.1'.                                        
 
Program terminated with signal 11, Segmentation fault.                     
 
Reading symbols from
/usr/local/lib/perl5/5.10.1/mach/CORE/libperl.so...done.
Loaded symbols for /usr/local/lib/perl5/5.10.1/mach/CORE/libperl.so        
 
Reading symbols from /lib/libm.so.5...done.                                
 
Loaded symbols for /lib/libm.so.5                                          
 
Reading symbols from /lib/libcrypt.so.4...done.                            
 
Loaded symbols for /lib/libcrypt.so.4                                      
 
Reading symbols from /lib/libutil.so.7...done.                             
 
Loaded symbols for /lib/libutil.so.7                                       
 
Reading symbols from /lib/libc.so.7...done.                                
 
Loaded symbols for /lib/libc.so.7                                          
 
Reading symbols from /libexec/ld-elf.so.1...done.                          
 
Loaded symbols for /libexec/ld-elf.so.1                                    
 
#0  0x00000000408bb101 in S_regmatch (reginfo=0x7fffffffe590,
prog=0x411143a4) at regexec.c:3049
3049                            REXEC_TRIE_READ_CHAR(trie_type, trie,
widecharmap, uc,          

(gdb) bt                                                                   
                    
#0  0x00000000408bb101 in S_regmatch (reginfo=0x7fffffffe590,
prog=0x411143a4) at regexec.c:3049
#1  0x00000000408b7b0a in S_regtry (reginfo=0x7fffffffe590,
startpos=0x7fffffffe6d8) at regexec.c:2355
#2  0x00000000408b6a7a in Perl_regexec_flags (prog=0x4114f1a0,             
                          
    stringarg=0x4111d6c0 "Attention HomeοÏ\211nÓ©rs...1Ñ\225t
TÑ\226мe Eνөô\206\236\203",  
    strend=0x4111d6f3 "/a>",                                               
                          
    strbeg=0x4111d6c0 "Attention HomeοÏ\211nÓ©rs...1Ñ\225t
TÑ\226мe Eνөô\206\236\203", minend=0, 
    sv=0x4113ec48, data=0x0, flags=3) at regexec.c:2146                    
                                
#3  0x00000000407864a3 in Perl_pp_match () at pp_hot.c:1356                
                                
#4  0x000000004073fa4c in Perl_runops_debug () at dump.c:1968              
                                
#5  0x00000000406905d8 in S_run_body (oldscope=1) at perl.c:2431           
                                
#6  0x000000004068f9b0 in perl_run (my_perl=0x41102104) at perl.c:2349     
                                
#7  0x0000000000400bf4 in main (argc=3, argv=0x7fffffffea90,
env=0x7fffffffeab0) at perlmain.c:117          

(gdb)



And lastly, here is a perl debug output using the -Dr command line option:

Compiling REx "( |\b)(http:|www\.)"
Final program:
   1: OPEN1 (3)
   3:   BRANCH (6)
   4:     EXACTF < > (8)
   6:   BRANCH (FAIL)
   7:     BOUND (8)
   8: CLOSE1 (10)
  10: OPEN2 (12)
  12:   TRIE-EXACTF[HWhw] (19)
         
         
  19: CLOSE2 (21)
  21: END (0)
minlen 4 
Omitting $` $& $' support.

EXECUTING...

[...]
Matching REx "( |\b)(http:|www\.)" against "Attention
Home%x{3bf}%x{3c9}n%x{4e9}rs...1%x{455}t T"...
UTF-8 string...
   0 <> <Attenti>         |  1:OPEN1(3)
   0 <> <Attenti>         |  3:BRANCH(6)
   0 <> <Attenti>         |  4:  EXACTF < >(8)
Compiling REx "(^|[/\\])warnings\.pmc?$"
rarest char w at 0
Final program:
   1: OPEN1 (3)
   3:   BRANCH (5)
   4:     BOL (17)
   5:   BRANCH (FAIL)
   6:     ANYOF[/\\][] (17)
  17: CLOSE1 (19)
  19: EXACT  (23)
  23: CURLY {0,1} (27)
  25:   EXACT  (0)
  27: EOL (28)
  28: END (0)
floating "warnings.pm" at 0..1 (checking floating) minlen 11 
Guessing start of match in sv for REx "(^|[/\\])warnings\.pmc?$" against
"/usr/local/lib/perl5/5.10.1/warnings.pm"
Found floating substr "warnings.pm" at offset 28...
Starting position does not contradict /^/m...
Guessed: match at offset 27
Matching REx "(^|[/\\])warnings\.pmc?$" against "/warnings.pm"
  27 <.10.1>     |  1:OPEN1(3)
  27 <.10.1>     |  3:BRANCH(5)
  27 <.10.1>     |  4:  BOL(17)
                                    failed...
  27 <.10.1>     |  5:BRANCH(17)
  27 <.10.1>     |  6:  ANYOF[/\\][](17)
  28 <10.1/>     | 17:  CLOSE1(19)
  28 <10.1/>     | 19:  EXACT (23)
  39  <>       | 23:  CURLY {0,1}(27)
                                    EXACT  can match 0 times out of 1...
  39  <>       | 27:    EOL(28)
  39  <>       | 28:    END(0)
Match successful!
Freeing REx: "(^|[/\\])warnings\.pmc?$"
Compiling REx "^\s+"
synthetic stclass "ANYOF[\11\12\14\15 ][{unicode_all}]".
Final program:
   1: BOL (2)
   2: PLUS (4)
   3:   SPACE (0)
   4: END (0)
stclass ANYOF[\11\12\14\15 ][{unicode_all}] anchored(BOL) minlen 1 
Compiling REx "\s+$"
rarest char 
 at 0
Final program:
   1: PLUS (3)
   2:   SPACE (0)
   3: EOL (4)
   4: END (0)
floating ""$ at 1..2147483647 (checking floating) stclass SPACE plus minlen
1 
Compiling REx "(.+)::"
rarest char : at 0
Final program:
   1: OPEN1 (3)
   3:   PLUS (5)
   4:     REG_ANY (0)
   5: CLOSE1 (7)
   7: EXACT <::> (9)
   9: END (0)
floating "::" at 1..2147483647 (checking floating) plus minlen 3 
Compiling REx "^(?:\w+)$"
rarest char 
 at 0
synthetic stclass "ANYOF[0-9A-Z_a-z][{unicode_all}]".
Final program:
   1: BOL (2)
   2: PLUS (4)
   3:   ALNUM (0)
   4: EOL (5)
   5: END (0)
floating ""$ at 1..2147483647 (checking floating) stclass
ANYOF[0-9A-Z_a-z][{unicode_all}] anchored(BOL) minlen 1 
Compiling REx "^Is(?:\s+|[-_])?"
Final program:
   1: BOL (2)
   2: EXACTF  (4)
   4: CURLYX[0] {0,1} (23)
   6:   BRANCH (9)
   7:     PLUS (22)
   8:       SPACE (0)
   9:   BRANCH (FAIL)
  10:     ANYOF[\-_][] (22)
  21:   TAIL (22)
  22: WHILEM (0)
  23: NOTHING (24)
  24: END (0)
stclass EXACTF  anchored(BOL) minlen 2 
Compiling REx "^(?:(?:General(?:\s+|_)?)?Category|gc)\s*[:=]\s*"
Final program:
   1: BOL (2)
   2: BRANCH (24)
   3:   CURLYX[0] {0,1} (20)
   5:     EXACTF  (8)
   8:     CURLYX[0] {0,1} (18)
  10:       BRANCH (13)
  11:         PLUS (17)
  12:           SPACE (0)
  13:       BRANCH (FAIL)
  14:         EXACTF <_> (17)
  16:       TAIL (17)
  17:     WHILEM (0)
  18:     NOTHING (19)
  19:   WHILEM (0)
  20:   NOTHING (21)
  21:   EXACTF  (28)
  24: BRANCH (FAIL)
  25:   EXACTF  (28)
  27: TAIL (28)
  28: STAR (30)
  29:   SPACE (0)
  30: ANYOF[:=][] (41)
  41: STAR (43)
  42:   SPACE (0)
  43: END (0)
anchored(BOL) minlen 3 
Compiling REx "^(?:Script|sc)\s*[:=]\s*"
Final program:
   1: BOL (2)
   2: EXACTF  (4)
   4: TRIE-EXACTF[Rr] (10)
       
      <> 
  10: STAR (12)
  11:   SPACE (0)
  12: ANYOF[:=][] (23)
  23: STAR (25)
  24:   SPACE (0)
  25: END (0)
stclass EXACTF  anchored(BOL) minlen 3 
Compiling REx "^Block\s*[:=]\s*"
Final program:
   1: BOL (2)
   2: EXACTF  (5)
   5: STAR (7)
   6:   SPACE (0)
   7: ANYOF[:=][] (18)
  18: STAR (20)
  19:   SPACE (0)
  20: END (0)
stclass EXACTF  anchored(BOL) minlen 6 
Compiling REx "^([\w\s]+)[:=]\s*(.*)"
synthetic stclass "ANYOF[\11\12\14\15 0-9A-Z_a-z][+utf8::IsWord
+utf8::IsSpacePerl]".
Final program:
   1: BOL (2)
   2: OPEN1 (4)
   4:   PLUS (17)
   5:     ANYOF[\11\12\14\15 0-9A-Z_a-z][+utf8::IsWord +utf8::IsSpacePerl]
(0)
  17: CLOSE1 (19)
  19: ANYOF[:=][] (30)
  30: STAR (32)
  31:   SPACE (0)
  32: OPEN2 (34)
  34:   STAR (36)
  35:     REG_ANY (0)
  36: CLOSE2 (38)
  38: END (0)
stclass ANYOF[\11\12\14\15 0-9A-Z_a-z][+utf8::IsWord +utf8::IsSpacePerl]
anchored(BOL) minlen 2 
Compiling REx "(?<=[a-z\d])(?:\s+|[-_])(?=[a-z\d])"
Final program:
   1: IFMATCH[-1] (17)
   3:   ANYOF[0-9a-z][+utf8::IsDigit] (15)
  15:   SUCCEED (0)
  16: TAIL (17)
  17: BRANCH (20)
  18:   PLUS (33)
  19:     SPACE (0)
  20: BRANCH (FAIL)
  21:   ANYOF[\-_][] (33)
  32: TAIL (33)
  33: IFMATCH[0] (49)
  35:   ANYOF[0-9a-z][+utf8::IsDigit] (47)
  47:   SUCCEED (0)
  48: TAIL (49)
  49: END (0)
minlen 1 
Compiling REx "^To(?:\w+)$"
rarest char 
 at 0
rarest char T at 0
Final program:
   1: BOL (2)
   2: EXACT  (4)
   4: PLUS (6)
   5:   ALNUM (0)
   6: EOL (7)
   7: END (0)
anchored "To" at 0 floating ""$ at 3..2147483647 (checking anchored)
anchored(BOL) minlen 3 
Compiling REx "^To(Digit|Fold|Lower|Title|Upper)$"
rarest char 
 at 0
rarest char T at 0
Final program:
   1: BOL (2)
   2: EXACT  (4)
   4: OPEN1 (6)
   6:   TRIEC-EXACT[DFLTU] (25)
         
         
         
         
        <Upper> 
  25: CLOSE1 (27)
  27: EOL (28)
  28: END (0)
anchored "To" at 0 floating ""$ at 6..7 (checking anchored) anchored(BOL)
minlen 6 
Compiling REx "^"
Final program:
   1: MBOL (2)
   2: END (0)
stclass END anchored(MBOL) minlen 0 
Compiling REx "^[^0-9a-fA-F]"
Final program:
   1: BOL (2)
   2: ANYOF[\0-/:-@G-`g-\377][{unicode_all}] (13)
  13: END (0)
stclass ANYOF[\0-/:-@G-`g-\377][{unicode_all}] anchored(BOL) minlen 1 
Compiling REx "^([0-9a-fA-F]+)"
synthetic stclass "ANYOF[0-9A-Fa-f][]".
Final program:
   1: BOL (2)
   2: OPEN1 (4)
   4:   PLUS (16)
   5:     ANYOF[0-9A-Fa-f][] (0)
  16: CLOSE1 (18)
  18: END (0)
stclass ANYOF[0-9A-Fa-f][] anchored(BOL) minlen 1 
Compiling REx "^([0-9a-fA-F]+)"
synthetic stclass "ANYOF[0-9A-Fa-f][]".
Final program:
   1: BOL (2)
   2: OPEN1 (4)
   4:   PLUS (16)
   5:     ANYOF[0-9A-Fa-f][] (0)
  16: CLOSE1 (18)
  18: END (0)
stclass ANYOF[0-9A-Fa-f][] anchored(BOL) minlen 1 
Compiling REx "\tXXXX$"
rarest char X at 1
Final program:
   1: EXACT <\tXXXX> (4)
   4: MEOL (5)
   5: END (0)
anchored "%tXXXX"$ at 0 (checking anchored isall) minlen 5 
Compiling REx "^([0-9a-fA-F]+)(?:[\t]([0-9a-fA-F]+)?)(?:[
\t]([0-9a-fA-F]+)"...
rarest char 	 at 0
synthetic stclass "ANYOF[0-9A-Fa-f][]".
Final program:
   1: MBOL (2)
   2: OPEN1 (4)
   4:   PLUS (16)
   5:     ANYOF[0-9A-Fa-f][] (0)
  16: CLOSE1 (18)
  18: EXACT <\t> (20)
  20: CURLYX[1] {0,1} (39)
  22:   OPEN2 (24)
  24:     PLUS (36)
  25:       ANYOF[0-9A-Fa-f][] (0)
  36:   CLOSE2 (38)
  38: WHILEM (0)
  39: NOTHING (40)
  40: CURLYX[2] {0,1} (70)
  42:   ANYOF[\11 ][] (53)
  53:   OPEN3 (55)
  55:     PLUS (67)
  56:       ANYOF[0-9A-Fa-f][] (0)
  67:   CLOSE3 (69)
  69: WHILEM (0)
  70: NOTHING (71)
  71: END (0)
floating "%t" at 1..2147483647 (checking floating) stclass
ANYOF[0-9A-Fa-f][] anchored(MBOL) minlen 2 
Compiling REx "^([^0-9a-fA-F\n])(.*)"
synthetic stclass "ANYOF[\0-\11\13-/:-@G-`g-\377][{unicode_all}]".
Final program:
   1: MBOL (2)
   2: OPEN1 (4)
   4:   ANYOF[\0-\11\13-/:-@G-`g-\377][{unicode_all}] (15)
  15: CLOSE1 (17)
  17: OPEN2 (19)
  19:   STAR (21)
  20:     REG_ANY (0)
  21: CLOSE2 (23)
  23: END (0)
stclass ANYOF[\0-\11\13-/:-@G-`g-\377][{unicode_all}] anchored(MBOL) minlen
1 
Compiling REx "[-+!&]"
Final program:
   1: ANYOF[!&+\-][] (12)
  12: END (0)
stclass ANYOF[!&+\-][] minlen 1 
Compiling REx "::"
rarest char : at 0
Final program:
   1: EXACT <::> (3)
   3: END (0)
anchored "::" at 0 (checking anchored isall) minlen 2 
Compiling REx "^([0-9a-fA-F]+)"
synthetic stclass "ANYOF[0-9A-Fa-f][]".
Final program:
   1: BOL (2)
   2: OPEN1 (4)
   4:   PLUS (16)
   5:     ANYOF[0-9A-Fa-f][] (0)
  16: CLOSE1 (18)
  18: END (0)
stclass ANYOF[0-9A-Fa-f][] anchored(BOL) minlen 1 
                                    failed...
   0 <> <<a>Attenti>         |  6:BRANCH(8)
   0 <> <<a>Attenti>         |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
   1 <<> <a>Attentio>        |  1:OPEN1(3)
   1 <<> <a>Attentio>        |  3:BRANCH(6)
   1 <<> <a>Attentio>        |  4:  EXACTF < >(8)
                                    failed...
   1 <<> <a>Attentio>        |  6:BRANCH(8)
   1 <<> <a>Attentio>        |  7:  BOUND(8)
   1 <<> <a>Attentio>        |  8:  CLOSE1(10)
   1 <<> <a>Attentio>        | 10:  OPEN2(12)
   1 <<> <a>Attentio>        | 12:  TRIE-EXACTF[HWhw](19)
   1 <<> <a>Attentio>        |      State:    1 Accepted:    0 Charid:  0
CP:  61 After State:    0
                                    failed...
                                  BRANCH failed...
   2 <<a> <>Attention>       |  1:OPEN1(3)
   2 <<a> <>Attention>       |  3:BRANCH(6)
   2 <<a> <>Attention>       |  4:  EXACTF < >(8)
                                    failed...
   2 <<a> <>Attention>       |  6:BRANCH(8)
   2 <<a> <>Attention>       |  7:  BOUND(8)
   2 <<a> <>Attention>       |  8:  CLOSE1(10)
   2 <<a> <>Attention>       | 10:  OPEN2(12)
   2 <<a> <>Attention>       | 12:  TRIE-EXACTF[HWhw](19)
   2 <<a> <>Attention>       |      State:    1 Accepted:    0 Charid:  0
CP:  3e After State:    0
                                    failed...
                                  BRANCH failed...
   3 <<a>> <Attention >      |  1:OPEN1(3)
   3 <<a>> <Attention >      |  3:BRANCH(6)
   3 <<a>> <Attention >      |  4:  EXACTF < >(8)
                                    failed...
   3 <<a>> <Attention >      |  6:BRANCH(8)
   3 <<a>> <Attention >      |  7:  BOUND(8)
   3 <<a>> <Attention >      |  8:  CLOSE1(10)
   3 <<a>> <Attention >      | 10:  OPEN2(12)
   3 <<a>> <Attention >      | 12:  TRIE-EXACTF[HWhw](19)
   3 <<a>> <Attention >      |      State:    1 Accepted:    0 Charid:  0
CP:  61 After State:    0
                                    failed...
                                  BRANCH failed...
   4 <<a>A> <ttention H>     |  1:OPEN1(3)
   4 <<a>A> <ttention H>     |  3:BRANCH(6)
   4 <<a>A> <ttention H>     |  4:  EXACTF < >(8)
                                    failed...
   4 <<a>A> <ttention H>     |  6:BRANCH(8)
   4 <<a>A> <ttention H>     |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
   5 <<a>At> <tention Ho>    |  1:OPEN1(3)
   5 <<a>At> <tention Ho>    |  3:BRANCH(6)
   5 <<a>At> <tention Ho>    |  4:  EXACTF < >(8)
                                    failed...
   5 <<a>At> <tention Ho>    |  6:BRANCH(8)
   5 <<a>At> <tention Ho>    |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
   6 <a>Att> <ention Hom>    |  1:OPEN1(3)
   6 <a>Att> <ention Hom>    |  3:BRANCH(6)
   6 <a>Att> <ention Hom>    |  4:  EXACTF < >(8)
                                    failed...
   6 <a>Att> <ention Hom>    |  6:BRANCH(8)
   6 <a>Att> <ention Hom>    |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
   7 <>Atte> <ntion Home>    |  1:OPEN1(3)
   7 <>Atte> <ntion Home>    |  3:BRANCH(6)
   7 <>Atte> <ntion Home>    |  4:  EXACTF < >(8)
                                    failed...
   7 <>Atte> <ntion Home>    |  6:BRANCH(8)
   7 <>Atte> <ntion Home>    |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
   8 <Atten> <tion Home>     |  1:OPEN1(3)
   8 <Atten> <tion Home>     |  3:BRANCH(6)
   8 <Atten> <tion Home>     |  4:  EXACTF < >(8)
                                    failed...
   8 <Atten> <tion Home>     |  6:BRANCH(8)
   8 <Atten> <tion Home>     |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
   9 <ttent> <ion Home>      |  1:OPEN1(3)
   9 <ttent> <ion Home>      |  3:BRANCH(6)
   9 <ttent> <ion Home>      |  4:  EXACTF < >(8)
                                    failed...
   9 <ttent> <ion Home>      |  6:BRANCH(8)
   9 <ttent> <ion Home>      |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  10 <tenti> <on Home>       |  1:OPEN1(3)
  10 <tenti> <on Home>       |  3:BRANCH(6)
  10 <tenti> <on Home>       |  4:  EXACTF < >(8)
                                    failed...
  10 <tenti> <on Home>       |  6:BRANCH(8)
  10 <tenti> <on Home>       |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  11 <entio> <n Home>        |  1:OPEN1(3)
  11 <entio> <n Home>        |  3:BRANCH(6)
  11 <entio> <n Home>        |  4:  EXACTF < >(8)
                                    failed...
  11 <entio> <n Home>        |  6:BRANCH(8)
  11 <entio> <n Home>        |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  12 <ntion> < Home>         |  1:OPEN1(3)
  12 <ntion> < Home>         |  3:BRANCH(6)
  12 <ntion> < Home>         |  4:  EXACTF < >(8)
  13 <tion > <Home>          |  8:  CLOSE1(10)
  13 <tion > <Home>          | 10:  OPEN2(12)
  13 <tion > <Home>          | 12:  TRIE-EXACTF[HWhw](19)
  13 <tion > <Home>          |      State:    1 Accepted:    0 Charid:  1
CP:  68 After State:    2
  14 <ion H> <ome%x{3bf}>    |      State:    2 Accepted:    0 Charid:  0
CP:  6f After State:    0
                                    failed...
  12 <ntion> < Home>         |  6:BRANCH(8)
  12 <ntion> < Home>         |  7:  BOUND(8)
  12 <ntion> < Home>         |  8:  CLOSE1(10)
  12 <ntion> < Home>         | 10:  OPEN2(12)
  12 <ntion> < Home>         | 12:  TRIE-EXACTF[HWhw](19)
  12 <ntion> < Home>         |      State:    1 Accepted:    0 Charid:  0
CP:  20 After State:    0
                                    failed...
                                  BRANCH failed...
  13 <tion > <Home>          |  1:OPEN1(3)
  13 <tion > <Home>          |  3:BRANCH(6)
  13 <tion > <Home>          |  4:  EXACTF < >(8)
                                    failed...
  13 <tion > <Home>          |  6:BRANCH(8)
  13 <tion > <Home>          |  7:  BOUND(8)
  13 <tion > <Home>          |  8:  CLOSE1(10)
  13 <tion > <Home>          | 10:  OPEN2(12)
  13 <tion > <Home>          | 12:  TRIE-EXACTF[HWhw](19)
  13 <tion > <Home>          |      State:    1 Accepted:    0 Charid:  1
CP:  68 After State:    2
  14 <ion H> <ome%x{3bf}>    |      State:    2 Accepted:    0 Charid:  0
CP:  6f After State:    0
                                    failed...
                                  BRANCH failed...
  14 <ion H> <ome%x{3bf}>    |  1:OPEN1(3)
  14 <ion H> <ome%x{3bf}>    |  3:BRANCH(6)
  14 <ion H> <ome%x{3bf}>    |  4:  EXACTF < >(8)
                                    failed...
  14 <ion H> <ome%x{3bf}>    |  6:BRANCH(8)
  14 <ion H> <ome%x{3bf}>    |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  15 <on Ho> <me%x{3bf}>     |  1:OPEN1(3)
  15 <on Ho> <me%x{3bf}>     |  3:BRANCH(6)
  15 <on Ho> <me%x{3bf}>     |  4:  EXACTF < >(8)
                                    failed...
  15 <on Ho> <me%x{3bf}>     |  6:BRANCH(8)
  15 <on Ho> <me%x{3bf}>     |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  16 <n Hom> <e%x{3bf}>      |  1:OPEN1(3)
  16 <n Hom> <e%x{3bf}>      |  3:BRANCH(6)
  16 <n Hom> <e%x{3bf}>      |  4:  EXACTF < >(8)
                                    failed...
  16 <n Hom> <e%x{3bf}>      |  6:BRANCH(8)
  16 <n Hom> <e%x{3bf}>      |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  17 < Home> <%x{3bf}>       |  1:OPEN1(3)
  17 < Home> <%x{3bf}>       |  3:BRANCH(6)
  17 < Home> <%x{3bf}>       |  4:  EXACTF < >(8)
                                    failed...
  17 < Home> <%x{3bf}>       |  6:BRANCH(8)
  17 < Home> <%x{3bf}>       |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  19 <ome%x{3bf}> <%x{3c9}n> |  1:OPEN1(3)
  19 <ome%x{3bf}> <%x{3c9}n> |  3:BRANCH(6)
  19 <ome%x{3bf}> <%x{3c9}n> |  4:  EXACTF < >(8)
                                    failed...
  19 <ome%x{3bf}> <%x{3c9}n> |  6:BRANCH(8)
  19 <ome%x{3bf}> <%x{3c9}n> |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  21 <e%x{3bf}%x{3c9}> <n%x{4e9}rs>|  1:OPEN1(3)
  21 <e%x{3bf}%x{3c9}> <n%x{4e9}rs>|  3:BRANCH(6)
  21 <e%x{3bf}%x{3c9}> <n%x{4e9}rs>|  4:  EXACTF < >(8)
                                    failed...
  21 <e%x{3bf}%x{3c9}> <n%x{4e9}rs>|  6:BRANCH(8)
  21 <e%x{3bf}%x{3c9}> <n%x{4e9}rs>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  22 <%x{3bf}%x{3c9}n> <%x{4e9}rs.>|  1:OPEN1(3)
  22 <%x{3bf}%x{3c9}n> <%x{4e9}rs.>|  3:BRANCH(6)
  22 <%x{3bf}%x{3c9}n> <%x{4e9}rs.>|  4:  EXACTF < >(8)
                                    failed...
  22 <%x{3bf}%x{3c9}n> <%x{4e9}rs.>|  6:BRANCH(8)
  22 <%x{3bf}%x{3c9}n> <%x{4e9}rs.>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  24 <%x{3c9}n%x{4e9}> <rs...1>|  1:OPEN1(3)
  24 <%x{3c9}n%x{4e9}> <rs...1>|  3:BRANCH(6)
  24 <%x{3c9}n%x{4e9}> <rs...1>|  4:  EXACTF < >(8)
                                    failed...
  24 <%x{3c9}n%x{4e9}> <rs...1>|  6:BRANCH(8)
  24 <%x{3c9}n%x{4e9}> <rs...1>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  25 <%x{3c9}n%x{4e9}r> <s...1>|  1:OPEN1(3)
  25 <%x{3c9}n%x{4e9}r> <s...1>|  3:BRANCH(6)
  25 <%x{3c9}n%x{4e9}r> <s...1>|  4:  EXACTF < >(8)
                                    failed...
  25 <%x{3c9}n%x{4e9}r> <s...1>|  6:BRANCH(8)
  25 <%x{3c9}n%x{4e9}r> <s...1>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  26 <n%x{4e9}rs> <...1>     |  1:OPEN1(3)
  26 <n%x{4e9}rs> <...1>     |  3:BRANCH(6)
  26 <n%x{4e9}rs> <...1>     |  4:  EXACTF < >(8)
                                    failed...
  26 <n%x{4e9}rs> <...1>     |  6:BRANCH(8)
  26 <n%x{4e9}rs> <...1>     |  7:  BOUND(8)
  26 <n%x{4e9}rs> <...1>     |  8:  CLOSE1(10)
  26 <n%x{4e9}rs> <...1>     | 10:  OPEN2(12)
  26 <n%x{4e9}rs> <...1>     | 12:  TRIE-EXACTF[HWhw](19)
  26 <n%x{4e9}rs> <...1>     |      State:    1 Accepted:    0 Charid:  6
CP:  2e After State:    0
                                    failed...
                                  BRANCH failed...
  27 <%x{4e9}rs.> <..1%x{455}>|  1:OPEN1(3)
  27 <%x{4e9}rs.> <..1%x{455}>|  3:BRANCH(6)
  27 <%x{4e9}rs.> <..1%x{455}>|  4:  EXACTF < >(8)
                                    failed...
  27 <%x{4e9}rs.> <..1%x{455}>|  6:BRANCH(8)
  27 <%x{4e9}rs.> <..1%x{455}>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  28 <%x{4e9}rs..> <.1%x{455}t>|  1:OPEN1(3)
  28 <%x{4e9}rs..> <.1%x{455}t>|  3:BRANCH(6)
  28 <%x{4e9}rs..> <.1%x{455}t>|  4:  EXACTF < >(8)
                                    failed...
  28 <%x{4e9}rs..> <.1%x{455}t>|  6:BRANCH(8)
  28 <%x{4e9}rs..> <.1%x{455}t>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  29 <rs...> <1%x{455}t >    |  1:OPEN1(3)
  29 <rs...> <1%x{455}t >    |  3:BRANCH(6)
  29 <rs...> <1%x{455}t >    |  4:  EXACTF < >(8)
                                    failed...
  29 <rs...> <1%x{455}t >    |  6:BRANCH(8)
  29 <rs...> <1%x{455}t >    |  7:  BOUND(8)
  29 <rs...> <1%x{455}t >    |  8:  CLOSE1(10)
  29 <rs...> <1%x{455}t >    | 10:  OPEN2(12)
  29 <rs...> <1%x{455}t >    | 12:  TRIE-EXACTF[HWhw](19)
  29 <rs...> <1%x{455}t >    |      State:    1 Accepted:    0 Charid:  0
CP:  31 After State:    0
                                    failed...
                                  BRANCH failed...
  30 <s...1> <%x{455}t T>    |  1:OPEN1(3)
  30 <s...1> <%x{455}t T>    |  3:BRANCH(6)
  30 <s...1> <%x{455}t T>    |  4:  EXACTF < >(8)
                                    failed...
  30 <s...1> <%x{455}t T>    |  6:BRANCH(8)
  30 <s...1> <%x{455}t T>    |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  32 <..1%x{455}> <t T%x{456}>|  1:OPEN1(3)
  32 <..1%x{455}> <t T%x{456}>|  3:BRANCH(6)
  32 <..1%x{455}> <t T%x{456}>|  4:  EXACTF < >(8)
                                    failed...
  32 <..1%x{455}> <t T%x{456}>|  6:BRANCH(8)
  32 <..1%x{455}> <t T%x{456}>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  33 <.1%x{455}t> < T%x{456}>|  1:OPEN1(3)
  33 <.1%x{455}t> < T%x{456}>|  3:BRANCH(6)
  33 <.1%x{455}t> < T%x{456}>|  4:  EXACTF < >(8)
  34 <1%x{455}t > <T%x{456}> |  8:  CLOSE1(10)
  34 <1%x{455}t > <T%x{456}> | 10:  OPEN2(12)
  34 <1%x{455}t > <T%x{456}> | 12:  TRIE-EXACTF[HWhw](19)
  34 <1%x{455}t > <T%x{456}> |      State:    1 Accepted:    0 Charid:  2
CP:  74 After State:    0
                                    failed...
  33 <.1%x{455}t> < T%x{456}>|  6:BRANCH(8)
  33 <.1%x{455}t> < T%x{456}>|  7:  BOUND(8)
  33 <.1%x{455}t> < T%x{456}>|  8:  CLOSE1(10)
  33 <.1%x{455}t> < T%x{456}>| 10:  OPEN2(12)
  33 <.1%x{455}t> < T%x{456}>| 12:  TRIE-EXACTF[HWhw](19)
  33 <.1%x{455}t> < T%x{456}>|      State:    1 Accepted:    0 Charid:  0
CP:  20 After State:    0
                                    failed...
                                  BRANCH failed...
  34 <1%x{455}t > <T%x{456}> |  1:OPEN1(3)
  34 <1%x{455}t > <T%x{456}> |  3:BRANCH(6)
  34 <1%x{455}t > <T%x{456}> |  4:  EXACTF < >(8)
                                    failed...
  34 <1%x{455}t > <T%x{456}> |  6:BRANCH(8)
  34 <1%x{455}t > <T%x{456}> |  7:  BOUND(8)
  34 <1%x{455}t > <T%x{456}> |  8:  CLOSE1(10)
  34 <1%x{455}t > <T%x{456}> | 10:  OPEN2(12)
  34 <1%x{455}t > <T%x{456}> | 12:  TRIE-EXACTF[HWhw](19)
  34 <1%x{455}t > <T%x{456}> |      State:    1 Accepted:    0 Charid:  2
CP:  74 After State:    0
                                    failed...
                                  BRANCH failed...
  35 <%x{455}t T> <%x{456}>  |  1:OPEN1(3)
  35 <%x{455}t T> <%x{456}>  |  3:BRANCH(6)
  35 <%x{455}t T> <%x{456}>  |  4:  EXACTF < >(8)
                                    failed...
  35 <%x{455}t T> <%x{456}>  |  6:BRANCH(8)
  35 <%x{455}t T> <%x{456}>  |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  37 <t T%x{456}> <%x{43c}e E>|  1:OPEN1(3)
  37 <t T%x{456}> <%x{43c}e E>|  3:BRANCH(6)
  37 <t T%x{456}> <%x{43c}e E>|  4:  EXACTF < >(8)
                                    failed...
  37 <t T%x{456}> <%x{43c}e E>|  6:BRANCH(8)
  37 <t T%x{456}> <%x{43c}e E>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  39 <T%x{456}%x{43c}> <e E%x{3bd}>|  1:OPEN1(3)
  39 <T%x{456}%x{43c}> <e E%x{3bd}>|  3:BRANCH(6)
  39 <T%x{456}%x{43c}> <e E%x{3bd}>|  4:  EXACTF < >(8)
                                    failed...
  39 <T%x{456}%x{43c}> <e E%x{3bd}>|  6:BRANCH(8)
  39 <T%x{456}%x{43c}> <e E%x{3bd}>|  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  40 <%x{456}%x{43c}e> < E%x{3bd}>|  1:OPEN1(3)
  40 <%x{456}%x{43c}e> < E%x{3bd}>|  3:BRANCH(6)
  40 <%x{456}%x{43c}e> < E%x{3bd}>|  4:  EXACTF < >(8)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  8:  CLOSE1(10)
  41 <%x{456}%x{43c}e > <E%x{3bd}>| 10:  OPEN2(12)
  41 <%x{456}%x{43c}e > <E%x{3bd}>| 12:  TRIE-EXACTF[HWhw](19)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|      State:    1 Accepted:    0 Charid:
 0 CP:  65 After State:    0
                                    failed...
  40 <%x{456}%x{43c}e> < E%x{3bd}>|  6:BRANCH(8)
  40 <%x{456}%x{43c}e> < E%x{3bd}>|  7:  BOUND(8)
  40 <%x{456}%x{43c}e> < E%x{3bd}>|  8:  CLOSE1(10)
  40 <%x{456}%x{43c}e> < E%x{3bd}>| 10:  OPEN2(12)
  40 <%x{456}%x{43c}e> < E%x{3bd}>| 12:  TRIE-EXACTF[HWhw](19)
  40 <%x{456}%x{43c}e> < E%x{3bd}>|      State:    1 Accepted:    0 Charid:
 0 CP:  20 After State:    0
                                    failed...
                                  BRANCH failed...
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  1:OPEN1(3)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  3:BRANCH(6)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  4:  EXACTF < >(8)
                                    failed...
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  6:BRANCH(8)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  7:  BOUND(8)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|  8:  CLOSE1(10)
  41 <%x{456}%x{43c}e > <E%x{3bd}>| 10:  OPEN2(12)
  41 <%x{456}%x{43c}e > <E%x{3bd}>| 12:  TRIE-EXACTF[HWhw](19)
  41 <%x{456}%x{43c}e > <E%x{3bd}>|      State:    1 Accepted:    0 Charid:
 0 CP:  65 After State:    0
                                    failed...
                                  BRANCH failed...
  42 <%x{43c}e E> <%x{3bd}>  |  1:OPEN1(3)
  42 <%x{43c}e E> <%x{3bd}>  |  3:BRANCH(6)
  42 <%x{43c}e E> <%x{3bd}>  |  4:  EXACTF < >(8)
                                    failed...
  42 <%x{43c}e E> <%x{3bd}>  |  6:BRANCH(8)
  42 <%x{43c}e E> <%x{3bd}>  |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  44 <e E%x{3bd}> <%x{4e9}>  |  1:OPEN1(3)
  44 <e E%x{3bd}> <%x{4e9}>  |  3:BRANCH(6)
  44 <e E%x{3bd}> <%x{4e9}>  |  4:  EXACTF < >(8)
                                    failed...
  44 <e E%x{3bd}> <%x{4e9}>  |  6:BRANCH(8)
  44 <e E%x{3bd}> <%x{4e9}>  |  7:  BOUND(8)
                                    failed...
                                  BRANCH failed...
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|  1:OPEN1(3)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|  3:BRANCH(6)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|  4:  EXACTF < >(8)
                                    failed...
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|  6:BRANCH(8)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|  7:  BOUND(8)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|  8:  CLOSE1(10)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>| 10:  OPEN2(12)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>| 12:  TRIE-EXACTF[HWhw](19)
  46 <E%x{3bd}%x{4e9}> <%x{106783}>|      State:    1 Accepted:    0
Segmentation fault: 11 (core dumped)



[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
    category=core
    severity=high
---
Site configuration information for perl 5.10.1:

Configured by mark at Thu Oct 22 21:09:57 CEST 2009.

Summary of my perl5 (revision 5 version 10 subversion 1) configuration:
   
  Platform:
    osname=freebsd, osvers=7.2-release-p2, archname=amd64-freebsd
    uname='freebsd dorothy.ijs.si 7.2-release-p2 freebsd 7.2-release-p2 #0:
wed jul 15 15:45:26 cest 2009 lesi@dorothy.ijs.si:usrobjusrsrcsysdorothy
amd64 '
    config_args='-sde -Dprefix=/usr/local
-Darchlib=/usr/local/lib/perl5/5.10.1/mach
-Dprivlib=/usr/local/lib/perl5/5.10.1
-Dman3dir=/usr/local/lib/perl5/5.10.1/perl/man/man3
-Dman1dir=/usr/local/man/man1
-Dsitearch=/usr/local/lib/perl5/site_perl/5.10.1/mach
-Dsitelib=/usr/local/lib/perl5/site_perl/5.10.1 -Dscriptdir=/usr/local/bin
-Dsiteman3dir=/usr/local/lib/perl5/5.10.1/man/man3
-Dsiteman1dir=/usr/local/man/man1 -Ui_malloc -Ui_iconv -Uinstallusrbinperl
-Dcc=cc -Duseshrplib -Dinc_version_list=none
-Dccflags=-DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN" -Doptimize=-g
-DDEBUGGING -Ud_dosuid -Ui_gdbm -Dusethreads=n -Dusemymalloc=n
-Duse64bitint'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN"
-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include',
    optimize='-g',
    cppflags='-DAPPLLIB_EXP="/usr/local/lib/perl5/5.10.1/BSDPAN"
-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -DDEBUGGING -fno-strict-aliasing
-pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.2.1 20070719  [FreeBSD]', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -Wl,-E  -fstack-protector -L/usr/local/lib'
    libpth=/usr/lib /usr/local/lib
    libs=-lgdbm -lm -lcrypt -lutil
    perllibs=-lm -lcrypt -lutil
    libc=, so=so, useshrplib=true, libperl=libperl.so
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' 
-Wl,-R/usr/local/lib/perl5/5.10.1/mach/CORE'
    cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib
-fstack-protector'

Locally applied patches:
    

---
@INC for perl 5.10.1:
    /usr/local/lib/perl5/5.10.1/BSDPAN
    /usr/local/lib/perl5/site_perl/5.10.1/mach
    /usr/local/lib/perl5/site_perl/5.10.1
    /usr/local/lib/perl5/5.10.1/mach
    /usr/local/lib/perl5/5.10.1
    .

---
Environment for perl 5.10.1:
    HOME=/root
    LANG (unset)
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
   
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/mark/bin:/usr/local/bin:/usr/local/sbin:/bin:/sbin:/usr/bin:/usr/sbin
    PERL_BADLANG (unset)
    SHELL=/usr/local/bin/bash</pre>
				<script type="text/javascript">
					document.domain = 'gmane.org';
					document.title = '[perl #69973] Invalid and tainted utf-8 char crashes perl 5.10.1 in regexp evaluation';
				</script>
			</td>
			<td rowspan="2" class="listid">
				<a href="http://dir.gmane.org/gmane.comp.lang.perl.perl5.porters">
					<!-- img src="http://gmane.org/paint-list-id.php?group=gmane.comp.lang.perl.perl5.porters" border="0"-->
				</a>
							</td> 
		</tr>
		<tr>
			<td class="bads" colspan="2">
				 
				<!--
				Get rid of ads<br><a href="http://gmane.org/donate.php">Donate to Gmane</a>
				-->
			</td>
			<td class="maintd" colspan="1" align="left">
			</td>

			</td>
		</tr>
	</tbody>
</table>
<font size="1">CD: 3ms</font>
<!-- Piwik -->
<!-- script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["setDocumentTitle", document.domain + "/" + document.title]);
  _paq.push(["setCookieDomain", "*.gmane.org"]);
  _paq.push(["setDomains", ["*.gmane.org"]]);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//stats.gmane.org/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '3']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<noscript><p><img src="//stats.gmane.org/piwik.php?idsite=3" style="border:0;" alt="" /></p></noscript -->
<!-- End Piwik Code -->
</body>
<script src="/cdn-cgi/scripts/0e574bed/cloudflare-static/email-decode.min.js"></script>