Skip to content

Commit ec2d44f

Browse files
authored
chore(server): Don't decode size for empty blob (#6194)
fix(server): Don't decode size for empty blob Signed-off-by: mkaruza <mario@dragonflydb.io>
1 parent c0af6b8 commit ec2d44f

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/core/compact_object.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,6 +1694,8 @@ size_t CompactObj::StrEncoding::DecodedSize(size_t blob_size, uint8_t first_byte
16941694
}
16951695

16961696
size_t CompactObj::StrEncoding::Decode(std::string_view blob, char* dest) const {
1697+
if (blob.empty())
1698+
return 0;
16971699
size_t decoded_len = DecodedSize(blob);
16981700
switch (enc_) {
16991701
case NONE_ENC:

tests/dragonfly/generic_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,3 +342,15 @@ async def test_key_bump_ups(df_factory):
342342
new_slot_id = int(dict(map(lambda s: s.split(":"), debug_key_info.split()))["slot"])
343343
assert new_slot_id + 1 == slot_id
344344
break
345+
346+
347+
@pytest.mark.debug_only
348+
@pytest.mark.asyncio
349+
async def test_command_empty_key(df_factory):
350+
df_server = df_factory.create()
351+
df_server.start()
352+
client = df_server.client()
353+
res = await client.lpush("", "a")
354+
assert res == 1
355+
res = await client.execute_command("KEYS *")
356+
assert len(res) == 1

0 commit comments

Comments
 (0)