osquery-1/osquery/main/lib.cpp

70 lines
1.9 KiB
C++
Raw Normal View History

/**
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under both the Apache 2.0 license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
* You may select, at your option, one of the above-listed licenses.
*/
2015-05-12 06:31:13 +00:00
2014-09-13 21:28:45 +00:00
#include <string>
2014-07-31 00:35:19 +00:00
#include <osquery/core.h>
#include "osquery/core/conversions.h"
// If CMake/gmake did not define a build version set the version to 1.0.
// clang-format off
#if !defined(OSQUERY_BUILD_VERSION)
#warning The build should define OSQUERY_BUILD_VERSION.
#define OSQUERY_BUILD_VERSION 1.0.0-unknown
#endif
#if !defined(OSQUERY_PLATFORM_MASK)
#error The build must define OSQUERY_PLATFORM_MASK.
#endif
// clang-format on
2014-07-31 00:35:19 +00:00
namespace osquery {
2016-02-02 00:42:37 +00:00
#ifdef DEBUG
const std::string kVersion = CONCAT(OSQUERY_BUILD_VERSION, -debug);
#else
const std::string kVersion = STR(OSQUERY_BUILD_VERSION);
2016-02-02 00:42:37 +00:00
#endif
2015-02-19 01:19:45 +00:00
const std::string kSDKVersion = OSQUERY_SDK_VERSION;
2015-05-27 23:50:57 +00:00
const std::string kSDKPlatform = OSQUERY_PLATFORM;
2016-10-22 05:08:59 +00:00
const PlatformType kPlatformType =
static_cast<PlatformType>(OSQUERY_PLATFORM_MASK);
bool versionAtLeast(const std::string& v, const std::string& sdk) {
if (v == "0.0.0" || sdk == "0.0.0") {
// This is a please-pass check.
return true;
}
auto required_version = split(v, ".");
auto build_version = split(sdk, ".");
size_t index = 0;
for (const auto& chunk : build_version) {
if (required_version.size() <= index) {
return true;
}
try {
if (std::stoi(chunk) < std::stoi(required_version[index])) {
return false;
} else if (std::stoi(chunk) > std::stoi(required_version[index])) {
return true;
}
} catch (const std::invalid_argument& /* e */) {
if (chunk.compare(required_version[index]) < 0) {
return false;
}
}
index++;
}
return true;
}
2014-07-31 00:35:19 +00:00
}