Bug #79213 [Ver]: mb_check_encoding doesn't return true with valid base64 strings

From: Date: Mon, 03 Feb 2020 06:05:10 +0000
Subject: Bug #79213 [Ver]: mb_check_encoding doesn't return true with valid base64 strings
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-225320@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=79213&edit=1

 ID:                 79213
 Updated by:         requinix@php.net
 Reported by:        info at ioweb dot gr
-Summary:            mb_check_encoding doesn't return true with valid
                     base64 padded string
+Summary:            mb_check_encoding doesn't return true with valid
                     base64 strings
 Status:             Verified
 Type:               Bug
 Package:            mbstring related
 Operating System:   Debian 9, Ubuntu 18.04
 PHP Version:        7.2.27
 Block user comment: N
 Private report:     N

 New Comment:

I suppose it could use another small update.


Previous Comments:
------------------------------------------------------------------------
[2020-02-03 05:27:21] info at ioweb dot gr

No problem. I just saw that the title of the bug changed and it's about padded strings while
it's failing for all base64 strings. A bit misleading

------------------------------------------------------------------------
[2020-02-03 05:18:05] requinix@php.net

@info: Yes, I was wrong about the nature of the bug, and the code I checked my response with also
happened to be wrong (and in a way that made it look like mb_check_encoding was working). You can
disregard most of what I said :(

------------------------------------------------------------------------
[2020-02-03 05:15:38] info at ioweb dot gr

I'd like to mention that For word "δοκιμή" the encoded string is
zrTOv866zrnOvM6u and the result is false as well. It's not the padded = signs only.

------------------------------------------------------------------------
[2020-02-02 22:50:06] requinix@php.net

Ah shoot, you're right. It's mb_detect_encoding that works on partial strings, not
mb_check_encoding.

------------------------------------------------------------------------
[2020-02-02 22:43:39] nikic@php.net

> However, I don't think that makes this behavior correct. If it were reading a UTF-8 stream
> and the string ended in the middle of a multibyte sequence then it should report as valid.

No, this is not how mb_check_encoding() is supposed to work. The string as a whole must be valid,
not just a valid prefix. (Unfortunately many flush implementations in mbfl are somewhat broken, so
theory and practice may not align very well.)

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=79213


--
Edit this bug report at https://bugs.php.net/bug.php?id=79213&edit=1


Thread (13 messages)

« previous php.bugs (#225320) next »