0004-segfault-on-removeFromWaitResource.patch 1.52 KB
We always access globalComponentList[] at indexComponent=-1 which causes a
segfault. Use i as the index instead.

Signed-off-by: Qais Yousef <qais.yousef@imgtec.com>

--- bellagio-0.9.3/src/omx_reference_resource_manager.c.old	2012-03-13 10:15:25.743940980 +0000
+++ bellagio-0.9.3/src/omx_reference_resource_manager.c	2012-03-13 10:18:02.201971009 +0000
@@ -485,7 +485,6 @@
 OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) {
 	omx_base_component_PrivateType* omx_base_component_Private;
 	int i = 0;
-	int indexComponent = -1;
 
 	DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__);
 	omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate;
@@ -493,16 +492,13 @@
 	while(listOfcomponentRegistered[i].component_name != NULL ) {
 		if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) {
 			// found component in the list of the resource manager
-			removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp);
-			break;
+			removeElemFromList(&globalComponentList[i], openmaxStandComp);
+			DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__);
+			return OMX_ErrorNone;
 		}
 		i++;
 	}
-	if (indexComponent <0) {
-		// No resource to be handled
-		DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__);
-		return OMX_ErrorNone;
-	}
-	DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__);
+	// No resource to be handled
+	DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__);
 	return OMX_ErrorNone;
 }