Merge pull request #24772 from taosdata/fix/TD-28539-3.0
fix: invalid memory access during meta snapshot transfer
This commit is contained in:
commit
6cdef62f92
|
@ -96,29 +96,29 @@ int32_t metaSnapRead(SMetaSnapReader* pReader, uint8_t** ppData) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!pData || !nData) {
|
||||||
|
metaError("meta/snap: invalide nData: %" PRId32 " meta snap read failed.", nData);
|
||||||
|
goto _exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
*ppData = taosMemoryMalloc(sizeof(SSnapDataHdr) + nData);
|
||||||
|
if (*ppData == NULL) {
|
||||||
|
code = TSDB_CODE_OUT_OF_MEMORY;
|
||||||
|
goto _err;
|
||||||
|
}
|
||||||
|
|
||||||
|
SSnapDataHdr* pHdr = (SSnapDataHdr*)(*ppData);
|
||||||
|
pHdr->type = SNAP_DATA_META;
|
||||||
|
pHdr->size = nData;
|
||||||
|
memcpy(pHdr->data, pData, nData);
|
||||||
|
|
||||||
|
metaDebug("vgId:%d, vnode snapshot meta read data, version:%" PRId64 " uid:%" PRId64 " blockLen:%d",
|
||||||
|
TD_VID(pReader->pMeta->pVnode), key.version, key.uid, nData);
|
||||||
|
|
||||||
tdbTbcMoveToNext(pReader->pTbc);
|
tdbTbcMoveToNext(pReader->pTbc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pData || !nData) {
|
|
||||||
metaError("meta/snap: invalide nData: %" PRId32 " meta snap read failed.", nData);
|
|
||||||
goto _exit;
|
|
||||||
}
|
|
||||||
|
|
||||||
*ppData = taosMemoryMalloc(sizeof(SSnapDataHdr) + nData);
|
|
||||||
if (*ppData == NULL) {
|
|
||||||
code = TSDB_CODE_OUT_OF_MEMORY;
|
|
||||||
goto _err;
|
|
||||||
}
|
|
||||||
|
|
||||||
SSnapDataHdr* pHdr = (SSnapDataHdr*)(*ppData);
|
|
||||||
pHdr->type = SNAP_DATA_META;
|
|
||||||
pHdr->size = nData;
|
|
||||||
memcpy(pHdr->data, pData, nData);
|
|
||||||
|
|
||||||
metaDebug("vgId:%d, vnode snapshot meta read data, version:%" PRId64 " uid:%" PRId64 " blockLen:%d",
|
|
||||||
TD_VID(pReader->pMeta->pVnode), key.version, key.uid, nData);
|
|
||||||
|
|
||||||
_exit:
|
_exit:
|
||||||
return code;
|
return code;
|
||||||
|
|
||||||
|
@ -619,7 +619,8 @@ SMetaTableInfo getMetaTableInfoFromSnapshot(SSnapContext* ctx) {
|
||||||
|
|
||||||
int32_t ret = MoveToPosition(ctx, idInfo->version, *uidTmp);
|
int32_t ret = MoveToPosition(ctx, idInfo->version, *uidTmp);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
metaDebug("tmqsnap getMetaTableInfoFromSnapshot not exist uid:%" PRIi64 " version:%" PRIi64, *uidTmp, idInfo->version);
|
metaDebug("tmqsnap getMetaTableInfoFromSnapshot not exist uid:%" PRIi64 " version:%" PRIi64, *uidTmp,
|
||||||
|
idInfo->version);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
tdbTbcGet((TBC*)ctx->pCur, (const void**)&pKey, &kLen, (const void**)&pVal, &vLen);
|
tdbTbcGet((TBC*)ctx->pCur, (const void**)&pKey, &kLen, (const void**)&pVal, &vLen);
|
||||||
|
|
Loading…
Reference in New Issue