Lines Matching full:if
56 /* Helper function to see if we should continue with verification in
57 * allow_verification_error=true mode if something goes wrong. See the
94 if (image_size != (size_t)(image_size)) { in load_full_partition()
100 if (ops->get_preloaded_partition != NULL) { in load_full_partition()
104 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_full_partition()
106 } else if (io_ret != AVB_IO_RESULT_OK) { in load_full_partition()
111 if (*out_image_buf != NULL) { in load_full_partition()
112 if (part_num_read != image_size) { in load_full_partition()
121 if (!*out_image_preloaded) { in load_full_partition()
123 if (*out_image_buf == NULL) { in load_full_partition()
133 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_full_partition()
135 } else if (io_ret != AVB_IO_RESULT_OK) { in load_full_partition()
139 if (part_num_read != image_size) { in load_full_partition()
150 * to |expected_digest_size| bytes. If there is no digest stored for |part_name|
152 * |expected_digest_size|. This automatic initialization will only occur if the
158 * If the value does not exist, is not supported, or is not populated, and
160 * AVB_SLOT_VERIFY_RESULT_ERROR_INVALID_METADATA. If |expected_digest_size| does
173 if (ops->read_persistent_value == NULL) { in read_persistent_digest()
179 if (persistent_value_name == NULL) { in read_persistent_digest()
189 // If no such named persistent value exists and an initial digest value was in read_persistent_digest()
190 // given, initialize the named persistent value with the given digest. If in read_persistent_digest()
193 if (io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_VALUE && initial_digest) { in read_persistent_digest()
206 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in read_persistent_digest()
208 } else if (io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_VALUE) { in read_persistent_digest()
213 } else if (io_ret == AVB_IO_RESULT_ERROR_INVALID_VALUE_SIZE || in read_persistent_digest()
218 } else if (io_ret != AVB_IO_RESULT_OK) { in read_persistent_digest()
221 } else if (expected_digest_size != stored_digest_size) { in read_persistent_digest()
241 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in initialize_persistent_digest()
243 } else if (io_ret != AVB_IO_RESULT_OK) { in initialize_persistent_digest()
248 if (is_device_unlocked) { in initialize_persistent_digest()
262 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in initialize_persistent_digest()
264 } else if (io_ret != AVB_IO_RESULT_OK) { in initialize_persistent_digest()
274 if (ret != AVB_SLOT_VERIFY_RESULT_OK) { in initialize_persistent_digest()
306 if (!avb_hash_descriptor_validate_and_byteswap( in load_and_verify_hash_partition()
317 if (!avb_validate_utf8(desc_partition_name, hash_desc.partition_name_len)) { in load_and_verify_hash_partition()
329 if (found == NULL) { in load_and_verify_hash_partition()
334 if ((hash_desc.flags & AVB_HASH_DESCRIPTOR_FLAGS_DO_NOT_USE_AB) != 0) { in load_and_verify_hash_partition()
336 if (hash_desc.partition_name_len >= AVB_PART_NAME_MAX_SIZE) { in load_and_verify_hash_partition()
343 } else if (hash_desc.digest_len == 0 && avb_strlen(ab_suffix) != 0) { in load_and_verify_hash_partition()
353 if (!avb_str_concat(part_name, in load_and_verify_hash_partition()
365 /* If we're allowing verification errors then hash_desc.image_size in load_and_verify_hash_partition()
369 * For example, this can happen if a developer does 'fastboot flash in load_and_verify_hash_partition()
374 if (allow_verification_error) { in load_and_verify_hash_partition()
376 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_and_verify_hash_partition()
379 } else if (io_ret != AVB_IO_RESULT_OK) { in load_and_verify_hash_partition()
390 if (ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_hash_partition()
392 } else if (allow_verification_error) { in load_and_verify_hash_partition()
397 // structure here so that they would live outside the 'if/else' scope to be in load_and_verify_hash_partition()
402 // If we allow verification error and the whole partition is smaller than in load_and_verify_hash_partition()
404 if (image_size_to_hash > image_size) { in load_and_verify_hash_partition()
407 if (avb_strcmp((const char*)hash_desc.hash_algorithm, "sha256") == 0) { in load_and_verify_hash_partition()
414 } else if (avb_strcmp((const char*)hash_desc.hash_algorithm, "sha512") == 0) { in load_and_verify_hash_partition()
427 if (hash_desc.digest_len == 0) { in load_and_verify_hash_partition()
438 if (ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_hash_partition()
447 if (digest_len != expected_digest_len) { in load_and_verify_hash_partition()
454 if (avb_safe_memcmp(digest, expected_digest, digest_len) != 0) { in load_and_verify_hash_partition()
466 /* If it worked and something was loaded, copy to slot_data. */ in load_and_verify_hash_partition()
467 if ((ret == AVB_SLOT_VERIFY_RESULT_OK || result_should_continue(ret)) && in load_and_verify_hash_partition()
470 if (slot_data->num_loaded_partitions == MAX_NUMBER_OF_LOADED_PARTITIONS) { in load_and_verify_hash_partition()
485 if (image_buf != NULL && !image_preloaded) { in load_and_verify_hash_partition()
507 if (!avb_str_concat(part_name, in load_requested_partitions()
519 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_requested_partitions()
522 } else if (io_ret != AVB_IO_RESULT_OK) { in load_requested_partitions()
531 if (ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_requested_partitions()
536 if (slot_data->num_loaded_partitions == MAX_NUMBER_OF_LOADED_PARTITIONS) { in load_requested_partitions()
544 if (loaded_partition->partition_name == NULL) { in load_requested_partitions()
558 /* Free the current buffer if any. */ in load_requested_partitions()
559 if (image_buf != NULL && !image_preloaded) { in load_requested_partitions()
610 if (rollback_index_location == 0) { in load_and_verify_vbmeta()
611 if ((flags & AVB_SLOT_VERIFY_FLAGS_NO_VBMETA_PARTITION) == 0) { in load_and_verify_vbmeta()
620 if (avb_strncmp(partition_name, "vbmeta", avb_strlen("vbmeta")) == 0) { in load_and_verify_vbmeta()
624 if (!avb_validate_utf8((const uint8_t*)partition_name, partition_name_len)) { in load_and_verify_vbmeta()
631 if (!avb_str_concat(full_partition_name, in load_and_verify_vbmeta()
642 /* If we're loading from the main vbmeta partition, the vbmeta struct is in in load_and_verify_vbmeta()
643 * the beginning. Otherwise we may have to locate it via a footer... if no in load_and_verify_vbmeta()
650 if (look_for_vbmeta_footer) { in load_and_verify_vbmeta()
661 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_and_verify_vbmeta()
664 } else if (io_ret != AVB_IO_RESULT_OK) { in load_and_verify_vbmeta()
671 if (!avb_footer_validate_and_byteswap((const AvbFooter*)footer_buf, in load_and_verify_vbmeta()
676 if (footer.vbmeta_size > VBMETA_MAX_SIZE) { in load_and_verify_vbmeta()
687 if (vbmeta_buf == NULL) { in load_and_verify_vbmeta()
692 if (vbmeta_offset != 0) { in load_and_verify_vbmeta()
710 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_and_verify_vbmeta()
713 } else if (io_ret != AVB_IO_RESULT_OK) { in load_and_verify_vbmeta()
714 /* If we're looking for 'vbmeta' but there is no such partition, in load_and_verify_vbmeta()
717 if (is_main_vbmeta && io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION && in load_and_verify_vbmeta()
745 /* Check if the image is properly signed and get the public key used in load_and_verify_vbmeta()
764 if (!allow_verification_error) { in load_and_verify_vbmeta()
790 /* If we're the toplevel, assign flags so they'll be passed down. */ in load_and_verify_vbmeta()
791 if (is_main_vbmeta) { in load_and_verify_vbmeta()
794 if (vbmeta_header.flags != 0) { in load_and_verify_vbmeta()
805 /* Check if key used to make signature matches what is expected. */ in load_and_verify_vbmeta()
806 if (pk_data != NULL) { in load_and_verify_vbmeta()
807 if (expected_public_key != NULL) { in load_and_verify_vbmeta()
809 if (expected_public_key_length != pk_len || in load_and_verify_vbmeta()
816 if (!allow_verification_error) { in load_and_verify_vbmeta()
825 if (vbmeta_header.public_key_metadata_size > 0) { in load_and_verify_vbmeta()
832 // If we're not using a vbmeta partition, need to use another AvbOps... in load_and_verify_vbmeta()
833 if (flags & AVB_SLOT_VERIFY_FLAGS_NO_VBMETA_PARTITION) { in load_and_verify_vbmeta()
853 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_and_verify_vbmeta()
856 } else if (io_ret != AVB_IO_RESULT_OK) { in load_and_verify_vbmeta()
863 if (!key_is_trusted) { in load_and_verify_vbmeta()
868 if (!allow_verification_error) { in load_and_verify_vbmeta()
878 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in load_and_verify_vbmeta()
881 } else if (io_ret != AVB_IO_RESULT_OK) { in load_and_verify_vbmeta()
888 if (vbmeta_header.rollback_index < stored_rollback_index) { in load_and_verify_vbmeta()
894 if (!allow_verification_error) { in load_and_verify_vbmeta()
900 if (is_main_vbmeta) { in load_and_verify_vbmeta()
903 if (!(flags & AVB_SLOT_VERIFY_FLAGS_NO_VBMETA_PARTITION)) { in load_and_verify_vbmeta()
907 if (slot_data->num_vbmeta_images == MAX_NUMBER_OF_VBMETA_IMAGES) { in load_and_verify_vbmeta()
926 /* If verification has been disabled by setting a bit in the image, in load_and_verify_vbmeta()
930 if (vbmeta_header.flags & AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED) { in load_and_verify_vbmeta()
934 /* If load_requested_partitions() fail it is always a fatal in load_and_verify_vbmeta()
941 if (sub_ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_vbmeta()
965 if (!avb_descriptor_validate_and_byteswap(descriptors[n], &desc)) { in load_and_verify_vbmeta()
980 if (sub_ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_vbmeta()
982 if (!allow_verification_error || !result_should_continue(ret)) { in load_and_verify_vbmeta()
995 if (!is_main_vbmeta) { in load_and_verify_vbmeta()
1003 if (!avb_chain_partition_descriptor_validate_and_byteswap( in load_and_verify_vbmeta()
1012 if (chain_desc.rollback_index_location == 0) { in load_and_verify_vbmeta()
1040 if (sub_ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_vbmeta()
1042 if (!result_should_continue(ret)) { in load_and_verify_vbmeta()
1053 if (!avb_kernel_cmdline_descriptor_validate_and_byteswap( in load_and_verify_vbmeta()
1066 if (!avb_validate_utf8(kernel_cmdline, in load_and_verify_vbmeta()
1078 * are skipped if applicable. in load_and_verify_vbmeta()
1081 if (toplevel_vbmeta_flags & AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED) { in load_and_verify_vbmeta()
1082 if (kernel_cmdline_desc.flags & in load_and_verify_vbmeta()
1087 if (kernel_cmdline_desc.flags & in load_and_verify_vbmeta()
1093 if (apply_cmdline) { in load_and_verify_vbmeta()
1094 if (slot_data->cmdline == NULL) { in load_and_verify_vbmeta()
1097 if (slot_data->cmdline == NULL) { in load_and_verify_vbmeta()
1110 if (new_cmdline == NULL) { in load_and_verify_vbmeta()
1128 if (!avb_hashtree_descriptor_validate_and_byteswap( in load_and_verify_vbmeta()
1140 if (hashtree_desc.root_digest_len == 0) { in load_and_verify_vbmeta()
1147 if (!avb_validate_utf8(desc_partition_name, in load_and_verify_vbmeta()
1158 if ((hashtree_desc.flags & in load_and_verify_vbmeta()
1165 if (hashtree_desc.partition_name_len >= AVB_PART_NAME_MAX_SIZE) { in load_and_verify_vbmeta()
1175 if (avb_strcmp((const char*)hashtree_desc.hash_algorithm, "sha1") == in load_and_verify_vbmeta()
1178 } else if (avb_strcmp((const char*)hashtree_desc.hash_algorithm, in load_and_verify_vbmeta()
1181 } else if (avb_strcmp((const char*)hashtree_desc.hash_algorithm, in load_and_verify_vbmeta()
1195 if (ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_vbmeta()
1199 if (out_additional_cmdline_subst) { in load_and_verify_vbmeta()
1205 if (ret != AVB_SLOT_VERIFY_RESULT_OK) { in load_and_verify_vbmeta()
1218 if (rollback_index_location < 0 || in load_and_verify_vbmeta()
1229 if (out_algorithm_type != NULL) { in load_and_verify_vbmeta()
1234 /* If |vbmeta_image_data| isn't NULL it means that it adopted in load_and_verify_vbmeta()
1237 if (vbmeta_image_data == NULL) { in load_and_verify_vbmeta()
1238 if (vbmeta_buf != NULL) { in load_and_verify_vbmeta()
1242 if (descriptors != NULL) { in load_and_verify_vbmeta()
1263 // If we're rebooting because of dm-verity corruption, make a note of in avb_manage_hashtree_error_mode()
1265 if (flags & AVB_SLOT_VERIFY_FLAGS_RESTART_CAUSED_BY_HASHTREE_CORRUPTION) { in avb_manage_hashtree_error_mode()
1275 if (io_ret != AVB_IO_RESULT_OK) { in avb_manage_hashtree_error_mode()
1284 // See if we're in 'eio' mode. in avb_manage_hashtree_error_mode()
1290 if (io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_VALUE || in avb_manage_hashtree_error_mode()
1297 } else if (io_ret != AVB_IO_RESULT_OK) { in avb_manage_hashtree_error_mode()
1301 if (num_bytes_read != AVB_SHA256_DIGEST_SIZE) { in avb_manage_hashtree_error_mode()
1310 // that caused this is in |stored_vbmeta_digest_sha256| ... now see if in avb_manage_hashtree_error_mode()
1314 if (avb_memcmp(vbmeta_digest_sha256, in avb_manage_hashtree_error_mode()
1330 if (io_ret != AVB_IO_RESULT_OK) { in avb_manage_hashtree_error_mode()
1349 if (!avb_str_concat(part_name, in has_system_partition()
1361 if (io_ret == AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION) { in has_system_partition()
1364 } else if (io_ret != AVB_IO_RESULT_OK) { in has_system_partition()
1387 /* Fail early if we're missing the AvbOps needed for slot verification. */ in avb_slot_verify()
1394 if (out_data != NULL) { in avb_slot_verify()
1399 * only allow this if set up to allow verification errors in avb_slot_verify()
1402 if (hashtree_error_mode == AVB_HASHTREE_ERROR_MODE_LOGGING && in avb_slot_verify()
1408 /* Make sure passed-in AvbOps support persistent values if in avb_slot_verify()
1411 if (hashtree_error_mode == AVB_HASHTREE_ERROR_MODE_MANAGED_RESTART_AND_EIO) { in avb_slot_verify()
1412 if (ops->read_persistent_value == NULL || in avb_slot_verify()
1424 * rollback index location if not using a vbmeta partition. in avb_slot_verify()
1426 if (flags & AVB_SLOT_VERIFY_FLAGS_NO_VBMETA_PARTITION) { in avb_slot_verify()
1427 if (ops->validate_public_key_for_partition == NULL) { in avb_slot_verify()
1439 if (slot_data == NULL) { in avb_slot_verify()
1445 if (slot_data->vbmeta_images == NULL) { in avb_slot_verify()
1451 if (slot_data->loaded_partitions == NULL) { in avb_slot_verify()
1457 if (additional_cmdline_subst == NULL) { in avb_slot_verify()
1462 if (flags & AVB_SLOT_VERIFY_FLAGS_NO_VBMETA_PARTITION) { in avb_slot_verify()
1463 if (requested_partitions == NULL || requested_partitions[0] == NULL) { in avb_slot_verify()
1487 if (!allow_verification_error && ret != AVB_SLOT_VERIFY_RESULT_OK) { in avb_slot_verify()
1508 if (!allow_verification_error && ret != AVB_SLOT_VERIFY_RESULT_OK) { in avb_slot_verify()
1513 if (!result_should_continue(ret)) { in avb_slot_verify()
1517 /* If things check out, mangle the kernel command-line as needed. */ in avb_slot_verify()
1518 if (!(flags & AVB_SLOT_VERIFY_FLAGS_NO_VBMETA_PARTITION)) { in avb_slot_verify()
1519 if (avb_strcmp(slot_data->vbmeta_images[0].partition_name, "vbmeta") != 0) { in avb_slot_verify()
1533 if (slot_data->ab_suffix == NULL) { in avb_slot_verify()
1538 /* If verification is disabled, we are done ... we specifically in avb_slot_verify()
1542 if (toplevel_vbmeta.flags & AVB_VBMETA_IMAGE_FLAGS_VERIFICATION_DISABLED) { in avb_slot_verify()
1551 if (has_system_partition(ops, ab_suffix)) { in avb_slot_verify()
1558 if (slot_data->cmdline == NULL) { in avb_slot_verify()
1563 /* If requested, manage dm-verity mode... */ in avb_slot_verify()
1565 if (hashtree_error_mode == in avb_slot_verify()
1570 if (io_ret != AVB_IO_RESULT_OK) { in avb_slot_verify()
1572 if (io_ret == AVB_IO_RESULT_ERROR_OOM) { in avb_slot_verify()
1589 if (sub_ret != AVB_SLOT_VERIFY_RESULT_OK) { in avb_slot_verify()
1596 if (slot_data->cmdline != NULL && avb_strlen(slot_data->cmdline) != 0) { in avb_slot_verify()
1603 if (new_cmdline != slot_data->cmdline) { in avb_slot_verify()
1604 if (new_cmdline == NULL) { in avb_slot_verify()
1613 if (out_data != NULL) { in avb_slot_verify()
1622 if (!allow_verification_error) { in avb_slot_verify()
1629 if (slot_data != NULL) { in avb_slot_verify()
1632 if (additional_cmdline_subst != NULL) { in avb_slot_verify()
1639 if (data->ab_suffix != NULL) { in avb_slot_verify_data_free()
1642 if (data->cmdline != NULL) { in avb_slot_verify_data_free()
1645 if (data->vbmeta_images != NULL) { in avb_slot_verify_data_free()
1649 if (vbmeta_image->partition_name != NULL) { in avb_slot_verify_data_free()
1652 if (vbmeta_image->vbmeta_data != NULL) { in avb_slot_verify_data_free()
1658 if (data->loaded_partitions != NULL) { in avb_slot_verify_data_free()
1662 if (loaded_partition->partition_name != NULL) { in avb_slot_verify_data_free()
1665 if (loaded_partition->data != NULL && !loaded_partition->preloaded) { in avb_slot_verify_data_free()
1708 if (ret == NULL) { in avb_slot_verify_result_to_string()
1760 if (!ret) { in avb_slot_verify_data_calculate_vbmeta_digest()