mirror of https://github.com/ByConity/ByConity
Added a flag to disable introspection functions
This commit is contained in:
parent
efbbb14972
commit
20ae0ee80e
|
@ -334,6 +334,7 @@ struct Settings : public SettingsCollection<Settings>
|
|||
\
|
||||
M(SettingBool, allow_hyperscan, true, "Allow functions that use Hyperscan library. Disable to avoid potentially long compilation times and excessive resource usage.") \
|
||||
M(SettingBool, allow_simdjson, true, "Allow using simdjson library in 'JSON*' functions if AVX2 instructions are available. If disabled rapidjson will be used.") \
|
||||
M(SettingBool, allow_introspection_functions, false, "Allow functions for introspection of ELF and DWARF for query profiling. These functions are slow and may impose security considerations.") \
|
||||
\
|
||||
M(SettingUInt64, max_partitions_per_insert_block, 100, "Limit maximum number of partitions in single INSERTed block. Zero means unlimited. Throw exception if the block contains too many partitions. This setting is a safety threshold, because using large number of partitions is a common misconception.") \
|
||||
M(SettingBool, check_query_single_value_result, true, "Return check query result as single 1/0 value") \
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <Functions/FunctionFactory.h>
|
||||
#include <IO/WriteBufferFromArena.h>
|
||||
#include <IO/WriteHelpers.h>
|
||||
#include <Interpreters/Context.h>
|
||||
|
||||
#include <mutex>
|
||||
#include <filesystem>
|
||||
|
@ -25,14 +26,18 @@ namespace ErrorCodes
|
|||
extern const int ILLEGAL_COLUMN;
|
||||
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
|
||||
extern const int NUMBER_OF_ARGUMENTS_DOESNT_MATCH;
|
||||
extern const int FUNCTION_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
class FunctionAddressToLine : public IFunction
|
||||
{
|
||||
public:
|
||||
static constexpr auto name = "addressToLine";
|
||||
static FunctionPtr create(const Context &)
|
||||
static FunctionPtr create(const Context & context)
|
||||
{
|
||||
if (!context.getSettingsRef().allow_introspection_functions)
|
||||
throw Exception("Introspection functions are disabled, because setting 'allow_introspection_functions' is set to 0", ErrorCodes::FUNCTION_NOT_ALLOWED);
|
||||
|
||||
return std::make_shared<FunctionAddressToLine>();
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <Functions/IFunction.h>
|
||||
#include <Functions/FunctionHelpers.h>
|
||||
#include <Functions/FunctionFactory.h>
|
||||
#include <Interpreters/Context.h>
|
||||
#include <IO/WriteHelpers.h>
|
||||
|
||||
|
||||
|
@ -16,14 +17,17 @@ namespace ErrorCodes
|
|||
extern const int ILLEGAL_COLUMN;
|
||||
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
|
||||
extern const int NUMBER_OF_ARGUMENTS_DOESNT_MATCH;
|
||||
extern const int FUNCTION_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
class FunctionAddressToSymbol : public IFunction
|
||||
{
|
||||
public:
|
||||
static constexpr auto name = "addressToSymbol";
|
||||
static FunctionPtr create(const Context &)
|
||||
static FunctionPtr create(const Context & context)
|
||||
{
|
||||
if (!context.getSettingsRef().allow_introspection_functions)
|
||||
throw Exception("Introspection functions are disabled, because setting 'allow_introspection_functions' is set to 0", ErrorCodes::FUNCTION_NOT_ALLOWED);
|
||||
return std::make_shared<FunctionAddressToSymbol>();
|
||||
}
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <Functions/FunctionHelpers.h>
|
||||
#include <Functions/FunctionFactory.h>
|
||||
#include <IO/WriteHelpers.h>
|
||||
#include <Interpreters/Context.h>
|
||||
|
||||
|
||||
namespace DB
|
||||
|
@ -16,14 +17,18 @@ namespace ErrorCodes
|
|||
extern const int ILLEGAL_COLUMN;
|
||||
extern const int ILLEGAL_TYPE_OF_ARGUMENT;
|
||||
extern const int NUMBER_OF_ARGUMENTS_DOESNT_MATCH;
|
||||
extern const int FUNCTION_NOT_ALLOWED;
|
||||
}
|
||||
|
||||
class FunctionDemangle : public IFunction
|
||||
{
|
||||
public:
|
||||
static constexpr auto name = "demangle";
|
||||
static FunctionPtr create(const Context &)
|
||||
static FunctionPtr create(const Context & context)
|
||||
{
|
||||
if (!context.getSettingsRef().allow_introspection_functions)
|
||||
throw Exception("Introspection functions are disabled, because setting 'allow_introspection_functions' is set to 0", ErrorCodes::FUNCTION_NOT_ALLOWED);
|
||||
|
||||
return std::make_shared<FunctionDemangle>();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue