two more toctou bugs
This commit is contained in:
@@ -33,9 +33,7 @@ std::string toLowerCase(const std::string& input) {
|
|||||||
|
|
||||||
std::optional<std::string> getFileBySuffix(const std::string& dir, const std::string& suffix,
|
std::optional<std::string> getFileBySuffix(const std::string& dir, const std::string& suffix,
|
||||||
bool check_lower_case) {
|
bool check_lower_case) {
|
||||||
if (!std::filesystem::exists(dir)) {
|
try {
|
||||||
return {};
|
|
||||||
}
|
|
||||||
for (const auto& entry : std::filesystem::recursive_directory_iterator(dir)) {
|
for (const auto& entry : std::filesystem::recursive_directory_iterator(dir)) {
|
||||||
if (entry.is_regular_file()) {
|
if (entry.is_regular_file()) {
|
||||||
std::string filename = entry.path().filename().string();
|
std::string filename = entry.path().filename().string();
|
||||||
@@ -49,6 +47,8 @@ std::optional<std::string> getFileBySuffix(const std::string& dir, const std::st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (const std::filesystem::filesystem_error&) {
|
||||||
|
}
|
||||||
|
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,23 +23,21 @@ std::vector<float> waybar::modules::CpuFrequency::parseCpuFrequencies() {
|
|||||||
|
|
||||||
if (frequencies.size() <= 0) {
|
if (frequencies.size() <= 0) {
|
||||||
std::string cpufreq_dir = "/sys/devices/system/cpu/cpufreq";
|
std::string cpufreq_dir = "/sys/devices/system/cpu/cpufreq";
|
||||||
if (std::filesystem::exists(cpufreq_dir)) {
|
try {
|
||||||
std::vector<std::string> frequency_files = {"/cpuinfo_min_freq", "/cpuinfo_max_freq"};
|
std::vector<std::string> frequency_files = {"/cpuinfo_min_freq", "/cpuinfo_max_freq"};
|
||||||
for (auto& p : std::filesystem::directory_iterator(cpufreq_dir)) {
|
for (auto& p : std::filesystem::directory_iterator(cpufreq_dir)) {
|
||||||
for (const auto& freq_file : frequency_files) {
|
for (const auto& freq_file : frequency_files) {
|
||||||
std::string freq_file_path = p.path().string() + freq_file;
|
std::string freq_file_path = p.path().string() + freq_file;
|
||||||
if (std::filesystem::exists(freq_file_path)) {
|
|
||||||
std::string freq_value;
|
std::string freq_value;
|
||||||
std::ifstream freq(freq_file_path);
|
std::ifstream freq(freq_file_path);
|
||||||
if (freq.is_open()) {
|
if (freq.is_open()) {
|
||||||
getline(freq, freq_value);
|
getline(freq, freq_value);
|
||||||
float frequency = std::strtol(freq_value.c_str(), nullptr, 10);
|
float frequency = std::strtol(freq_value.c_str(), nullptr, 10);
|
||||||
frequencies.push_back(frequency / 1000);
|
frequencies.push_back(frequency / 1000);
|
||||||
freq.close();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (const std::filesystem::filesystem_error&) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user