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> </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"hessen"&Pfalz">
+ a3<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
+ a4<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
+ a5<input type="hidden" name="feld1" value="Pfalz"><input type="hidden"
name="feld2" value="Rhein"hessen"&Pfalz">
+ a6<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
+ a7<input type="hidden" name="feld2" value="Rhein"hessen"&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"hessen"&Pfalz">
+ b3<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
+ b4<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
+ b5<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
+ b6<input type="hidden" name="feld2" value="Rhein"hessen"&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"hessen"&Pfalz">
+ c4<input type="hidden" name="feld2" value="Rhein"hessen"&Pfalz">
c5
- c6<input type="hidden" name="feld2" value="Rheinhessen">
+ c6<input type="hidden" name="feld2" value="Rhein"hessen"&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"hessen"&Pfalz">
+ d4<input type="hidden" name="feld2" value="Rhein"hessen"&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"hessen"&Pfalz">
+ d7<input type="hidden" name="feld2" value="Rhein"hessen"&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"b">
+ <input name="feld5b" value="a'b&c">
+ <input name="feld5a" value="Wert4'y'r">
+ <input name="feld5b" value=""Wert5"">
<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 & b">
+ <input type="checkbox" name="dec" checked value="a & 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=""Wert5"" selected>3</option>
+ </select>
+
+ <select name="feld5b">
+ <option>Wert3'x</option>
+ <option>Wert4'y'r</option>
+ <option selected>"Wert5"</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>"Wert5"
+ <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>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>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>b</td>
+ </tr>
+
+ <tr>
<td>feld1</td><td>text1</td>
</tr>
@@ -228,6 +282,10 @@
</tr>
<tr>
+ <td>feld5b</td><td>"Wert5"</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>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>"Wert5"</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=""Wert5"">3</option>
+ </select>
+
+ <select name="feld5b">
+ <option>Wert3'x</option>
+ <option>Wert4'y'r</option>
+ <option>"Wert5"</option>
+ <option>Wert3'x</option>
+ <option>"Wert5"</option>
+ <option>Wert3'x</option>
+ </select>
+
+ <select name="feld5b">
+ <option>Wert3'x
+ <option>Wert4'y'r
+ <option>"Wert5"
+ <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>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>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]