Skip to content

Commit dc037d2

Browse files
author
Petr Vesely
committed
[UR] Add validation checks to urSamplerGetInfo optional params
1 parent fd70d8d commit dc037d2

File tree

6 files changed

+48
-2
lines changed

6 files changed

+48
-2
lines changed

include/ur_api.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2293,6 +2293,11 @@ urSamplerRelease(
22932293
/// - ::UR_RESULT_ERROR_INVALID_VALUE
22942294
/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY
22952295
/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES
2296+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
2297+
/// + `propSize == 0 && pPropValue != NULL`
2298+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
2299+
/// + `propSize != 0 && pPropValue == NULL`
2300+
/// + `pPropValue == NULL && pPropSizeRet == NULL`
22962301
UR_APIEXPORT ur_result_t UR_APICALL
22972302
urSamplerGetInfo(
22982303
ur_sampler_handle_t hSampler, ///< [in] handle of the sampler object

scripts/core/sampler.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,11 @@ returns:
164164
- $X_RESULT_ERROR_INVALID_VALUE
165165
- $X_RESULT_ERROR_OUT_OF_HOST_MEMORY
166166
- $X_RESULT_ERROR_OUT_OF_RESOURCES
167+
- $X_RESULT_ERROR_INVALID_SIZE:
168+
- "`propSize == 0 && pPropValue != NULL`"
169+
- $X_RESULT_ERROR_INVALID_NULL_POINTER:
170+
- "`propSize != 0 && pPropValue == NULL`"
171+
- "`pPropValue == NULL && pPropSizeRet == NULL`"
167172
--- #--------------------------------------------------------------------------
168173
type: function
169174
desc: "Return sampler native sampler handle."

source/loader/layers/validation/ur_valddi.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,9 +1351,21 @@ __urdlllocal ur_result_t UR_APICALL urSamplerGetInfo(
13511351
return UR_RESULT_ERROR_INVALID_NULL_HANDLE;
13521352
}
13531353

1354+
if (propSize != 0 && pPropValue == NULL) {
1355+
return UR_RESULT_ERROR_INVALID_NULL_POINTER;
1356+
}
1357+
1358+
if (pPropValue == NULL && pPropSizeRet == NULL) {
1359+
return UR_RESULT_ERROR_INVALID_NULL_POINTER;
1360+
}
1361+
13541362
if (UR_SAMPLER_INFO_FILTER_MODE < propName) {
13551363
return UR_RESULT_ERROR_INVALID_ENUMERATION;
13561364
}
1365+
1366+
if (propSize == 0 && pPropValue != NULL) {
1367+
return UR_RESULT_ERROR_INVALID_SIZE;
1368+
}
13571369
}
13581370

13591371
ur_result_t result =

source/loader/ur_libapi.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1542,6 +1542,11 @@ ur_result_t UR_APICALL urSamplerRelease(
15421542
/// - ::UR_RESULT_ERROR_INVALID_VALUE
15431543
/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY
15441544
/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES
1545+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
1546+
/// + `propSize == 0 && pPropValue != NULL`
1547+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
1548+
/// + `propSize != 0 && pPropValue == NULL`
1549+
/// + `pPropValue == NULL && pPropSizeRet == NULL`
15451550
ur_result_t UR_APICALL urSamplerGetInfo(
15461551
ur_sampler_handle_t hSampler, ///< [in] handle of the sampler object
15471552
ur_sampler_info_t propName, ///< [in] name of the sampler property to query

source/ur_api.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,6 +1281,11 @@ ur_result_t UR_APICALL urSamplerRelease(
12811281
/// - ::UR_RESULT_ERROR_INVALID_VALUE
12821282
/// - ::UR_RESULT_ERROR_OUT_OF_HOST_MEMORY
12831283
/// - ::UR_RESULT_ERROR_OUT_OF_RESOURCES
1284+
/// - ::UR_RESULT_ERROR_INVALID_SIZE
1285+
/// + `propSize == 0 && pPropValue != NULL`
1286+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
1287+
/// + `propSize != 0 && pPropValue == NULL`
1288+
/// + `pPropValue == NULL && pPropSizeRet == NULL`
12841289
ur_result_t UR_APICALL urSamplerGetInfo(
12851290
ur_sampler_handle_t hSampler, ///< [in] handle of the sampler object
12861291
ur_sampler_info_t propName, ///< [in] name of the sampler property to query

test/conformance/sampler/urSamplerGetInfo.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,22 @@ TEST_P(urSamplerGetInfoTest, InvalidEnumerationInfo) {
7171
UR_RESULT_ERROR_INVALID_ENUMERATION);
7272
}
7373

74-
TEST_P(urSamplerGetInfoTest, InvalidValueNull) {
74+
TEST_P(urSamplerGetInfoTest, InvalidNullPointerPropSizeRet) {
7575
ASSERT_EQ_RESULT(urSamplerGetInfo(sampler, UR_SAMPLER_INFO_ADDRESSING_MODE,
7676
0, nullptr, nullptr),
77-
UR_RESULT_ERROR_INVALID_VALUE);
77+
UR_RESULT_ERROR_INVALID_NULL_POINTER);
78+
}
79+
80+
TEST_P(urSamplerGetInfoTest, InvalidNullPointerPropValue) {
81+
ASSERT_EQ_RESULT(urSamplerGetInfo(sampler, UR_SAMPLER_INFO_ADDRESSING_MODE,
82+
sizeof(ur_sampler_addressing_mode_t),
83+
nullptr, nullptr),
84+
UR_RESULT_ERROR_INVALID_NULL_POINTER);
85+
}
86+
87+
TEST_P(urSamplerGetInfoTest, InvalidSizePropSize) {
88+
ur_sampler_addressing_mode_t mode;
89+
ASSERT_EQ_RESULT(urSamplerGetInfo(sampler, UR_SAMPLER_INFO_ADDRESSING_MODE,
90+
0, &mode, nullptr),
91+
UR_RESULT_ERROR_INVALID_SIZE);
7892
}

0 commit comments

Comments
 (0)