richter     2002/11/10 22:47:17

  Modified:    .        Tag: Embperl2c Changes.pod DOM.xs epcmd2.c epdom.c
               test/cmp2 Tag: Embperl2c hidden.htm input.htm
               test/html Tag: Embperl2c hidden.htm input.htm
  Log:
  fix escaping inside of html attributes
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.129.4.100 +5 -0      embperl/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Changes.pod,v
  retrieving revision 1.129.4.99
  retrieving revision 1.129.4.100
  diff -u -r1.129.4.99 -r1.129.4.100
  --- Changes.pod       16 Oct 2002 06:48:00 -0000      1.129.4.99
  +++ Changes.pod       11 Nov 2002 06:47:16 -0000      1.129.4.100
  @@ -36,6 +36,11 @@
        Bug reported by Saadiq Rodgers-King.
      - Added [$last$], [$next$], [$redo$] and documented [* next *] etc.
      - Readdeded missing MailFormTo and added test for it.
  +   - Fixed escaping inside of html attributes of Embperl generated tags like input
  +     and [$ hidden $]. 
  +   - checked and selected attributes are now correctly set when values contains
  +     entities (e.g. <)
  +      
   
   =head1 2.0b8  (BETA)  25. Juni 2002
   
  
  
  
  1.1.2.28  +10 -2     embperl/DOM.xs
  
  Index: DOM.xs
  ===================================================================
  RCS file: /home/cvs/embperl/DOM.xs,v
  retrieving revision 1.1.2.27
  retrieving revision 1.1.2.28
  diff -u -r1.1.2.27 -r1.1.2.28
  --- DOM.xs    21 May 2002 12:09:07 -0000      1.1.2.27
  +++ DOM.xs    11 Nov 2002 06:47:16 -0000      1.1.2.28
  @@ -270,10 +270,14 @@
       char * sA  ;
       tDomTree * pDomTree ;
       tReq * r = CurrReq ;
  +    SV * sEscapedText ;
   CODE:
       sT = SV2String (sText, nText) ;
       sA = SV2String (sAttr, nAttr) ;
   
  +    sEscapedText = Escape (r, sT, nText, r -> Component.nCurrEscMode, NULL, '\0') ;
  +    sT = SV2String (sEscapedText, nText) ;
  +
       pDomTree = DomTree_self (pDomNode -> xDomTree) ;
   
       Element_selfSetAttribut (r -> pApp, pDomTree, Node_self (pDomTree, pDomNode -> 
xNode), r -> Component.nCurrRepeatLevel, sA, nAttr, sT, nText) ;
  @@ -287,12 +291,16 @@
       SV * sText
   PREINIT:
       tReq * r = CurrReq ;
  +    SV * sEscapedText ;
  +    tDomTree * pDomTree ;
   CODE:
       STRLEN nAttr ;
       STRLEN nText ;
       char * sT = SV2String (sText, nText) ;
       char * sA = SV2String (sAttr, nAttr) ;
  -    tDomTree * pDomTree = DomTree_self (xDomTree) ;
  +    sEscapedText = Escape (r, sT, nText, r -> Component.nCurrEscMode, NULL, '\0') ;
  +    sT = SV2String (sEscapedText, nText) ;
  +    pDomTree = DomTree_self (xDomTree) ;
   
       Element_selfSetAttribut (r -> pApp, pDomTree, Node_self (pDomTree, xNode), r -> 
Component.nCurrRepeatLevel, sA, nAttr, sT, nText) ;
   
  
  
  
  1.4.2.23  +10 -2     embperl/epcmd2.c
  
  Index: epcmd2.c
  ===================================================================
  RCS file: /home/cvs/embperl/epcmd2.c,v
  retrieving revision 1.4.2.22
  retrieving revision 1.4.2.23
  diff -u -r1.4.2.22 -r1.4.2.23
  --- epcmd2.c  8 Oct 2002 20:11:40 -0000       1.4.2.22
  +++ epcmd2.c  11 Nov 2002 06:47:16 -0000      1.4.2.23
  @@ -108,7 +108,8 @@
   
        if (SvTYPE (pSV) == SVt_PVHV)
            { /* -> Hash -> check if key exists */
  -         if (hv_exists ((HV *)pSV, (char *)pVal, nValLen))
  +            nValLen = TransHtml (r, (char *)pVal, nValLen) ;
  +            if (hv_exists ((HV *)pSV, (char *)pVal, nValLen))
                {
                bEqual = 1 ;
                hv_store (r -> pThread -> pInputHash, (char *)pName, nNameLen, newSVpv 
((nValLen?((char *)pVal):""), nValLen), 0) ;
  @@ -118,6 +119,7 @@
            {
            STRLEN   dlen ;
            char * pData = SvPV (pSV, dlen) ;
  +            nValLen = TransHtml (r, (char *)pVal, nValLen) ;
            if ((int)dlen == nValLen && strncmp (pVal, pData, dlen) == 0)
                {
                bEqual = 1 ;
  @@ -318,6 +320,7 @@
                       {
                       char * s ;
                    STRLEN     l ;
  +                    SV * sEscapedText ;
                    tNode xInputNode = Node_appendChild (r -> pApp, pDomTree, pNewNode 
-> xNdx, nRepeatLevel, ntypTag, 0, "input", 5, 0, 0, NULL) ;
                       tNode xAttr      = Node_appendChild (r -> pApp, pDomTree, 
xInputNode, nRepeatLevel, ntypAttr, 0, "type", 4, 0, 0, NULL) ;
                                          Node_appendChild (r -> pApp, pDomTree, 
xAttr, nRepeatLevel, ntypAttrValue, 0, "hidden", 6, 0, 0, NULL) ;
  @@ -327,6 +330,8 @@
                             xAttr      = Node_appendChild (r -> pApp, pDomTree, 
xInputNode, nRepeatLevel, ntypAttr, 0, "value", 5, 0, 0, NULL) ;
   
                    s = SvPV (*ppsv, l) ;                         
  +                    sEscapedText = Escape (r, s, l, r -> Component.nCurrEscMode, 
NULL, '\0') ;
  +                    s = SV2String (sEscapedText, l) ;
                          
                          Node_appendChild (r -> pApp, pDomTree, xAttr, nRepeatLevel, 
ntypAttrValue, 0, s, l, 0, 0, NULL) ;
                       }
  @@ -350,6 +355,7 @@
                       {
                       char * s ;
                    STRLEN     l ;
  +                    SV * sEscapedText ;
                    tNode xInputNode = Node_appendChild (r -> pApp, pDomTree, pNewNode 
-> xNdx, nRepeatLevel, ntypTag, 0, "input", 5, 0, 0, NULL) ;
                       tNode xAttr      = Node_appendChild (r -> pApp, pDomTree, 
xInputNode, nRepeatLevel, ntypAttr, 0, "type", 4, 0, 0, NULL) ;
                                          Node_appendChild (r -> pApp, pDomTree, 
xAttr, nRepeatLevel, ntypAttrValue, 0, "hidden", 6, 0, 0, NULL) ;
  @@ -359,6 +365,8 @@
                             xAttr      = Node_appendChild (r -> pApp, pDomTree, 
xInputNode, nRepeatLevel, ntypAttr, 0, "value", 5, 0, 0, NULL) ;
   
                    s = SvPV (psv, l) ;                   
  +                    sEscapedText = Escape (r, s, l, r -> Component.nCurrEscMode, 
NULL, '\0') ;
  +                    s = SV2String (sEscapedText, l) ;
                          
                          Node_appendChild (r -> pApp, pDomTree, xAttr, nRepeatLevel, 
ntypAttrValue, 0, s, l, 0, 0, NULL) ;
                       }
  
  
  
  1.4.2.97  +3 -2      embperl/epdom.c
  
  Index: epdom.c
  ===================================================================
  RCS file: /home/cvs/embperl/epdom.c,v
  retrieving revision 1.4.2.96
  retrieving revision 1.4.2.97
  diff -u -r1.4.2.96 -r1.4.2.97
  --- epdom.c   27 Jun 2002 06:30:02 -0000      1.4.2.96
  +++ epdom.c   11 Nov 2002 06:47:16 -0000      1.4.2.97
  @@ -3414,7 +3414,8 @@
                                    Ndx2StringLen (pAttr -> xValue, s, l) ;
                                    while (isspace (*s) && l > 0)
                                        s++, l-- ;
  -                                 owrite (r, s, l) ;
  +                                    /*OutputEscape (r, s, l, (pAttr -> bFlags & 
aflgEscXML)?Char2XML:(pAttr -> bFlags & aflgEscUrl)?Char2Url:Char2Html, (char)((pAttr 
-> bFlags & aflgEscChar)?'\\':0)) ;*/
  +                                    owrite (r, s, l) ;
                                    nLastLen += l ;
                                    }
                                if (pAttr -> xName != xNoName)
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.3   +18 -18    embperl/test/cmp2/hidden.htm
  
  Index: hidden.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp2/hidden.htm,v
  retrieving revision 1.1.2.2
  retrieving revision 1.1.2.3
  diff -u -r1.1.2.2 -r1.1.2.3
  --- hidden.htm        4 May 2001 06:08:18 -0000       1.1.2.2
  +++ hidden.htm        11 Nov 2002 06:47:17 -0000      1.1.2.3
  @@ -9,43 +9,43 @@
       <p>&nbsp;</p>
   
        a1<input type="hidden" name="feld1" value="Wert1"><input type="hidden" 
name="feld2" value="Wert2"><input type="hidden" name="feld3" value="Wert3"><input 
type="hidden" name="feld4" value="Wert4">
  -     a2<input type="hidden" name="feld1" value="Pfalz"><input type="hidden" 
name="feld2" value="Rheinhessen">
  -     a3<input type="hidden" name="feld2" value="Rheinhessen">
  -     a4<input type="hidden" name="feld2" value="Rheinhessen">
  -     a5<input type="hidden" name="feld1" value="Pfalz"><input type="hidden" 
name="feld2" value="Rheinhessen">
  -     a6<input type="hidden" name="feld2" value="Rheinhessen">
  -     a7<input type="hidden" name="feld2" value="Rheinhessen">
  +     a2<input type="hidden" name="feld1" value="Pfalz"><input type="hidden" 
name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     a3<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     a4<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     a5<input type="hidden" name="feld1" value="Pfalz"><input type="hidden" 
name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     a6<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     a7<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
        a8<input type="hidden" name="feld4" value="Wert4"><input type="hidden" 
name="feld3" value="Wert3"><input type="hidden" name="feld2" value="Wert2"><input 
type="hidden" name="feld1" value="Wert1">
       
        <input type="text" name="feld1" value="Wert1">
   
        b1<input type="hidden" name="feld2" value="Wert2"><input type="hidden" 
name="feld3" value="Wert3"><input type="hidden" name="feld4" value="Wert4">
  -     b2<input type="hidden" name="feld2" value="Rheinhessen">
  -     b3<input type="hidden" name="feld2" value="Rheinhessen">
  -     b4<input type="hidden" name="feld2" value="Rheinhessen">
  -     b5<input type="hidden" name="feld2" value="Rheinhessen">
  -     b6<input type="hidden" name="feld2" value="Rheinhessen">
  +     b2<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     b3<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     b4<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     b5<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     b6<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
        
   
       <input type="text" name="feld2" value="Wert2">
       
        c1<input type="hidden" name="feld3" value="Wert3"><input type="hidden" 
name="feld4" value="Wert4">
        c2
  -     c3<input type="hidden" name="feld2" value="Rheinhessen">
  -     c4<input type="hidden" name="feld2" value="Rheinhessen">
  +     c3<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     c4<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
        c5
  -     c6<input type="hidden" name="feld2" value="Rheinhessen">
  +     c6<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
   
        <input type="text" name="feld3" value="Wert3">
       <input type="text" name="feld4" value="Wert4">
       
        d1
        d2
  -     d3<input type="hidden" name="feld2" value="Rheinhessen">
  -     d4<input type="hidden" name="feld2" value="Rheinhessen">
  +     d3<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     d4<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
        d5
  -     d6<input type="hidden" name="feld2" value="Rheinhessen">
  -     d7<input type="hidden" name="feld2" value="Rheinhessen">
  +     d6<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
  +     d7<input type="hidden" name="feld2" value="Rhein&quot;hessen&quot;&amp;Pfalz">
   
   
        e1<input type="hidden" name="empty1" value=""><input type="hidden" 
name="empty2" value="">
  
  
  
  1.1.2.12  +71 -5     embperl/test/cmp2/input.htm
  
  Index: input.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp2/input.htm,v
  retrieving revision 1.1.2.11
  retrieving revision 1.1.2.12
  diff -u -r1.1.2.11 -r1.1.2.12
  --- input.htm 16 Oct 2002 06:48:02 -0000      1.1.2.11
  +++ input.htm 11 Nov 2002 06:47:17 -0000      1.1.2.12
  @@ -15,8 +15,10 @@
       <input name="feld5" value="Wert5">
       <input name="feld1" value="Wert1">
       <input name="feld5" value="Wert15">
  -    <input name="feld5a">
  -    <input name="feld5b">
  +    <input name="feld5a" value="a&quot;b">
  +    <input name="feld5b" value="a'b&amp;c">
  +    <input name="feld5a" value="Wert4'y'r">
  +    <input name="feld5b" value="&quot;Wert5&quot;">
       <input name="feld1" value="">
       <input name="feld5" value="">
       <input type="text">
  @@ -56,7 +58,7 @@
   
   
       <input type="checkbox" name="dec" checked value="a & b">
  -    <input type="checkbox" name="dec" value="a &amp; b">
  +    <input type="checkbox" name="dec" checked value="a &amp; b">
   
   
       <textarea name="feld1"></textarea>
  @@ -149,6 +151,30 @@
                <option>Wert5\#\\'#''
        </select>
   
  +     <select name="feld5b">
  +             <option value="1">1</option>
  +             <option value="2">2</option>
  +             <option value="&quot;Wert5&quot;" selected>3</option>
  +     </select>
  +
  +     <select name="feld5b">
  +             <option>Wert3'x</option>
  +             <option>Wert4'y'r</option>
  +             <option selected>&quot;Wert5&quot;</option>
  +             <option>Wert3'x</option>
  +             <option selected>"Wert5"</option>
  +             <option>Wert3'x</option>
  +     </select>
  +
  +     <select name="feld5b">
  +             <option>Wert3'x
  +             <option>Wert4'y'r
  +             <option>&quot;Wert5&quot;
  +             <option>Wert3'x
  +             <option>"Wert5"
  +             <option>Wert3'x
  +     </select>
  +
        <select name="mult" multiple>
                <option value="Wert1">Wert1</option>
                <option value="Wert2">Wert2</option>
  @@ -171,8 +197,32 @@
                <option value="Wert8">Wert8</option>
        </select>
   
  +     <select name="escmult" multiple>
  +             <option value="Wert1">Wert1</option>
  +             <option value="Wert2">Wert2</option>
  +             <option value="Wert3" selected>Wert3</option>
  +             <option value="Wert4">Wert4</option>
  +             <option value="Wert5">Wert5</option>
  +             <option value="Wert6">Wert6</option>
  +             <option value="Wert7">Wert7</option>
  +             <option value="Wert8">Wert8</option>
  +             <option value="a&gt;b" selected>a>b</option>
  +     </select>
  +
  +     <select name="escmult" multiple>
  +             <option value="Wert1">Wert1</option>
  +             <option value="Wert2">Wert2</option>
  +             <option value="Wert3" selected>Wert3</option>
  +             <option value="Wert4">Wert4</option>
  +             <option value="Wert5">Wert5</option>
  +             <option value="Wert6">Wert6</option>
  +             <option value="Wert7">Wert7</option>
  +             <option value="Wert8">Wert8</option>
  +             <option value="a&gt;b" selected>a>b</option>
  +     </select>
  +
        
  -     ks = cb1 cb2 cb5 cb6 cb7 cb8 dec feld1 feld2 feld3 feld4 feld5 feld5a feld6 
feld7 feld8 mult neu1 neu2 neu3 undef<p>
  +     ks = cb1 cb2 cb5 cb6 cb7 cb8 dec escmult feld1 feld2 feld3 feld4 feld5 feld5a 
feld5b feld6 feld7 feld8 mult neu1 neu2 neu3 undef<p>
   
        <table border=9>
                <tr>
  @@ -204,6 +254,10 @@
                </tr>
        
                <tr>
  +                     <td>escmult</td><td>a&gt;b</td>
  +             </tr>
  +     
  +             <tr>
                        <td>feld1</td><td>text1</td>
                </tr>
        
  @@ -228,6 +282,10 @@
                </tr>
        
                <tr>
  +                     <td>feld5b</td><td>&quot;Wert5&quot;</td>
  +             </tr>
  +     
  +             <tr>
                        <td>feld6</td><td>Wert6</td>
                </tr>
        
  @@ -475,7 +533,7 @@
                <input type="text" name="feld1" value="">
                <input type="text" name="feld1" value="">
           </p>
  -     ks = cb1 cb2 cb5 cb6 cb7 cb8 dec feld1 feld2 feld3 feld4 feld5 feld5a feld6 
feld7 feld8 mult neu1 neu2 neu3 ta undef<p>
  +     ks = cb1 cb2 cb5 cb6 cb7 cb8 dec escmult feld1 feld2 feld3 feld4 feld5 feld5a 
feld5b feld6 feld7 feld8 mult neu1 neu2 neu3 ta undef<p>
   
        <table border=10>
                <tr>
  @@ -507,6 +565,10 @@
                </tr>
        
                <tr>
  +                     <td>escmult</td><td>a&gt;b</td>
  +             </tr>
  +     
  +             <tr>
                        <td>feld1</td><td></td>
                </tr>
        
  @@ -528,6 +590,10 @@
        
                <tr>
                        <td>feld5a</td><td>Wert4'y'r</td>
  +             </tr>
  +     
  +             <tr>
  +                     <td>feld5b</td><td>&quot;Wert5&quot;</td>
                </tr>
        
                <tr>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.3.6.2   +1 -1      embperl/test/html/hidden.htm
  
  Index: hidden.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/hidden.htm,v
  retrieving revision 1.3.6.1
  retrieving revision 1.3.6.2
  diff -u -r1.3.6.1 -r1.3.6.2
  --- hidden.htm        4 May 2001 06:08:19 -0000       1.3.6.1
  +++ hidden.htm        11 Nov 2002 06:47:17 -0000      1.3.6.2
  @@ -7,7 +7,7 @@
   
   [-
   $regs{feld1} = 'Pfalz' ;
  -$regs{feld2} = 'Rheinhessen' ;
  +$regs{feld2} = 'Rhein"hessen"&Pfalz' ;
   
   $kats{feld1} = 'Kultur' ;
   
  
  
  
  1.10.4.14 +49 -0     embperl/test/html/input.htm
  
  Index: input.htm
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/input.htm,v
  retrieving revision 1.10.4.13
  retrieving revision 1.10.4.14
  diff -u -r1.10.4.13 -r1.10.4.14
  --- input.htm 16 Oct 2002 06:48:02 -0000      1.10.4.13
  +++ input.htm 11 Nov 2002 06:47:17 -0000      1.10.4.14
  @@ -157,6 +157,30 @@
                <option>Wert5\#\\'#''
        </select>
   
  +     <select name="feld5b">
  +             <option value="1">1</option>
  +             <option value="2">2</option>
  +             <option value="&quot;Wert5&quot;">3</option>
  +     </select>
  +
  +     <select name="feld5b">
  +             <option>Wert3'x</option>
  +             <option>Wert4'y'r</option>
  +             <option>&quot;Wert5&quot;</option>
  +             <option>Wert3'x</option>
  +             <option>"Wert5"</option>
  +             <option>Wert3'x</option>
  +     </select>
  +
  +     <select name="feld5b">
  +             <option>Wert3'x
  +             <option>Wert4'y'r
  +             <option>&quot;Wert5&quot;
  +             <option>Wert3'x
  +             <option>"Wert5"
  +             <option>Wert3'x
  +     </select>
  +
        <select name="mult" multiple>
                <option value="Wert1">Wert1</option>
                <option value="Wert2">Wert2</option>
  @@ -179,6 +203,31 @@
                <option value="Wert8" selected>Wert8</option>
        </select>
   
  +     <select name="escmult" multiple>
  +             <option value="Wert1">Wert1</option>
  +             <option value="Wert2">Wert2</option>
  +             <option value="Wert3">Wert3</option>
  +             <option value="Wert4">Wert4</option>
  +             <option value="Wert5">Wert5</option>
  +             <option value="Wert6">Wert6</option>
  +             <option value="Wert7">Wert7</option>
  +             <option value="Wert8">Wert8</option>
  +             <option value="a&gt;b">a>b</option>
  +     </select>
  +
  +     <select name="escmult" multiple>
  +             <option value="Wert1" selected>Wert1</option>
  +             <option value="Wert2" selected>Wert2</option>
  +             <option value="Wert3" selected>Wert3</option>
  +             <option value="Wert4" selected>Wert4</option>
  +             <option value="Wert5" selected>Wert5</option>
  +             <option value="Wert6" selected>Wert6</option>
  +             <option value="Wert7" selected>Wert7</option>
  +             <option value="Wert8" selected>Wert8</option>
  +             <option value="a&gt;b" selected>a>b</option>
  +     </select>
  +
  +     
        
        ks = [+ do { @ks = sort keys %idat ; "@ks" } +]<p>
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to