You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
7 years ago
|
diff -up usbguard-0.7.0/src/Library/ConfigFilePrivate.cpp.strict-config usbguard-0.7.0/src/Library/ConfigFilePrivate.cpp
|
||
|
--- usbguard-0.7.0/src/Library/ConfigFilePrivate.cpp.strict-config 2017-11-03 10:43:09.528657179 +0100
|
||
|
+++ usbguard-0.7.0/src/Library/ConfigFilePrivate.cpp 2017-11-03 11:03:51.338013408 +0100
|
||
|
@@ -23,6 +23,7 @@
|
||
|
#include "ConfigFilePrivate.hpp"
|
||
|
#include "Common/Utility.hpp"
|
||
|
|
||
|
+#include "usbguard/Exception.hpp"
|
||
|
#include "usbguard/Logger.hpp"
|
||
|
|
||
|
#include <stdexcept>
|
||
|
@@ -53,7 +54,7 @@ namespace usbguard
|
||
|
{
|
||
|
_stream.open(path, std::ios::in|std::ios::out);
|
||
|
if (!_stream.is_open()) {
|
||
|
- throw std::runtime_error("Can't open " + path);
|
||
|
+ throw Exception("Configuration", path, "unable to open the configuration file");
|
||
|
}
|
||
|
_dirty = false;
|
||
|
parse();
|
||
|
@@ -62,7 +63,7 @@ namespace usbguard
|
||
|
void ConfigFilePrivate::write()
|
||
|
{
|
||
|
if (!_stream.is_open()) {
|
||
|
- throw std::runtime_error("BUG: ConfigFilePrivate::write: write() before open()");
|
||
|
+ throw USBGUARD_BUG("ConfigFilePrivate::write: write() before open()");
|
||
|
}
|
||
|
|
||
|
if (_dirty) {
|
||
|
@@ -116,21 +117,22 @@ namespace usbguard
|
||
|
while(std::getline(_stream, config_line)) {
|
||
|
++config_line_number;
|
||
|
_lines.push_back(config_line);
|
||
|
+ config_line = trim(config_line);
|
||
|
+
|
||
|
+ if (config_line.size() < 1 || config_line[0] == '#') {
|
||
|
+ continue;
|
||
|
+ }
|
||
|
|
||
|
const size_t nv_separator = config_line.find_first_of("=");
|
||
|
if (nv_separator == std::string::npos) {
|
||
|
- continue;
|
||
|
+ throw Exception("Configuration", "line " + std::to_string(config_line_number), "syntax error");
|
||
|
}
|
||
|
|
||
|
std::string name = trim(config_line.substr(0, nv_separator));
|
||
|
- std::string value = config_line.substr(nv_separator + 1);
|
||
|
-
|
||
|
- if (name[0] == '#') {
|
||
|
- continue;
|
||
|
- }
|
||
|
+ std::string value = trim(config_line.substr(nv_separator + 1));
|
||
|
|
||
|
if (!checkNVPair(name, value)) {
|
||
|
- continue;
|
||
|
+ throw Exception("Configuration", name, "unknown configuration directive");
|
||
|
}
|
||
|
|
||
|
NVPair& setting = _settings[name];
|