Fossil SCM
Fix two bugs (introduced with this branch) that become manifest with invalid UTF-8 sequences.
Commit
b86a2fc7eb209681531ce6df583cdab254a7140b
Parent
70dd8f744f22c89…
1 file changed
+2
+2
| --- src/comformat.c | ||
| +++ src/comformat.c | ||
| @@ -171,10 +171,11 @@ | ||
| 171 | 171 | else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */ |
| 172 | 172 | else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */ |
| 173 | 173 | while( i<lengthBytes-1 && |
| 174 | 174 | cchUTF8<maxUTF8 && |
| 175 | 175 | (zString[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */ |
| 176 | + cchUTF8++; | |
| 176 | 177 | i++; |
| 177 | 178 | } |
| 178 | 179 | } |
| 179 | 180 | } |
| 180 | 181 | return lengthUTF8; |
| @@ -404,10 +405,11 @@ | ||
| 404 | 405 | else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */ |
| 405 | 406 | else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */ |
| 406 | 407 | zBuf[k++] = c; |
| 407 | 408 | while( cchUTF8<maxUTF8 && |
| 408 | 409 | (zText[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */ |
| 410 | + cchUTF8++; | |
| 409 | 411 | zBuf[k++] = zText[++i]; |
| 410 | 412 | } |
| 411 | 413 | } |
| 412 | 414 | else if( fossil_isspace(c) ){ |
| 413 | 415 | si = i; |
| 414 | 416 |
| --- src/comformat.c | |
| +++ src/comformat.c | |
| @@ -171,10 +171,11 @@ | |
| 171 | else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */ |
| 172 | else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */ |
| 173 | while( i<lengthBytes-1 && |
| 174 | cchUTF8<maxUTF8 && |
| 175 | (zString[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */ |
| 176 | i++; |
| 177 | } |
| 178 | } |
| 179 | } |
| 180 | return lengthUTF8; |
| @@ -404,10 +405,11 @@ | |
| 404 | else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */ |
| 405 | else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */ |
| 406 | zBuf[k++] = c; |
| 407 | while( cchUTF8<maxUTF8 && |
| 408 | (zText[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */ |
| 409 | zBuf[k++] = zText[++i]; |
| 410 | } |
| 411 | } |
| 412 | else if( fossil_isspace(c) ){ |
| 413 | si = i; |
| 414 |
| --- src/comformat.c | |
| +++ src/comformat.c | |
| @@ -171,10 +171,11 @@ | |
| 171 | else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */ |
| 172 | else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */ |
| 173 | while( i<lengthBytes-1 && |
| 174 | cchUTF8<maxUTF8 && |
| 175 | (zString[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */ |
| 176 | cchUTF8++; |
| 177 | i++; |
| 178 | } |
| 179 | } |
| 180 | } |
| 181 | return lengthUTF8; |
| @@ -404,10 +405,11 @@ | |
| 405 | else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */ |
| 406 | else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */ |
| 407 | zBuf[k++] = c; |
| 408 | while( cchUTF8<maxUTF8 && |
| 409 | (zText[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */ |
| 410 | cchUTF8++; |
| 411 | zBuf[k++] = zText[++i]; |
| 412 | } |
| 413 | } |
| 414 | else if( fossil_isspace(c) ){ |
| 415 | si = i; |
| 416 |