diff --git a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_009.cpp b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_009.cpp index c1fa4a5..78ca0ab 100644 --- a/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_009.cpp +++ b/kernel_liteos_a-master/testsuites/unittest/process/plimits/smoke/It_process_plimits_devices_009.cpp @@ -28,38 +28,52 @@ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include -#include -#include -#include -#include -#include -#include "It_process_plimits.h" - +#include // 引入标准输入输出库(本例中未直接使用) +#include // 引入POSIX操作系统API,提供mkdir(), rmdir()等函数 +#include // 引入C标准库函数(本例中未直接使用) +#include // 引入文件控制选项,用于open()函数 +#include // 引入字符串操作函数(本例中未直接使用) +#include // 引入Google Test框架,提供断言宏 +#include "It_process_plimits.h" // 引入自定义头文件,可能包含WriteFile()等函数的声明 + +// 定义测试函数ItProcessPlimitsDevices009 void ItProcessPlimitsDevices009(void) { - int fd; - int ret; - mode_t mode; - std::string test_dev = "/dev/hi_mipi"; - std::string device_a = "a"; - std::string path = "/proc/plimits/test"; - std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; - - ret = mkdir(path.c_str(), S_IFDIR | mode); - ASSERT_EQ(ret, 0); - - ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); - ASSERT_NE(ret, -1); - - fd = open(test_dev.c_str(), O_RDONLY|O_CREAT); - ASSERT_EQ(fd, -1); - (void)close(fd); - - fd = open(test_dev.c_str(), O_WRONLY|O_CREAT); - ASSERT_EQ(fd, -1); - (void)close(fd); - - ret = rmdir(path.c_str()); - ASSERT_EQ(ret, 0); + int fd; // 声明文件描述符变量 + int ret; // 声明返回值变量,用于存储函数调用的结果 + mode_t mode; // 声明文件模式变量,但此处未初始化,存在潜在问题 + std::string test_dev = "/dev/hi_mipi"; // 定义测试设备文件路径 + std::string device_a = "a"; // 定义设备访问控制规则,但此处规则不完整(通常应包含用户组和权限,如"a * rwm") + std::string path = "/proc/plimits/test"; // 定义测试目录路径 + std::string devicesDenyPath = "/proc/plimits/test/devices.deny"; // 定义设备拒绝列表文件路径 + + // 尝试创建目录,但mode未初始化,可能导致行为不确定 + // 正确的做法是指定一个明确的权限位,如0755,但此处我们假设关注的是目录的创建 + ret = mkdir(path.c_str(), S_IFDIR | mode); // 尝试创建/proc/plimits/test目录 + ASSERT_EQ(ret, 0); // 断言创建目录操作成功(返回值为0) + + // 尝试将设备拒绝规则写入devices.deny文件,但device_a规则不完整 + // WriteFile函数未在代码中定义,可能是自定义函数 + ret = WriteFile(devicesDenyPath.c_str(), device_a.c_str()); // 写入拒绝规则(但规则可能不完整或无效) + ASSERT_NE(ret, -1); // 断言写入操作成功(返回值不为-1) + + // 尝试以只读模式打开测试设备文件/dev/hi_mipi,并尝试创建(如果文件不存在) + // 但由于前面设置了拒绝规则(尽管不完整),预期打开操作会失败 + fd = open(test_dev.c_str(), O_RDONLY|O_CREAT); // 尝试打开(并可能创建)/dev/hi_mipi设备文件,只读模式 + // 断言打开操作失败(文件描述符为-1),因为设备被拒绝访问 + ASSERT_EQ(fd, -1); // 断言打开文件操作失败 + // 注意:这里的close调用是多余的,因为fd为-1,不是有效的文件描述符 + // 但为了代码的整洁性和避免潜在警告,仍然保留(void)close(fd); + (void)close(fd); // 尝试关闭文件(但实际上是多余的) + + // 尝试以只写模式打开测试设备文件/dev/hi_mipi,并尝试创建(如果文件不存在) + // 同样,由于前面设置了拒绝规则,预期打开操作会失败 + fd = open(test_dev.c_str(), O_WRONLY|O_CREAT); // 尝试打开(并可能创建)/dev/hi_mipi设备文件,只写模式 + // 断言打开操作失败(文件描述符为-1),因为设备被拒绝访问 + ASSERT_EQ(fd, -1); // 断言打开文件操作失败 + (void)close(fd); // 尝试关闭文件(但实际上是多余的) + + // 尝试删除之前创建的目录 + ret = rmdir(path.c_str()); // 删除/proc/plimits/test目录 + ASSERT_EQ(ret, 0); // 断言删除目录操作成功(返回值为0) }