Fossil SCM
Fix a problem with the treatment of unterminated quoted attributes in HTML elements in the wiki formatter.
Commit
48276cfc811da9ad46503a2cabf5e847fbc9e8adae17ab5a64b927ba80059478
Parent
f8e9197de45da67…
1 file changed
+6
-2
+6
-2
| --- src/wikiformat.c | ||
| +++ src/wikiformat.c | ||
| @@ -832,20 +832,24 @@ | ||
| 832 | 832 | while( !fossil_isspace(z[i]) && z[i]!='>' ){ z++; } |
| 833 | 833 | } |
| 834 | 834 | if( attrOk ){ |
| 835 | 835 | p->aAttr[p->nAttr].zValue = zValue; |
| 836 | 836 | p->aAttr[p->nAttr].cTerm = c = z[i]; |
| 837 | - z[i] = 0; | |
| 837 | + if( z[i]==0 ){ | |
| 838 | + i--; | |
| 839 | + }else{ | |
| 840 | + z[i] = 0; | |
| 841 | + } | |
| 838 | 842 | } |
| 839 | 843 | i++; |
| 840 | 844 | } |
| 841 | 845 | if( attrOk ){ |
| 842 | 846 | seen |= aAttribute[iACode].iMask; |
| 843 | 847 | p->nAttr++; |
| 844 | 848 | } |
| 845 | 849 | while( fossil_isspace(z[i]) ){ i++; } |
| 846 | - if( z[i]=='>' || (z[i]=='/' && z[i+1]=='>') ) break; | |
| 850 | + if( z[i]==0 || z[i]=='>' || (z[i]=='/' && z[i+1]=='>') ) break; | |
| 847 | 851 | } |
| 848 | 852 | return seen; |
| 849 | 853 | } |
| 850 | 854 | |
| 851 | 855 | /* |
| 852 | 856 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -832,20 +832,24 @@ | |
| 832 | while( !fossil_isspace(z[i]) && z[i]!='>' ){ z++; } |
| 833 | } |
| 834 | if( attrOk ){ |
| 835 | p->aAttr[p->nAttr].zValue = zValue; |
| 836 | p->aAttr[p->nAttr].cTerm = c = z[i]; |
| 837 | z[i] = 0; |
| 838 | } |
| 839 | i++; |
| 840 | } |
| 841 | if( attrOk ){ |
| 842 | seen |= aAttribute[iACode].iMask; |
| 843 | p->nAttr++; |
| 844 | } |
| 845 | while( fossil_isspace(z[i]) ){ i++; } |
| 846 | if( z[i]=='>' || (z[i]=='/' && z[i+1]=='>') ) break; |
| 847 | } |
| 848 | return seen; |
| 849 | } |
| 850 | |
| 851 | /* |
| 852 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -832,20 +832,24 @@ | |
| 832 | while( !fossil_isspace(z[i]) && z[i]!='>' ){ z++; } |
| 833 | } |
| 834 | if( attrOk ){ |
| 835 | p->aAttr[p->nAttr].zValue = zValue; |
| 836 | p->aAttr[p->nAttr].cTerm = c = z[i]; |
| 837 | if( z[i]==0 ){ |
| 838 | i--; |
| 839 | }else{ |
| 840 | z[i] = 0; |
| 841 | } |
| 842 | } |
| 843 | i++; |
| 844 | } |
| 845 | if( attrOk ){ |
| 846 | seen |= aAttribute[iACode].iMask; |
| 847 | p->nAttr++; |
| 848 | } |
| 849 | while( fossil_isspace(z[i]) ){ i++; } |
| 850 | if( z[i]==0 || z[i]=='>' || (z[i]=='/' && z[i+1]=='>') ) break; |
| 851 | } |
| 852 | return seen; |
| 853 | } |
| 854 | |
| 855 | /* |
| 856 |