am bad193d9: am 91ac4618: am 0e94cee9: DO NOT MERGE opengl: Fix QemuPipeStream::readFully reading beyond end of buffer

* commit 'bad193d96a7fd8ffea27e5e62c7a77c508fabf34':
  DO NOT MERGE opengl: Fix QemuPipeStream::readFully reading beyond end of buffer
This commit is contained in:
Konstantinos Menychtas
2015-08-07 18:33:07 +00:00
committed by Android Git Automerger

View File

@@ -122,12 +122,14 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len)
//DBG(">> QemuPipeStream::readFully %d\n", len); //DBG(">> QemuPipeStream::readFully %d\n", len);
if (!valid()) return NULL; if (!valid()) return NULL;
if (!buf) { 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 return NULL; // do not allow NULL buf in that implementation
} }
size_t res = len; size_t res = len;
while (res > 0) { 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) { if (stat == 0) {
// client shutdown; // client shutdown;
return NULL; return NULL;
@@ -135,8 +137,8 @@ const unsigned char *QemuPipeStream::readFully(void *buf, size_t len)
if (errno == EINTR) { if (errno == EINTR) {
continue; continue;
} else { } else {
ERR("QemuPipeStream::readFully failed (buf %p): %s\n", ERR("QemuPipeStream::readFully failed (buf %p, len %zu"
buf, strerror(errno)); ", res %zu): %s\n", buf, len, res, strerror(errno));
return NULL; return NULL;
} }
} else { } else {