1 /* 2 * Copyright (c) 2017-2021, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 * 6 */ 7 8 #include "ps_utils.h" 9 ps_utils_check_contained_in(uint32_t superset_size,uint32_t subset_offset,uint32_t subset_size)10psa_status_t ps_utils_check_contained_in(uint32_t superset_size, 11 uint32_t subset_offset, 12 uint32_t subset_size) 13 { 14 /* Check that subset_offset is valid */ 15 if (subset_offset > superset_size) { 16 return PSA_ERROR_INVALID_ARGUMENT; 17 } 18 19 /* Check that subset_offset + subset_size fits in superset_size. 20 * The previous check passed, so we know that subset_offset <= superset_size 21 * and so the right hand side of the inequality cannot underflow. 22 */ 23 if (subset_size > (superset_size - subset_offset)) { 24 return PSA_ERROR_INVALID_ARGUMENT; 25 } 26 27 return PSA_SUCCESS; 28 } 29