From bada18f5f02455b1e4a131e8dd4f3616419611d1 Mon Sep 17 00:00:00 2001 From: liuyao <54liuyao@163.com> Date: Tue, 18 Jul 2023 17:59:42 +0800 Subject: [PATCH 1/2] heap use after free --- source/libs/executor/src/timewindowoperator.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/libs/executor/src/timewindowoperator.c b/source/libs/executor/src/timewindowoperator.c index 69aaef48f4..7a743f8d33 100644 --- a/source/libs/executor/src/timewindowoperator.c +++ b/source/libs/executor/src/timewindowoperator.c @@ -3816,14 +3816,13 @@ void* decodeSSessionKey(void* buf, SSessionKey* key) { int32_t encodeSResultWindowInfo(void** buf, SResultWindowInfo* key, int32_t outLen) { int32_t tlen = 0; tlen += taosEncodeFixedBool(buf, key->isOutput); - tlen += taosEncodeBinary(buf, key->pOutputBuf, outLen); tlen += encodeSSessionKey(buf, &key->sessionWin); return tlen; } void* decodeSResultWindowInfo(void* buf, SResultWindowInfo* key, int32_t outLen) { buf = taosDecodeFixedBool(buf, &key->isOutput); - buf = taosDecodeBinary(buf, &key->pOutputBuf, outLen); + key->pOutputBuf = NULL; buf = decodeSSessionKey(buf, &key->sessionWin); return buf; } From 790101ced292dff70566a2d016eb156dadfc89d2 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Tue, 18 Jul 2023 10:14:04 +0000 Subject: [PATCH 2/2] fix mem leak --- source/libs/stream/src/streamBackendRocksdb.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/libs/stream/src/streamBackendRocksdb.c b/source/libs/stream/src/streamBackendRocksdb.c index 29b3f139fd..0c385e2362 100644 --- a/source/libs/stream/src/streamBackendRocksdb.c +++ b/source/libs/stream/src/streamBackendRocksdb.c @@ -210,6 +210,7 @@ int32_t rebuildDirFromCheckpoint(const char* path, int64_t chkpId, char** dst) { qError("failed to start stream backend at %s, reason: %s", chkp, tstrerror(TAOS_SYSTEM_ERROR(errno))); taosMkDir(state); } + taosMemoryFree(chkp); } *dst = state; @@ -1323,8 +1324,8 @@ bool streamStateIterSeekAndValid(rocksdb_iterator_t* iter, char* buf, size_t len } return true; } -rocksdb_iterator_t* streamStateIterCreate(SStreamState* pState, const char* cfKeyName, - rocksdb_snapshot_t** snapshot, rocksdb_readoptions_t** readOpt) { +rocksdb_iterator_t* streamStateIterCreate(SStreamState* pState, const char* cfKeyName, rocksdb_snapshot_t** snapshot, + rocksdb_readoptions_t** readOpt) { int idx = streamStateGetCfIdx(pState, cfKeyName); SBackendCfWrapper* wrapper = pState->pTdbState->pBackendCfWrapper;