summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYu Ning <yu.ning@intel.com>2015-08-07 18:47:49 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-07 18:47:49 +0000
commitb871b1a06e24cc8ce863a2ab5a8fb4a4dcc85e1d (patch)
tree410b7b0d1e30cbab49e82ca0097d5bd4ea361bd5
parentb04cfab35d21965dce041700bf3f46403b39fb68 (diff)
parent3f83b3fdc3c3b0926e4d2f56788a9becdb92200b (diff)
downloadandroid_device_generic_goldfish-b871b1a06e24cc8ce863a2ab5a8fb4a4dcc85e1d.tar.gz
android_device_generic_goldfish-b871b1a06e24cc8ce863a2ab5a8fb4a4dcc85e1d.tar.bz2
android_device_generic_goldfish-b871b1a06e24cc8ce863a2ab5a8fb4a4dcc85e1d.zip
am 3f83b3fd: DO NOT MERGE opengl: Fix QemuPipeStream::readFully reading beyond end of buffer
* commit '3f83b3fdc3c3b0926e4d2f56788a9becdb92200b': DO NOT MERGE opengl: Fix QemuPipeStream::readFully reading beyond end of buffer
-rw-r--r--opengl/system/OpenglSystemCommon/QemuPipeStream.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp b/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp
index 5798370..3a53161 100644
--- a/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp
+++ b/opengl/system/OpenglSystemCommon/QemuPipeStream.cpp
@@ -122,12 +122,14 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len)
//DBG(">> QemuPipeStream::readFully %d\n", len);
if (!valid()) return NULL;
if (!buf) {
- if (len>0) ERR("QemuPipeStream::readFully failed, buf=NULL, len %d", len);
+ if (len > 0) {
+ ERR("QemuPipeStream::readFully failed, buf=NULL, len %zu", len);
+ }
return NULL; // do not allow NULL buf in that implementation
}
size_t res = len;
while (res > 0) {
- ssize_t stat = ::read(m_sock, (char *)(buf) + len - res, len);
+ ssize_t stat = ::read(m_sock, (char *)(buf) + len - res, res);
if (stat == 0) {
// client shutdown;
return NULL;
@@ -135,8 +137,8 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len)
if (errno == EINTR) {
continue;
} else {
- ERR("QemuPipeStream::readFully failed (buf %p): %s\n",
- buf, strerror(errno));
+ ERR("QemuPipeStream::readFully failed (buf %p, len %zu"
+ ", res %zu): %s\n", buf, len, res, strerror(errno));
return NULL;
}
} else {