From 86f18755362b594c519ccde37c3b3f98158b591e Mon Sep 17 00:00:00 2001 From: mcq8 Date: Thu, 4 Dec 2014 17:36:44 +0100 Subject: [PATCH 1/2] Fix bug #68532: convert.base64-encode omits padding bytes --- ext/standard/tests/file/bug68532.phpt | 25 +++++++++++++++++++ .../tests/file/stream_rfc2397_007.phpt | 2 ++ main/streams/memory.c | 20 +++++++++------ 3 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 ext/standard/tests/file/bug68532.phpt diff --git a/ext/standard/tests/file/bug68532.phpt b/ext/standard/tests/file/bug68532.phpt new file mode 100644 index 00000000000..7d1a0cea9ad --- /dev/null +++ b/ext/standard/tests/file/bug68532.phpt @@ -0,0 +1,25 @@ +--TEST-- +Bug #68532: convert.base64-encode omits padding bytes +--FILE-- + +--CLEAN-- + +--EXPECT-- +memoryStream = dGVzdA== +fileStream = dGVzdA== diff --git a/ext/standard/tests/file/stream_rfc2397_007.phpt b/ext/standard/tests/file/stream_rfc2397_007.phpt index 8a6f3155dd7..b62f19cd374 100644 --- a/ext/standard/tests/file/stream_rfc2397_007.phpt +++ b/ext/standard/tests/file/stream_rfc2397_007.phpt @@ -27,6 +27,7 @@ foreach($streams as $stream) var_dump(feof($fp)); echo "===GETC===\n"; var_dump(fgetc($fp)); + var_dump(fgetc($fp)); var_dump(ftell($fp)); var_dump(feof($fp)); echo "===REWIND===\n"; @@ -94,6 +95,7 @@ int(5) bool(false) ===GETC=== string(1) "5" +bool(false) int(6) bool(true) ===REWIND=== diff --git a/main/streams/memory.c b/main/streams/memory.c index e6d0baaa86d..f73c12f7d71 100644 --- a/main/streams/memory.c +++ b/main/streams/memory.c @@ -87,15 +87,19 @@ static size_t php_stream_memory_read(php_stream *stream, char *buf, size_t count php_stream_memory_data *ms = (php_stream_memory_data*)stream->abstract; assert(ms != NULL); - if (ms->fpos + count >= ms->fsize) { - count = ms->fsize - ms->fpos; + if (ms->fpos == ms->fsize) { stream->eof = 1; - } - if (count) { - assert(ms->data!= NULL); - assert(buf!= NULL); - memcpy(buf, ms->data+ms->fpos, count); - ms->fpos += count; + count = 0; + } else { + if (ms->fpos + count >= ms->fsize) { + count = ms->fsize - ms->fpos; + } + if (count) { + assert(ms->data!= NULL); + assert(buf!= NULL); + memcpy(buf, ms->data+ms->fpos, count); + ms->fpos += count; + } } return count; } From d43d0663af9d7f11985fa6994f785b2dd5cb0faa Mon Sep 17 00:00:00 2001 From: Julien Pauli Date: Fri, 12 Dec 2014 16:50:32 +0100 Subject: [PATCH 2/2] Updated NEWS --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index a0dcf344d8d..33a3684b40b 100644 --- a/NEWS +++ b/NEWS @@ -43,6 +43,10 @@ PHP NEWS - SQLite: . Fixed bug #68120 (Update bundled libsqlite to 3.8.7.2). (Anatol) +- Streams: + . Fixed bug #68532 (convert.base64-encode omits padding bytes). + (blaesius at krumedia dot de) + 18 Dec 2014, PHP 5.5.20 - Core: