From 30c5b2fb9ce19778820b62cc713416444f334512 Mon Sep 17 00:00:00 2001 From: Lvwenxuan <1666510747@qq.com> Date: Wed, 8 Jan 2025 20:39:06 +0800 Subject: [PATCH] =?UTF-8?q?#include=20=20//=20=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E6=A0=87=E5=87=86=E8=BE=93=E5=85=A5=E8=BE=93=E5=87=BA=E5=BA=93?= =?UTF-8?q?=EF=BC=88=E6=9C=AC=E4=BE=8B=E4=B8=AD=E6=9C=AA=E7=9B=B4=E6=8E=A5?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=EF=BC=89=20#include=20=20//=20?= =?UTF-8?q?=E5=BC=95=E5=85=A5POSIX=E6=93=8D=E4=BD=9C=E7=B3=BB=E7=BB=9FAPI?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E4=BE=9Bmkdir(),=20rmdir()=E7=AD=89=E5=87=BD?= =?UTF-8?q?=E6=95=B0=20#include=20=20//=20=E5=BC=95=E5=85=A5C?= =?UTF-8?q?=E6=A0=87=E5=87=86=E5=BA=93=E5=87=BD=E6=95=B0=EF=BC=88=E6=9C=AC?= =?UTF-8?q?=E4=BE=8B=E4=B8=AD=E6=9C=AA=E7=9B=B4=E6=8E=A5=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=EF=BC=89=20#include=20=20//=20=E5=BC=95=E5=85=A5?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8E=A7=E5=88=B6=E9=80=89=E9=A1=B9=EF=BC=8C?= =?UTF-8?q?=E7=94=A8=E4=BA=8Eopen()=E5=87=BD=E6=95=B0=20#include=20=20//=20=E5=BC=95=E5=85=A5=E5=AD=97=E7=AC=A6=E4=B8=B2?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=87=BD=E6=95=B0=EF=BC=88=E6=9C=AC=E4=BE=8B?= =?UTF-8?q?=E4=B8=AD=E6=9C=AA=E7=9B=B4=E6=8E=A5=E4=BD=BF=E7=94=A8=EF=BC=89?= =?UTF-8?q?=20#include=20=20//=20=E5=BC=95=E5=85=A5Google?= =?UTF-8?q?=20Test=E6=A1=86=E6=9E=B6=EF=BC=8C=E6=8F=90=E4=BE=9B=E6=96=AD?= =?UTF-8?q?=E8=A8=80=E5=AE=8F=20#include=20"It=5Fprocess=5Fplimits.h"=20//?= =?UTF-8?q?=20=E5=BC=95=E5=85=A5=E8=87=AA=E5=AE=9A=E4=B9=89=E5=A4=B4?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E5=8F=AF=E8=83=BD=E5=8C=85=E5=90=AB?= =?UTF-8?q?WriteFile()=E7=AD=89=E5=87=BD=E6=95=B0=E7=9A=84=E5=A3=B0?= =?UTF-8?q?=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit // 定义测试函数ItProcessPlimitsDevices009 void ItProcessPlimitsDevices009(void) { 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) } --- .../smoke/It_process_plimits_devices_009.cpp | 78 +++++++++++-------- 1 file changed, 46 insertions(+), 32 deletions(-) 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; // ļģʽ˴δʼDZ + 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Чļ + // Ϊ˴ԺͱDZھ棬Ȼ(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 }