You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by ya...@apache.org on 2023/01/05 11:48:15 UTC
[doris] branch branch-1.2-lts updated: [chore](vulnerability) fix some high risk vulnerabilities report by bug scanner (#15621)
This is an automated email from the ASF dual-hosted git repository.
yangzhg pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new 9b49b2e856 [chore](vulnerability) fix some high risk vulnerabilities report by bug scanner (#15621)
9b49b2e856 is described below
commit 9b49b2e856a76a2b0bc637608092d7179a2980ca
Author: Zhengguo Yang <ya...@gmail.com>
AuthorDate: Thu Jan 5 14:58:23 2023 +0800
[chore](vulnerability) fix some high risk vulnerabilities report by bug scanner (#15621)
* [chore](vulnerability) fix some high risk vulnerabilities report by bug scanner
---
be/src/exprs/aggregate_functions.cpp | 4 +++-
be/src/olap/storage_policy_mgr.cpp | 9 ++++++---
be/src/olap/utils.cpp | 10 ++++++++--
be/src/runtime/plan_fragment_executor.cpp | 4 +++-
be/src/vec/exec/vmysql_scan_node.cpp | 21 ++++++++++++---------
be/src/vec/exec/vrepeat_node.cpp | 6 +++---
be/src/vec/exec/vschema_scan_node.cpp | 16 ++++++++++------
.../functions/functions_multi_string_position.cpp | 12 ++++++++----
8 files changed, 53 insertions(+), 29 deletions(-)
diff --git a/be/src/exprs/aggregate_functions.cpp b/be/src/exprs/aggregate_functions.cpp
index 4a3f9cd090..202dd1852b 100644
--- a/be/src/exprs/aggregate_functions.cpp
+++ b/be/src/exprs/aggregate_functions.cpp
@@ -824,7 +824,9 @@ void AggregateFunctions::string_concat_update(FunctionContext* ctx, const String
const auto header_len = sizeof(StringConcatHeader);
DCHECK(header_len == sizeof(sep->len));
*result = StringVal(ctx->allocate(header_len), header_len);
- *reinterpret_cast<StringConcatHeader*>(result->ptr) = sep->len;
+ if (result->ptr) {
+ *reinterpret_cast<StringConcatHeader*>(result->ptr) = sep->len;
+ }
}
result->append(ctx, sep->ptr, sep->len, src.ptr, src.len);
}
diff --git a/be/src/olap/storage_policy_mgr.cpp b/be/src/olap/storage_policy_mgr.cpp
index e330dc3229..ce9241c7f8 100644
--- a/be/src/olap/storage_policy_mgr.cpp
+++ b/be/src/olap/storage_policy_mgr.cpp
@@ -34,9 +34,12 @@ void StoragePolicyMgr::update(const std::string& name, const StoragePolicyPtr& p
it->second = policy;
s3_fs = std::dynamic_pointer_cast<io::S3FileSystem>(
io::FileSystemMap::instance()->get(name));
- DCHECK(s3_fs);
- s3_fs->set_ak(policy->s3_ak);
- s3_fs->set_sk(policy->s3_sk);
+ if (s3_fs) {
+ s3_fs->set_ak(policy->s3_ak);
+ s3_fs->set_sk(policy->s3_sk);
+ } else {
+ DCHECK(false) << "s3_fs is null";
+ }
}
}
if (s3_fs) {
diff --git a/be/src/olap/utils.cpp b/be/src/olap/utils.cpp
index 367b3d6bda..175e462581 100644
--- a/be/src/olap/utils.cpp
+++ b/be/src/olap/utils.cpp
@@ -61,8 +61,14 @@ namespace doris {
Status olap_compress(const char* src_buf, size_t src_len, char* dest_buf, size_t dest_len,
size_t* written_len, OLAPCompressionType compression_type) {
if (nullptr == src_buf || nullptr == dest_buf || nullptr == written_len) {
- LOG(WARNING) << "input param with nullptr pointer. [src_buf=" << src_buf
- << " dest_buf=" << dest_buf << " written_len=" << written_len << "]";
+ LOG(WARNING) << "input param with nullptr pointer. src_buf is nullptr: "
+ << (src_buf == nullptr ? "true" : "false") << " src_buf=["
+ << (src_buf == nullptr ? "nullptr" : src_buf)
+ << "], dest_buf is nullptr: " << (dest_buf == nullptr ? "true" : "false")
+ << " dest_buf=[" << (dest_buf == nullptr ? "nullptr" : dest_buf)
+ << "], written_len is nullptr: "
+ << (written_len == nullptr ? "true" : " false") << " written_len=["
+ << (dest_buf == nullptr ? -1 : *dest_buf) << "]";
return Status::OLAPInternalError(OLAP_ERR_INPUT_PARAMETER_ERROR);
}
diff --git a/be/src/runtime/plan_fragment_executor.cpp b/be/src/runtime/plan_fragment_executor.cpp
index bc46027bec..e901a738e1 100644
--- a/be/src/runtime/plan_fragment_executor.cpp
+++ b/be/src/runtime/plan_fragment_executor.cpp
@@ -95,7 +95,9 @@ Status PlanFragmentExecutor::prepare(const TExecPlanFragmentParams& request,
fragments_ctx == nullptr ? request.query_globals : fragments_ctx->query_globals;
_runtime_state.reset(new RuntimeState(params, request.query_options, query_globals, _exec_env));
_runtime_state->set_query_fragments_ctx(fragments_ctx);
- _runtime_state->set_query_mem_tracker(fragments_ctx->query_mem_tracker);
+ _runtime_state->set_query_mem_tracker(fragments_ctx == nullptr
+ ? _exec_env->orphan_mem_tracker()
+ : fragments_ctx->query_mem_tracker);
_runtime_state->set_tracer(std::move(tracer));
SCOPED_ATTACH_TASK(_runtime_state.get());
diff --git a/be/src/vec/exec/vmysql_scan_node.cpp b/be/src/vec/exec/vmysql_scan_node.cpp
index c1c206a371..d8148d4b9d 100644
--- a/be/src/vec/exec/vmysql_scan_node.cpp
+++ b/be/src/vec/exec/vmysql_scan_node.cpp
@@ -98,16 +98,15 @@ Status VMysqlScanNode::prepare(RuntimeState* state) {
}
Status VMysqlScanNode::open(RuntimeState* state) {
+ if (nullptr == state) {
+ return Status::InternalError("input pointer is nullptr.");
+ }
START_AND_SCOPE_SPAN(state->get_tracer(), span, "VMysqlScanNode::open");
SCOPED_TIMER(_runtime_profile->total_time_counter());
RETURN_IF_ERROR(ExecNode::open(state));
SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
VLOG_CRITICAL << "MysqlScanNode::Open";
- if (nullptr == state) {
- return Status::InternalError("input pointer is nullptr.");
- }
-
if (!_is_init) {
return Status::InternalError("used before initialize.");
}
@@ -146,11 +145,15 @@ Status VMysqlScanNode::write_text_slot(char* value, int value_length, SlotDescri
}
Status VMysqlScanNode::get_next(RuntimeState* state, vectorized::Block* block, bool* eos) {
+ if (state == nullptr || block == nullptr || eos == nullptr) {
+ return Status::InternalError("input is nullptr");
+ }
INIT_AND_SCOPE_GET_NEXT_SPAN(state->get_tracer(), _get_next_span, "VMysqlScanNode::get_next");
VLOG_CRITICAL << "VMysqlScanNode::GetNext";
- if (state == NULL || block == NULL || eos == NULL)
- return Status::InternalError("input is NULL pointer");
- if (!_is_init) return Status::InternalError("used before initialize.");
+
+ if (!_is_init) {
+ return Status::InternalError("used before initialize.");
+ }
RETURN_IF_CANCELLED(state);
bool mem_reuse = block->mem_reuse();
DCHECK(block->rows() == 0);
@@ -173,8 +176,8 @@ Status VMysqlScanNode::get_next(RuntimeState* state, vectorized::Block* block, b
break;
}
- char** data = NULL;
- unsigned long* length = NULL;
+ char** data = nullptr;
+ unsigned long* length = nullptr;
RETURN_IF_ERROR(_mysql_scanner->get_next_row(&data, &length, &mysql_eos));
if (mysql_eos) {
diff --git a/be/src/vec/exec/vrepeat_node.cpp b/be/src/vec/exec/vrepeat_node.cpp
index cb79fcb317..bcfab1c415 100644
--- a/be/src/vec/exec/vrepeat_node.cpp
+++ b/be/src/vec/exec/vrepeat_node.cpp
@@ -149,13 +149,13 @@ Status VRepeatNode::get_repeated_block(Block* child_block, int repeat_id_idx, Bl
}
Status VRepeatNode::get_next(RuntimeState* state, Block* block, bool* eos) {
+ if (state == nullptr || block == nullptr || eos == nullptr) {
+ return Status::InternalError("input is NULL pointer");
+ }
INIT_AND_SCOPE_GET_NEXT_SPAN(state->get_tracer(), _get_next_span, "VRepeatNode::get_next");
VLOG_CRITICAL << "VRepeatNode::get_next";
SCOPED_TIMER(_runtime_profile->total_time_counter());
- if (state == nullptr || block == nullptr || eos == nullptr) {
- return Status::InternalError("input is NULL pointer");
- }
RETURN_IF_CANCELLED(state);
DCHECK(_repeat_id_idx >= 0);
for (const std::vector<int64_t>& v : _grouping_list) {
diff --git a/be/src/vec/exec/vschema_scan_node.cpp b/be/src/vec/exec/vschema_scan_node.cpp
index 250ea9bdb3..c0b1491c50 100644
--- a/be/src/vec/exec/vschema_scan_node.cpp
+++ b/be/src/vec/exec/vschema_scan_node.cpp
@@ -105,7 +105,11 @@ Status VSchemaScanNode::init(const TPlanNode& tnode, RuntimeState* state) {
}
Status VSchemaScanNode::open(RuntimeState* state) {
- START_AND_SCOPE_SPAN(state->get_tracer(), span, "AggregationNode::close");
+ if (nullptr == state) {
+ return Status::InternalError("input pointer is nullptr.");
+ }
+
+ START_AND_SCOPE_SPAN(state->get_tracer(), span, "VSchemaScanNode::open");
if (!_is_init) {
span->SetStatus(opentelemetry::trace::StatusCode::kError, "Open before Init.");
return Status::InternalError("Open before Init.");
@@ -138,9 +142,9 @@ Status VSchemaScanNode::prepare(RuntimeState* state) {
}
if (nullptr == state) {
- return Status::InternalError("input pointer is nullptr.");
+ return Status::InternalError("state pointer is nullptr.");
}
-
+ START_AND_SCOPE_SPAN(state->get_tracer(), span, "VSchemaScanNode::prepare");
RETURN_IF_ERROR(ScanNode::prepare(state));
SCOPED_CONSUME_MEM_TRACKER(mem_tracker());
@@ -244,13 +248,13 @@ Status VSchemaScanNode::prepare(RuntimeState* state) {
}
Status VSchemaScanNode::get_next(RuntimeState* state, vectorized::Block* block, bool* eos) {
+ if (state == nullptr || block == nullptr || eos == nullptr) {
+ return Status::InternalError("input is NULL pointer");
+ }
INIT_AND_SCOPE_GET_NEXT_SPAN(state->get_tracer(), _get_next_span, "VSchemaScanNode::get_next");
SCOPED_TIMER(_runtime_profile->total_time_counter());
VLOG_CRITICAL << "VSchemaScanNode::GetNext";
- if (state == nullptr || block == nullptr || eos == nullptr) {
- return Status::InternalError("input is NULL pointer");
- }
if (!_is_init) {
return Status::InternalError("used before initialize.");
}
diff --git a/be/src/vec/functions/functions_multi_string_position.cpp b/be/src/vec/functions/functions_multi_string_position.cpp
index c5da16d17d..756d561ee6 100644
--- a/be/src/vec/functions/functions_multi_string_position.cpp
+++ b/be/src/vec/functions/functions_multi_string_position.cpp
@@ -65,11 +65,12 @@ public:
const ColumnConst* col_needles_const =
check_and_get_column_const<ColumnArray>(needles_ptr.get());
- if (col_haystack_const && col_needles_vector)
+ if (col_haystack_const && col_needles_vector) {
return Status::InvalidArgument(
"function '{}' doesn't support search with non-constant needles "
"in constant haystack",
name);
+ }
using ResultType = typename Impl::ResultType;
auto col_res = ColumnVector<ResultType>::create();
@@ -79,17 +80,20 @@ public:
auto& offsets_res = col_offsets->get_data();
Status status;
- if (col_needles_const)
+ if (col_needles_const) {
status = Impl::vector_constant(
col_haystack_vector->get_chars(), col_haystack_vector->get_offsets(),
col_needles_const->get_value<Array>(), vec_res, offsets_res);
- else
+ } else {
status = Impl::vector_vector(col_haystack_vector->get_chars(),
col_haystack_vector->get_offsets(),
col_needles_vector->get_data(),
col_needles_vector->get_offsets(), vec_res, offsets_res);
+ }
- if (!status.ok()) return status;
+ if (!status.ok()) {
+ return status;
+ }
auto nullable_col =
ColumnNullable::create(std::move(col_res), ColumnUInt8::create(col_res->size(), 0));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org