OSDN Git Service

SurfaceTexture: fix an out of bounds array write
authorJamie Gennis <jgennis@google.com>
Fri, 21 Sep 2012 18:55:35 +0000 (11:55 -0700)
committerJamie Gennis <jgennis@google.com>
Fri, 21 Sep 2012 19:15:22 +0000 (12:15 -0700)
commitd1b330de416adff0d178a5cb7271419d9ed7a89a
treec2751efdda3af8c62a5244f3c038e47641550e66
parentaaf421c465794c02f86ee2929f330a8b7206199b
SurfaceTexture: fix an out of bounds array write

This change fixes an issue causing the mEglContext member of a SurfaceTexture
to get incorrectly zeroed out.  This would happen when a call to
ConsumerBase::releaseBufferLocked resulted in the current buffer being freed.
Freeing the current buffer would set SurfaceTexture::mCurrentTexture to -1,
which would then be used by SurfaceTexture::releaseBufferLocked to reset the
current slot's EGLSyncKHR to EGL_NO_SYNC_KHR (= 0).  This would overwrite the
mEglContext field, resulting in context mismatch errors in
SurfaceTexture::doGLFenceWaitLocked.

The fix is to simply use the buffer slot that's passed in to
SurfaceTexture::releaseBufferLocked rather than mCurrentTexture.

Change-Id: I0e5e2bd88fcbb354c35a3744f317716fff3e0e41
libs/gui/SurfaceTexture.cpp