60 lines
2.1 KiB
Diff
60 lines
2.1 KiB
Diff
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];
|