From 0fd63084dc35cefa6a6e2eb1cddbc58e546bbc15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Mon, 9 Jan 2023 10:45:51 +0800 Subject: [PATCH] Global: fix other possible bugs where enumerating directories without ignoring `.` and `..` --- src/detection/battery/battery_linux.c | 3 +++ src/detection/displayserver/linux/displayserver_linux.c | 3 +++ src/detection/packages/packages_linux.c | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/detection/battery/battery_linux.c b/src/detection/battery/battery_linux.c index 6fe799eb0..756dd9c8a 100644 --- a/src/detection/battery/battery_linux.c +++ b/src/detection/battery/battery_linux.c @@ -99,6 +99,9 @@ const char* ffDetectBatteryImpl(FFinstance* instance, FFlist* results) { struct dirent* entry; while((entry = readdir(dirp)) != NULL) { + if(strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + ffStrbufAppendS(&baseDir, entry->d_name); parseBattery(&baseDir, results); ffStrbufSubstrBefore(&baseDir, baseDirLength); diff --git a/src/detection/displayserver/linux/displayserver_linux.c b/src/detection/displayserver/linux/displayserver_linux.c index f2e0910b1..d64128a39 100644 --- a/src/detection/displayserver/linux/displayserver_linux.c +++ b/src/detection/displayserver/linux/displayserver_linux.c @@ -73,6 +73,9 @@ static void parseDRM(FFDisplayServerResult* result) struct dirent* entry; while((entry = readdir(dirp)) != NULL) { + if(strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; + ffStrbufAppendS(&drmDir, entry->d_name); ffStrbufAppendS(&drmDir, "/modes"); diff --git a/src/detection/packages/packages_linux.c b/src/detection/packages/packages_linux.c index f4b363d54..cd5babf65 100644 --- a/src/detection/packages/packages_linux.c +++ b/src/detection/packages/packages_linux.c @@ -309,6 +309,8 @@ static void getPackageCountsBedrock(const FFinstance* instance, FFstrbuf* baseDi { if(entry->d_type != DT_DIR) continue; + if(strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + continue; ffStrbufAppendS(baseDir, entry->d_name); getPackageCounts(instance, baseDir, packageCounts);