Skip to content

Commit b8cc5ae

Browse files
authored
Merge pull request #860 from veselypeta/petr/fix-device-get-errorcodes
[UR] Add validation check to urDeviceGet
2 parents 12c8312 + 019551c commit b8cc5ae

File tree

6 files changed

+23
-1
lines changed

6 files changed

+23
-1
lines changed

include/ur_api.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,8 @@ typedef enum ur_device_type_t {
13061306
/// + `::UR_DEVICE_TYPE_VPU < DeviceType`
13071307
/// - ::UR_RESULT_ERROR_INVALID_SIZE
13081308
/// + `NumEntries == 0 && phDevices != NULL`
1309+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
1310+
/// + `NumEntries > 0 && phDevices == NULL`
13091311
/// - ::UR_RESULT_ERROR_INVALID_VALUE
13101312
UR_APIEXPORT ur_result_t UR_APICALL
13111313
urDeviceGet(

scripts/core/device.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ params:
146146
returns:
147147
- $X_RESULT_ERROR_INVALID_SIZE:
148148
- "`NumEntries == 0 && phDevices != NULL`"
149+
- $X_RESULT_ERROR_INVALID_NULL_POINTER:
150+
- "`NumEntries > 0 && phDevices == NULL`"
149151
- $X_RESULT_ERROR_INVALID_VALUE
150152
--- #--------------------------------------------------------------------------
151153
type: enum

source/loader/layers/validation/ur_valddi.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,10 @@ __urdlllocal ur_result_t UR_APICALL urDeviceGet(
419419
return UR_RESULT_ERROR_INVALID_NULL_HANDLE;
420420
}
421421

422+
if (NumEntries > 0 && phDevices == NULL) {
423+
return UR_RESULT_ERROR_INVALID_NULL_POINTER;
424+
}
425+
422426
if (UR_DEVICE_TYPE_VPU < DeviceType) {
423427
return UR_RESULT_ERROR_INVALID_ENUMERATION;
424428
}

source/loader/ur_libapi.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -714,6 +714,8 @@ ur_result_t UR_APICALL urPlatformGetBackendOption(
714714
/// + `::UR_DEVICE_TYPE_VPU < DeviceType`
715715
/// - ::UR_RESULT_ERROR_INVALID_SIZE
716716
/// + `NumEntries == 0 && phDevices != NULL`
717+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
718+
/// + `NumEntries > 0 && phDevices == NULL`
717719
/// - ::UR_RESULT_ERROR_INVALID_VALUE
718720
ur_result_t UR_APICALL urDeviceGet(
719721
ur_platform_handle_t hPlatform, ///< [in] handle of the platform instance

source/ur_api.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,8 @@ ur_result_t UR_APICALL urPlatformGetBackendOption(
618618
/// + `::UR_DEVICE_TYPE_VPU < DeviceType`
619619
/// - ::UR_RESULT_ERROR_INVALID_SIZE
620620
/// + `NumEntries == 0 && phDevices != NULL`
621+
/// - ::UR_RESULT_ERROR_INVALID_NULL_POINTER
622+
/// + `NumEntries > 0 && phDevices == NULL`
621623
/// - ::UR_RESULT_ERROR_INVALID_VALUE
622624
ur_result_t UR_APICALL urDeviceGet(
623625
ur_platform_handle_t hPlatform, ///< [in] handle of the platform instance

test/conformance/device/urDeviceGet.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ TEST_F(urDeviceGetTest, InvalidEnumerationDevicesType) {
4949
urDeviceGet(platform, UR_DEVICE_TYPE_FORCE_UINT32, 0, nullptr, &count));
5050
}
5151

52-
TEST_F(urDeviceGetTest, InvalidValueNumEntries) {
52+
TEST_F(urDeviceGetTest, InvalidSizeNumEntries) {
5353
uint32_t count = 0;
5454
ASSERT_SUCCESS(
5555
urDeviceGet(platform, UR_DEVICE_TYPE_ALL, 0, nullptr, &count));
@@ -59,3 +59,13 @@ TEST_F(urDeviceGetTest, InvalidValueNumEntries) {
5959
UR_RESULT_ERROR_INVALID_SIZE,
6060
urDeviceGet(platform, UR_DEVICE_TYPE_ALL, 0, devices.data(), nullptr));
6161
}
62+
63+
TEST_F(urDeviceGetTest, InvalidNullPointerDevices) {
64+
uint32_t count = 0;
65+
ASSERT_SUCCESS(
66+
urDeviceGet(platform, UR_DEVICE_TYPE_ALL, 0, nullptr, &count));
67+
ASSERT_NE(count, 0);
68+
ASSERT_EQ_RESULT(
69+
UR_RESULT_ERROR_INVALID_NULL_POINTER,
70+
urDeviceGet(platform, UR_DEVICE_TYPE_ALL, count, nullptr, nullptr));
71+
}

0 commit comments

Comments
 (0)