diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2014-11-12 12:12:01 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2014-11-12 12:12:01 +0100 |
commit | 27cf24171a014b63e139e7fc77422753beac44e1 (patch) | |
tree | 00f020584a077636e1c5d7793a3da59ed976547c /platform/default | |
parent | f4cc85340eb4285729018df61fffd39418756087 (diff) | |
download | qtlocation-mapboxgl-27cf24171a014b63e139e7fc77422753beac44e1.tar.gz |
check library versions against header symbols in static initialization function
fixes #580
Diffstat (limited to 'platform/default')
-rw-r--r-- | platform/default/http_request_baton_curl.cpp | 15 | ||||
-rw-r--r-- | platform/default/image.cpp | 14 |
2 files changed, 29 insertions, 0 deletions
diff --git a/platform/default/http_request_baton_curl.cpp b/platform/default/http_request_baton_curl.cpp index b8b4bac5fd..02e9497c9e 100644 --- a/platform/default/http_request_baton_curl.cpp +++ b/platform/default/http_request_baton_curl.cpp @@ -1,6 +1,7 @@ #include <mbgl/storage/http_request_baton.hpp> #include <mbgl/util/uv-messenger.h> #include <mbgl/util/time.hpp> +#include <mbgl/util/string.hpp> #include <uv.h> #include <curl/curl.h> @@ -9,6 +10,20 @@ #include <cassert> #include <cstring> + +// Check curl library version. +const static bool curl_version_check = []() { + const auto version = curl_version_info(CURLVERSION_NOW); + if (version->version_num != LIBCURL_VERSION_NUM) { + throw std::runtime_error(mbgl::util::sprintf<96>( + "libcurl version mismatch: headers report %d.%d.%d, but library reports %d.%d.%d", + (LIBCURL_VERSION_NUM >> 16) & 0xFF, (LIBCURL_VERSION_NUM >> 8) & 0xFF, LIBCURL_VERSION_NUM & 0xFF, + (version->version_num >> 16) & 0xFF, (version->version_num >> 8) & 0xFF, version->version_num & 0xFF)); + } + return true; +}(); + + // This file contains code from http://curl.haxx.se/libcurl/c/multi-uv.html: /*************************************************************************** diff --git a/platform/default/image.cpp b/platform/default/image.cpp index 68d1786913..bf119fee05 100644 --- a/platform/default/image.cpp +++ b/platform/default/image.cpp @@ -1,4 +1,5 @@ #include <mbgl/util/image.hpp> +#include <mbgl/util/string.hpp> #include <png.h> @@ -8,6 +9,19 @@ #include <cstring> +// Check png library version. +const static bool png_version_check = []() { + const png_uint_32 version = png_access_version_number(); + if (version != PNG_LIBPNG_VER) { + throw std::runtime_error(mbgl::util::sprintf<96>( + "libpng version mismatch: headers report %d.%d.%d, but library reports %d.%d.%d", + PNG_LIBPNG_VER / 10000, (PNG_LIBPNG_VER / 100) % 100, PNG_LIBPNG_VER % 100, + version / 10000, (version / 100) % 100, version % 100)); + } + return true; +}(); + + namespace mbgl { namespace util { |