diff --git a/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp b/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp index c49e2bbb8f9a1e7df31911b4acfc43401ac47ba3..b078935efe5218e73e3cd17555af917b0744a61b 100644 --- a/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp +++ b/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp @@ -47,20 +47,31 @@ DBStatus RelationalStoreDelegateImpl::RemoveDeviceDataInner(const std::string &d LOGE("Invalid mode for Remove device data, %d.", INVALID_ARGS); return INVALID_ARGS; } - if (mode == FLAG_ONLY || mode == FLAG_AND_DATA) { - if (conn_ == nullptr) { - LOGE("Invalid connection for operation!"); - return DB_ERROR; - } - int errCode = conn_->DoClean(mode); + if (conn_ == nullptr) { + LOGE("Invalid connection for operation!"); + return DB_ERROR; + } + int errCode; + if (mode == FLAG_ONLY || mode == FLAG_AND_DATA) { + errCode = conn_->DoClean(mode); if (errCode != E_OK) { LOGE("[RelationalStore Delegate] remove device cloud data failed:%d", errCode); return TransferDBErrno(errCode); } return OK; } - return RemoveDeviceData(device, ""); + + if (device.empty() || device.length() > DBConstant::MAX_DEV_LENGTH) { + LOGE("[RelationalStore Delegate] Remove device data with invalid device name."); + return INVALID_ARGS; + } + errCode = conn_->RemoveDeviceData(device, ""); + if (errCode != E_OK) { + LOGW("[RelationalStore Delegate] remove device data failed:%d", errCode); + return TransferDBErrno(errCode); + } + return OK; } int32_t RelationalStoreDelegateImpl::GetCloudSyncTaskCount() @@ -131,7 +142,7 @@ DBStatus RelationalStoreDelegateImpl::RemoveDeviceData(const std::string &device return DB_ERROR; } - if (device.empty() || device.length() > DBConstant::MAX_DEV_LENGTH || + if (device.empty() || device.length() > DBConstant::MAX_DEV_LENGTH || tableName.empty() || !ParamCheckUtils::CheckRelationalTableName(tableName)) { LOGE("[RelationalStore Delegate] Remove device data with invalid device name or table name."); return INVALID_ARGS; @@ -291,4 +302,4 @@ DBStatus RelationalStoreDelegateImpl::UnRegisterObserver() return RegisterObserver(nullptr); } } // namespace DistributedDB -#endif \ No newline at end of file +#endif diff --git a/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_relational_test.cpp b/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_relational_test.cpp index 326c0e39b0e36d6e2e56653fa37cda077b36aff9..22765e2d363f1b4e66760ec038af26b3a72d6f97 100644 --- a/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_relational_test.cpp +++ b/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_relational_test.cpp @@ -1139,6 +1139,9 @@ HWTEST_F(DistributedDBInterfacesRelationalTest, RelationalRemoveDeviceDataTest00 * @tc.expected: step4. invalid */ EXPECT_EQ(delegate->RemoveDeviceData(""), INVALID_ARGS); + EXPECT_EQ(delegate->RemoveDeviceData("DEVICE_A", ""), INVALID_ARGS); + std::string deviceName(DBConstant::MAX_DEV_LENGTH + 1, 'a'); + EXPECT_EQ(delegate->RemoveDeviceData(deviceName), INVALID_ARGS); EXPECT_EQ(delegate->RemoveDeviceData("DEVICE_A", "Handle-J@^."), INVALID_ARGS); /**