Bug 965945 - Prevent the parent process from running out of memory if the child process requests a giant gralloc buffer. r=bjacob

This commit is contained in:
Kartikaya Gupta 2014-02-19 12:08:00 -05:00
parent 83cd1d1b5f
commit 4abb4c4bbb

View File

@ -291,6 +291,16 @@ GrallocBufferActor::Create(const gfx::IntSize& aSize,
return actor;
}
// If the requested size is too big (i.e. exceeds the commonly used max GL texture size)
// then we risk OOMing the parent process. It's better to just deny the allocation and
// kill the child process, which is what the following code does.
// TODO: actually use GL_MAX_TEXTURE_SIZE instead of hardcoding 4096
if (aSize.width > 4096 || aSize.height > 4096) {
printf_stderr("GrallocBufferActor::Create -- requested gralloc buffer is too big. Killing child instead.");
delete actor;
return nullptr;
}
sp<GraphicBuffer> buffer(new GraphicBuffer(aSize.width, aSize.height, format, usage));
if (buffer->initCheck() != OK)
return actor;