libstagefright: fix indefinate loop in QueryCodec
portFormat.nIndex is being incremented which is not
trustworthy since the nIndex value could be overriden
by the OMX Component, which causes an indefinate loop
which inturn causes a memory leak and crashes the system.
OMX Component on encore and p970 exhibits this behaviour
(OMX.TI.720P.Decoder). This patch prevents stagefright
freezes when QueryCodec is called during Gallery Thumbnail
generation for videos and Adobe Flash playback.
Change-Id: I825c99ddecacbb927e22ac7d1a53facb26d95ff2
diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp
index 7d1dd8e..8d64713 100644
--- a/media/libstagefright/OMXCodec.cpp
+++ b/media/libstagefright/OMXCodec.cpp
@@ -4836,7 +4836,8 @@
OMX_VIDEO_PARAM_PORTFORMATTYPE portFormat;
InitOMXParams(&portFormat);
portFormat.nPortIndex = !isEncoder ? 1 : 0;
- for (portFormat.nIndex = 0;; ++portFormat.nIndex) {
+ for (OMX_U32 index = 0;;index++) {
+ portFormat.nIndex = index;
err = omx->getParameter(
node, OMX_IndexParamVideoPortFormat,
&portFormat, sizeof(portFormat));