From 320799ca5c3e0074728f1a956e1b8861089bf559 Mon Sep 17 00:00:00 2001 From: obdev Date: Tue, 17 Oct 2023 11:44:23 +0000 Subject: [PATCH] fix conn attr invalid cannot connect while change user --- .../obmysql/packet/ompk_handshake_response.cpp | 18 ++++++------------ src/observer/mysql/obmp_change_user.cpp | 8 ++++---- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/deps/oblib/src/rpc/obmysql/packet/ompk_handshake_response.cpp b/deps/oblib/src/rpc/obmysql/packet/ompk_handshake_response.cpp index 2c0e2d77c5..c1742fb17c 100644 --- a/deps/oblib/src/rpc/obmysql/packet/ompk_handshake_response.cpp +++ b/deps/oblib/src/rpc/obmysql/packet/ompk_handshake_response.cpp @@ -149,28 +149,22 @@ int OMPKHandshakeResponse::decode() LOG_WARN("fail to push back str_kv", K(str_kv), K(ret)); } } else { - ret = OB_INVALID_ARGUMENT; - LOG_ERROR("invalid packet", K(ret), K(all_attrs_len), K(value_len), K((end -pos))); + // skip error } } else { - ret = OB_INVALID_ARGUMENT; - LOG_ERROR("invalid packet", K(ret), K(all_attrs_len), K(value_len)); + // skip error } } else { - ret = OB_INVALID_ARGUMENT; - LOG_ERROR("invalid packet", K(ret), K(all_attrs_len), K(value_inc_len)); + // skip error } } else { - ret = OB_INVALID_ARGUMENT; - LOG_ERROR("invalid packet", K(ret), K(all_attrs_len), K(key_len), K((end - pos))); + // skip error } } else { - ret = OB_INVALID_ARGUMENT; - LOG_ERROR("invalid packet", K(ret), K(all_attrs_len), K(key_len)); + // skip error } } else { - ret = OB_INVALID_ARGUMENT; - LOG_ERROR("error", K(ret), K(all_attrs_len), K(key_inc_len)); + // skip error } } } else { diff --git a/src/observer/mysql/obmp_change_user.cpp b/src/observer/mysql/obmp_change_user.cpp index eedfe1d0ea..cd81f41f95 100644 --- a/src/observer/mysql/obmp_change_user.cpp +++ b/src/observer/mysql/obmp_change_user.cpp @@ -143,13 +143,13 @@ int ObMPChangeUser::decode_string_kv(const char *attrs_end, const char *&pos, Ob } else { if (OB_FAIL(ObMySQLUtil::get_length(pos, key_len))) { OB_LOG(WARN, "fail t get key len", K(pos), K(ret)); + } else if (pos + key_len >= attrs_end) { + // skip this value + pos = attrs_end; } else { kv.key_.assign_ptr(pos, static_cast(key_len)); pos += key_len; - if (pos >= attrs_end) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("unexpected key len", K(ret), K(key_len)); - } else if (OB_FAIL(ObMySQLUtil::get_length(pos, value_len))) { + if (OB_FAIL(ObMySQLUtil::get_length(pos, value_len))) { OB_LOG(WARN, "fail t get value len", K(pos), K(ret)); } else { kv.value_.assign_ptr(pos, static_cast(value_len));