Fix section list buffer out-of-bounds read

This commit is contained in:
obdev
2023-02-06 17:50:29 +08:00
committed by ob-robot
parent a0a4613037
commit 0e74af55d2
2 changed files with 13 additions and 16 deletions

View File

@ -24,14 +24,7 @@ const char * ATTR_CLS::VALUES[] = { \
LST_DO(_ATTR, (,), args) \ LST_DO(_ATTR, (,), args) \
} }
DEF_ATTR_VALUES(Section, ROOT_SERVICE, LOAD_BALANCE, DAILY_MERGE, LOCATION_CACHE, DECL_ATTR_LIST(DEF_ATTR_VALUES);
SSTABLE, LOGSERVICE, CACHE, TRANS, TENANT, RPC, OBPROXY, OBSERVER);
DEF_ATTR_VALUES(Scope, CLUSTER, TENANT);
DEF_ATTR_VALUES(Source, DEFAULT, FILE, OBADMIN, CMDLINE, CLUSTER, TENANT);
DEF_ATTR_VALUES(Session, NO, YES);
DEF_ATTR_VALUES(VisibleLevel, SYS, COMMON, INVISIBLE);
DEF_ATTR_VALUES(EditLevel, READONLY, STATIC_EFFECTIVE, DYNAMIC_EFFECTIVE);
DEF_ATTR_VALUES(CompatMode, MYSQL, ORACLE, COMMON);
bool ObParameterAttr::is_static() const bool ObParameterAttr::is_static() const
{ {

View File

@ -17,6 +17,17 @@
namespace oceanbase { namespace oceanbase {
namespace common { namespace common {
#define DECL_EVAL_MACRO(macro, args...) macro(args)
#define DECL_ATTR_LIST(M) \
DECL_EVAL_MACRO(M, Section, ROOT_SERVICE, LOAD_BALANCE, DAILY_MERGE, LOCATION_CACHE, \
SSTABLE, LOGSERVICE, CACHE, TRANS, TENANT, RPC, OBPROXY, OBSERVER, RESOURCE_LIMIT); \
DECL_EVAL_MACRO(M, Scope, CLUSTER, TENANT); \
DECL_EVAL_MACRO(M, Source, DEFAULT, FILE, OBADMIN, CMDLINE, CLUSTER, TENANT); \
DECL_EVAL_MACRO(M, Session, NO, YES); \
DECL_EVAL_MACRO(M, VisibleLevel, SYS, COMMON, INVISIBLE); \
DECL_EVAL_MACRO(M, EditLevel, READONLY, STATIC_EFFECTIVE, DYNAMIC_EFFECTIVE); \
DECL_EVAL_MACRO(M, CompatMode, MYSQL, ORACLE, COMMON);
#define _ENUM_EXP(arg) arg #define _ENUM_EXP(arg) arg
#define DECL_ATTR(ATTR_CLS, args...) \ #define DECL_ATTR(ATTR_CLS, args...) \
@ -27,14 +38,7 @@ typedef struct ATTR_CLS { \
static const char *VALUES[]; \ static const char *VALUES[]; \
} ATTR_CLS; } ATTR_CLS;
DECL_ATTR(Section, ROOT_SERVICE, LOAD_BALANCE, DAILY_MERGE, LOCATION_CACHE, DECL_ATTR_LIST(DECL_ATTR);
SSTABLE, LOGSERVICE, CACHE, TRANS, TENANT, RPC, OBPROXY, OBSERVER, RESOURCE_LIMIT);
DECL_ATTR(Scope, CLUSTER, TENANT);
DECL_ATTR(Source, DEFAULT, FILE, OBADMIN, CMDLINE, CLUSTER, TENANT);
DECL_ATTR(Session, NO, YES);
DECL_ATTR(VisibleLevel, SYS, COMMON, INVISIBLE);
DECL_ATTR(EditLevel, READONLY, STATIC_EFFECTIVE, DYNAMIC_EFFECTIVE);
DECL_ATTR(CompatMode, MYSQL, ORACLE, COMMON);
// TODO: whether we need this // TODO: whether we need this
struct InfluencePlan {}; struct InfluencePlan {};