verify error code for empty bucket name
This commit is contained in:
@ -192,7 +192,11 @@ int ObCosWrapperHandle::build_bucket_and_object_name(const ObString &uri)
|
||||
if ('/' == *(uri.ptr() + bucket_end)) {
|
||||
ObString::obstr_size_t bucket_length = bucket_end - bucket_start;
|
||||
//must end with '\0'
|
||||
if (OB_FAIL(databuff_printf(bucket_name_buff, OB_MAX_URI_LENGTH, "%.*s", bucket_length, uri.ptr() + bucket_start))) {
|
||||
if (OB_UNLIKELY(bucket_length <= 0)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
OB_LOG(WARN,"bucket is empty", K(ret), K(bucket_end), K(bucket_start), K(uri));
|
||||
} else if (OB_FAIL(databuff_printf(bucket_name_buff, OB_MAX_URI_LENGTH, "%.*s",
|
||||
bucket_length, uri.ptr() + bucket_start))) {
|
||||
OB_LOG(WARN, "fail to deep copy bucket", K(uri), K(bucket_start), K(bucket_length), K(ret));
|
||||
} else {
|
||||
bucket_name_.assign_ptr(bucket_name_buff, strlen(bucket_name_buff) + 1);// must include '\0'
|
||||
|
||||
2
deps/oblib/src/lib/restore/ob_i_storage.cpp
vendored
2
deps/oblib/src/lib/restore/ob_i_storage.cpp
vendored
@ -103,7 +103,7 @@ int handle_listed_directory(ObBaseDirEntryOperator &op,
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int get_storage_prefix_from_path(const common::ObString &uri, const char *&prefix)
|
||||
int get_storage_prefix_from_path(const common::ObString &uri, const char *&prefix)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (uri.prefix_match(OB_OSS_PREFIX)) {
|
||||
|
||||
1
deps/oblib/src/lib/restore/ob_i_storage.h
vendored
1
deps/oblib/src/lib/restore/ob_i_storage.h
vendored
@ -53,6 +53,7 @@ int handle_listed_object(ObBaseDirEntryOperator &op,
|
||||
const char *obj_name, const int64_t obj_name_len, const int64_t obj_size);
|
||||
int handle_listed_directory(ObBaseDirEntryOperator &op,
|
||||
const char *dir_name, const int64_t dir_name_len);
|
||||
int get_storage_prefix_from_path(const common::ObString &uri, const char *&prefix);
|
||||
int build_bucket_and_object_name(ObIAllocator &allocator,
|
||||
const ObString &uri, ObString &bucket, ObString &object);
|
||||
int construct_fragment_full_name(const ObString &logical_appendable_object_name,
|
||||
|
||||
@ -144,7 +144,10 @@ int get_bucket_object_name(const ObString &uri, ObString &bucket, ObString &obje
|
||||
for (bucket_end = bucket_start; OB_SUCC(ret) && bucket_end < uri.length(); ++bucket_end) {
|
||||
if ('/' == *(uri.ptr() + bucket_end)) {
|
||||
ObString::obstr_size_t bucket_length = bucket_end - bucket_start;
|
||||
if (OB_ISNULL(buf = reinterpret_cast<char *>(allocator.alloc(OB_MAX_URI_LENGTH)))) {
|
||||
if (OB_UNLIKELY(bucket_length <= 0)) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
OB_LOG(WARN,"bucket is empty", K(ret), K(bucket_end), K(bucket_start), K(uri));
|
||||
} else if (OB_ISNULL(buf = reinterpret_cast<char *>(allocator.alloc(OB_MAX_URI_LENGTH)))) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
OB_LOG(WARN,"allocate memory error", K(OB_MAX_URI_LENGTH), K(ret));
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user