ANSC_HANDLE SlapOmoGetObjBroker ( ANSC_HANDLE hThisObject, ANSC_HANDLE hTokenChain ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PSLAP_OBJ_MAPPER_OBJECT pMyObject = (PSLAP_OBJ_MAPPER_OBJECT )hThisObject; PSLAP_OBJ_MAPPER_PROPERTY pProperty = (PSLAP_OBJ_MAPPER_PROPERTY)&pMyObject->Property; PSLAP_OBJ_BROKER_OBJECT pRootObjBroker = (PSLAP_OBJ_BROKER_OBJECT )pMyObject->hRootObjBroker; PSLAP_OBJ_BROKER_OBJECT pThisObjBroker = (PSLAP_OBJ_BROKER_OBJECT )pRootObjBroker; PSLAP_OBJ_BROKER_OBJECT pNextObjBroker = (PSLAP_OBJ_BROKER_OBJECT )NULL; PANSC_TOKEN_CHAIN pPathTokenChain = (PANSC_TOKEN_CHAIN )hTokenChain; PANSC_STRING_TOKEN pPathToken = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; pSLinkEntry = AnscQueuePopEntry(&pPathTokenChain->TokensQueue); while ( pSLinkEntry && pThisObjBroker ) { pPathToken = ACCESS_ANSC_STRING_TOKEN(pSLinkEntry); pNextObjBroker = (PSLAP_OBJ_BROKER_OBJECT)pThisObjBroker->GetObjBroker ( (ANSC_HANDLE)pThisObjBroker, pPathToken->Name ); if ( pNextObjBroker ) { AnscFreeMemory(pPathToken); } else { AnscQueuePushEntryAtFront(&pPathTokenChain->TokensQueue, &pPathToken->Linkage); break; } pThisObjBroker = pNextObjBroker; pSLinkEntry = AnscQueuePopEntry(&pPathTokenChain->TokensQueue); } if ( pSLinkEntry ) { return (ANSC_HANDLE)NULL; } return (ANSC_HANDLE)pThisObjBroker; }
ANSC_HANDLE SlapOmoGetObjProxy2 ( ANSC_HANDLE hThisObject, ANSC_HANDLE hTokenChain ) { ANSC_STATUS returnStatus = ANSC_STATUS_SUCCESS; PSLAP_OBJ_MAPPER_OBJECT pMyObject = (PSLAP_OBJ_MAPPER_OBJECT )hThisObject; PSLAP_OBJ_MAPPER_PROPERTY pProperty = (PSLAP_OBJ_MAPPER_PROPERTY)&pMyObject->Property; PSLAP_OBJ_BROKER_OBJECT pRootObjBroker = (PSLAP_OBJ_BROKER_OBJECT )pMyObject->hRootObjBroker; PSLAP_OBJ_BROKER_OBJECT pThisObjBroker = (PSLAP_OBJ_BROKER_OBJECT )pRootObjBroker; PSLAP_OBJ_BROKER_OBJECT pNextObjBroker = (PSLAP_OBJ_BROKER_OBJECT )NULL; PSLAP_OBJ_PROXY_OBJECT pObjProxy = (PSLAP_OBJ_PROXY_OBJECT )NULL; PANSC_TOKEN_CHAIN pPathTokenChain = (PANSC_TOKEN_CHAIN )hTokenChain; PANSC_STRING_TOKEN pPathToken = NULL; PSINGLE_LINK_ENTRY pSLinkEntry = NULL; if(pThisObjBroker) /*RDKB-6244, CID-24128, null check before use*/ { pObjProxy = (PSLAP_OBJ_PROXY_OBJECT )pThisObjBroker->hSlapObjProxy; } if ( AnscQueueQueryDepth(&pPathTokenChain->TokensQueue) == 0 ) { pObjProxy = (PSLAP_OBJ_PROXY_OBJECT)NULL; } else { pSLinkEntry = AnscQueuePopEntry(&pPathTokenChain->TokensQueue); while ( pSLinkEntry && pThisObjBroker ) { pPathToken = ACCESS_ANSC_STRING_TOKEN(pSLinkEntry); pNextObjBroker = (PSLAP_OBJ_BROKER_OBJECT)pThisObjBroker->GetObjBroker ( (ANSC_HANDLE)pThisObjBroker, pPathToken->Name ); if ( pNextObjBroker ) { if ( pNextObjBroker->hSlapObjProxy ) { pObjProxy = (PSLAP_OBJ_PROXY_OBJECT)pNextObjBroker->hSlapObjProxy; } AnscFreeMemory(pPathToken); } else { AnscQueuePushEntryAtFront(&pPathTokenChain->TokensQueue, &pPathToken->Linkage); break; } pThisObjBroker = pNextObjBroker; pSLinkEntry = AnscQueuePopEntry(&pPathTokenChain->TokensQueue); } if ( AnscQueueQueryDepth(&pPathTokenChain->TokensQueue) > 0 ) { pObjProxy = (PSLAP_OBJ_PROXY_OBJECT)NULL; } } return (ANSC_HANDLE)pObjProxy; }