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 833279b6b8
commit f6a1fc6920
2 changed files with 11 additions and 1 deletions

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;

View File

@ -1,4 +1,4 @@
<html reftest-displayport-w="800" reftest-displayport-h="6000">
<html reftest-displayport-w="800" reftest-displayport-h="4096">
<head>
<style type="text/css">
body