From 357cf76409d30341a2c4eedcf2568f0abd56e88d Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Sat, 6 Jun 2020 15:13:39 +0200 Subject: More runtime error checking --- debian/changelog | 6 ++++++ plugins/statistics/statistics.cpp | 6 +++++- plugins/weblog/weblog.cpp | 9 ++++++++- response.cpp | 16 ++++++++++++++-- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index 82579ef..5edf7b3 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +webserver (1.10) UNRELEASED; urgency=medium + + * More runtime error checking + + -- Roland Reichwein Sat, 06 Jun 2020 15:12:35 +0200 + webserver (1.9) unstable; urgency=medium * Fix fcgi output size (content-length was 1 too big) diff --git a/plugins/statistics/statistics.cpp b/plugins/statistics/statistics.cpp index 3ebd301..b1778f7 100644 --- a/plugins/statistics/statistics.cpp +++ b/plugins/statistics/statistics.cpp @@ -44,7 +44,11 @@ namespace { return 0; } - result += stoull(elements[column]); + try { + result += stoull(elements[column]); + } catch(...) { + std::cerr << "Error: Stats value " << elements[column] << " malformed." << std::endl; + } } return result; diff --git a/plugins/weblog/weblog.cpp b/plugins/weblog/weblog.cpp index 1e1b6b2..a64ee1b 100644 --- a/plugins/weblog/weblog.cpp +++ b/plugins/weblog/weblog.cpp @@ -244,6 +244,9 @@ namespace { size_t page) { try { + if (page > std::numeric_limits::max()) + throw std::runtime_error("Bad page index: "s + std::to_string(page)); + HtmlPage htmlPage{GetRequestParam, "

"s + GetRequestParam("WEBLOG_NAME") + "

"s}; fs::path link{ GetRequestParam("plugin_path")}; @@ -422,7 +425,11 @@ std::string weblog_plugin::generate_page( size_t page {0}; auto it {query.find("page")}; if (it != query.end()) { - page = stoul(it->second); + try { + page = stoul(it->second); + } catch(...) { + // ignore: keep default 0 + } } if (is_index_page(rel_target)) diff --git a/response.cpp b/response.cpp index 4e66dd3..98abac4 100644 --- a/response.cpp +++ b/response.cpp @@ -224,7 +224,14 @@ std::unordered_map

"s + status + " "s + message + "

"s; -- cgit v1.2.3