diff options
author | Egor Tensin <Egor.Tensin@gmail.com> | 2016-10-11 14:29:25 +0300 |
---|---|---|
committer | Egor Tensin <Egor.Tensin@gmail.com> | 2016-10-11 14:29:25 +0300 |
commit | f9228256ae6f52f7fcc7717a53780586bed10e15 (patch) | |
tree | c021a8b75f728f2f9ea2b75591653eacf17fd334 | |
parent | turn on /W4 (diff) | |
download | privilege-check-f9228256ae6f52f7fcc7717a53780586bed10e15.tar.gz privilege-check-f9228256ae6f52f7fcc7717a53780586bed10e15.zip |
hardening
-rw-r--r-- | src/error.hpp | 3 | ||||
-rw-r--r-- | src/main.cpp | 29 |
2 files changed, 21 insertions, 11 deletions
diff --git a/src/error.hpp b/src/error.hpp index e8f47a4..0c5b917 100644 --- a/src/error.hpp +++ b/src/error.hpp @@ -7,6 +7,7 @@ #include <Windows.h> +#include <exception> #include <system_error> typedef std::system_error Error; @@ -24,7 +25,7 @@ namespace error throw make(function_name); } - void report(const Error& e) + void report(const std::exception& e) { MessageBoxA(NULL, e.what(), NULL, MB_OK); } diff --git a/src/main.cpp b/src/main.cpp index be8d5e7..3ae2bcc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,6 +15,7 @@ #include <CommCtrl.h> #include <windowsx.h> +#include <exception> #include <string> #pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") @@ -223,17 +224,25 @@ int APIENTRY wWinMain( wchar_t*, int) { - const auto ret = DialogBoxW( - instance, - MAKEINTRESOURCE(IDD_MAINDIALOG), - NULL, - dialog_main); + try + { + const auto ret = DialogBoxW( + instance, + MAKEINTRESOURCE(IDD_MAINDIALOG), + NULL, + dialog_main); - switch (ret) + switch (ret) + { + case -1: + error::report(error::make("DialogBoxW")); + default: + return static_cast<int>(ret); + } + } + catch (const std::exception& e) { - case -1: - error::report(error::make("DialogBoxW")); - default: - return static_cast<int>(ret); + error::report(e); + return 1; } } |