diff --git a/src/rm_policy.c b/src/rm_policy.c
index 418a19737df32c4326b3f1c8be887360066a2ece..d83b4bc7273c9fb26248a80f52a8fd99b7dd3895 100644 (file)
--- a/src/rm_policy.c
+++ b/src/rm_policy.c
nodeOffset = RM_DTB_UTIL_STARTING_NODE_OFFSET;
/* Find node offset for provided resource name */
- while ((nodeOffset >= RM_DTB_UTIL_STARTING_NODE_OFFSET) &&
- (depth >= RM_DTB_UTIL_STARTING_DEPTH)) {
+ while (nodeOffset >= RM_DTB_UTIL_STARTING_NODE_OFFSET) {
nodeOffset = fdt_next_node(policyDtb, nodeOffset, &depth);
if (depth < RM_DTB_UTIL_STARTING_DEPTH) {
/* Resource name not found */
nodeOffset = RM_SERVICE_DENIED_RES_DOES_NOT_EXIST;
+ break;
}
else {
nodeName = fdt_get_name(policyDtb, nodeOffset, NULL);
/* Parse DTB, verifying each resource's assignment permissions.
* Permissions must have correct syntax and contain valid instance names
* according validInstList */
- while ((nodeOffset >= RM_DTB_UTIL_STARTING_NODE_OFFSET) &&
- (depth >= RM_DTB_UTIL_STARTING_DEPTH)) {
+ while (nodeOffset >= RM_DTB_UTIL_STARTING_NODE_OFFSET) {
nodeOffset = fdt_next_node(policyDtb, nodeOffset, &depth);
+ if (depth < RM_DTB_UTIL_STARTING_DEPTH) {
+ break;
+ }
nodeName = fdt_get_name(policyDtb, nodeOffset, NULL);
if (fdt_first_property_offset(policyDtb, nodeOffset) > RM_DTB_UTIL_STARTING_NODE_OFFSET) {
if (rmAllocatorFind(rmHandle, nodeName) == NULL) {
/* Parse DTB, verifying each resource's assignment permissions.
* Permissions must have correct syntax and contain valid instance names
* according validInstList */
- while ((nodeOffset >= RM_DTB_UTIL_STARTING_NODE_OFFSET) &&
- (depth >= RM_DTB_UTIL_STARTING_DEPTH)) {
+ while (nodeOffset >= RM_DTB_UTIL_STARTING_NODE_OFFSET) {
nodeOffset = fdt_next_node(policyDtb, nodeOffset, &depth);
+ if (depth < RM_DTB_UTIL_STARTING_DEPTH) {
+ break;
+ }
propertyOffset = fdt_first_property_offset(policyDtb, nodeOffset);
while (propertyOffset > RM_DTB_UTIL_STARTING_NODE_OFFSET) {
propertyData = fdt_getprop_by_offset(policyDtb, propertyOffset, &propertyName, &propertyLen);