Fossil SCM
Fix handling of byte sequence \xF4\x00 in utf-8 validation. Now all tests pass again. Thanks to Scott Robinson for discovering this!
Commit
5684672ab72780f7fe5f6c1909ae3a6e21f21997
Parent
72df287cf3556a0…
1 file changed
+1
-1
+1
-1
| --- src/lookslike.c | ||
| +++ src/lookslike.c | ||
| @@ -157,11 +157,11 @@ | ||
| 157 | 157 | c = *z; |
| 158 | 158 | while( --n>0 ){ |
| 159 | 159 | c2 = c; |
| 160 | 160 | c = *++z; |
| 161 | 161 | if( c2>=0x80 ){ |
| 162 | - if( ((c2<0xc2) || (c2>=0xf4) || ((c&0xc0)!=0x80)) && | |
| 162 | + if( ((c&0xc0)!=0x80) || ((c2<0xc2) || (c2>=0xf4)) && | |
| 163 | 163 | (((c2!=0xf4) || (c>=0x90)) && ((c2!=0xc0) || (c!=0x80))) ){ |
| 164 | 164 | return LOOK_INVALID; /* Invalid UTF-8 */ |
| 165 | 165 | } |
| 166 | 166 | if( c2>=0xe0 ){ |
| 167 | 167 | if ((c2==0xf0 && c<0x90)||(c2==0xe0 && c<0xa0)){ |
| 168 | 168 |
| --- src/lookslike.c | |
| +++ src/lookslike.c | |
| @@ -157,11 +157,11 @@ | |
| 157 | c = *z; |
| 158 | while( --n>0 ){ |
| 159 | c2 = c; |
| 160 | c = *++z; |
| 161 | if( c2>=0x80 ){ |
| 162 | if( ((c2<0xc2) || (c2>=0xf4) || ((c&0xc0)!=0x80)) && |
| 163 | (((c2!=0xf4) || (c>=0x90)) && ((c2!=0xc0) || (c!=0x80))) ){ |
| 164 | return LOOK_INVALID; /* Invalid UTF-8 */ |
| 165 | } |
| 166 | if( c2>=0xe0 ){ |
| 167 | if ((c2==0xf0 && c<0x90)||(c2==0xe0 && c<0xa0)){ |
| 168 |
| --- src/lookslike.c | |
| +++ src/lookslike.c | |
| @@ -157,11 +157,11 @@ | |
| 157 | c = *z; |
| 158 | while( --n>0 ){ |
| 159 | c2 = c; |
| 160 | c = *++z; |
| 161 | if( c2>=0x80 ){ |
| 162 | if( ((c&0xc0)!=0x80) || ((c2<0xc2) || (c2>=0xf4)) && |
| 163 | (((c2!=0xf4) || (c>=0x90)) && ((c2!=0xc0) || (c!=0x80))) ){ |
| 164 | return LOOK_INVALID; /* Invalid UTF-8 */ |
| 165 | } |
| 166 | if( c2>=0xe0 ){ |
| 167 | if ((c2==0xf0 && c<0x90)||(c2==0xe0 && c<0xa0)){ |
| 168 |