From 7988a58c37a302677d74cfe71633115e7440a691 Mon Sep 17 00:00:00 2001 From: Andrii Shvaika Date: Thu, 13 Apr 2023 17:12:59 +0300 Subject: [PATCH] Protection from garbage in redis --- .../server/store/TbRedisLwM2MClientStore.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbRedisLwM2MClientStore.java b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbRedisLwM2MClientStore.java index 9e29177dcd..fb9cc870ad 100644 --- a/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbRedisLwM2MClientStore.java +++ b/common/transport/lwm2m/src/main/java/org/thingsboard/server/transport/lwm2m/server/store/TbRedisLwM2MClientStore.java @@ -16,6 +16,7 @@ package org.thingsboard.server.transport.lwm2m.server.store; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.binary.Hex; import org.springframework.data.redis.connection.RedisClusterConnection; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.Cursor; @@ -48,7 +49,12 @@ public class TbRedisLwM2MClientStore implements TbLwM2MClientStore { if (data == null) { return null; } else { - return deserialize(data); + try { + return deserialize(data); + } catch (Exception e) { + log.warn("[{}] Failed to deserialize client from data: {}", endpoint, Hex.encodeHexString(data), e); + return null; + } } } } @@ -70,7 +76,13 @@ public class TbRedisLwM2MClientStore implements TbLwM2MClientStore { scans.forEach(scan -> { scan.forEachRemaining(key -> { byte[] element = connection.get(key); - clients.add(deserialize(element)); + if (element != null) { + try { + clients.add(deserialize(element)); + } catch (Exception e) { + log.warn("[{}] Failed to deserialize client from data: {}", Hex.encodeHexString(key), Hex.encodeHexString(element), e); + } + } }); }); return clients;