Add native handle validation to TV Input HAL AIDL VTS am: d697652774

Original change: https://googleplex-android-review.googlesource.com/c/platform/hardware/interfaces/+/23454917

Change-Id: I28e14bbd3b4d9cd1c41ff4fe7919737094f32eb5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Yixiao Luo
2023-05-30 22:54:24 +00:00
committed by Automerger Merge Worker
2 changed files with 20 additions and 0 deletions

View File

@@ -134,6 +134,19 @@ int32_t TvInputAidlTest::getNumNotIn(vector<int32_t>& nums) {
return result;
}
bool TvInputAidlTest::isValidHandle(NativeHandle& handle) {
if (handle.fds.empty()) {
return false;
}
for (size_t i = 0; i < handle.fds.size(); i++) {
int fd = handle.fds[i].get();
if (fcntl(fd, F_GETFL) < 0) {
return false;
}
}
return true;
}
/*
* GetStreamConfigTest:
* Calls updateStreamConfigurations() for each existing device
@@ -168,6 +181,8 @@ TEST_P(TvInputAidlTest, OpenAndCloseStreamTest) {
ALOGD("OpenAndCloseStreamTest: open stream, device_id=%d, stream_id=%d", device_id,
stream_id);
ASSERT_TRUE(tv_input_->openStream(device_id, stream_id, &handle).isOk());
ASSERT_TRUE(isValidHandle(handle));
ALOGD("OpenAndCloseStreamTest: close stream, device_id=%d, stream_id=%d", device_id,
stream_id);
ASSERT_TRUE(tv_input_->closeStream(device_id, stream_id).isOk());
@@ -268,6 +283,7 @@ TEST_P(TvInputAidlTest, OpenAnOpenedStreamsTest) {
ALOGD("OpenAnOpenedStreamsTest: open stream, device_id=%d, stream_id=%d", device_id, stream_id);
ASSERT_TRUE(tv_input_->openStream(device_id, stream_id, &handle).isOk());
ASSERT_TRUE(isValidHandle(handle));
ALOGD("OpenAnOpenedStreamsTest: open stream, device_id=%d, stream_id=%d", device_id, stream_id);
ASSERT_TRUE(tv_input_->openStream(device_id, stream_id, &handle).getServiceSpecificError() ==

View File

@@ -17,6 +17,7 @@
#pragma once
#include <android/binder_manager.h>
#include <fcntl.h>
#include <aidl/Gtest.h>
#include <aidl/Vintf.h>
@@ -84,6 +85,9 @@ class TvInputAidlTest : public testing::TestWithParam<string> {
*/
int32_t getNumNotIn(vector<int32_t>& nums);
/* Checks if a native handle contains valid file descriptor(s). */
bool isValidHandle(NativeHandle& handle);
protected:
shared_ptr<ITvInput> tv_input_;
shared_ptr<TvInputCallback> tv_input_callback_;