From a500d537ae376a886f70a3cab0aeae2fcf4322e1 Mon Sep 17 00:00:00 2001 From: Hubert Zhang Date: Wed, 29 Jul 2020 07:03:53 +0000 Subject: [PATCH] Coverity: Argument cannot be negative Should check the len parameter of memcpy is not negative in gp_hyperloglog.c Should use errno instead of seekResult in cdbappendonlystorageread.c --- src/backend/cdb/cdbappendonlystorageread.c | 2 +- src/backend/utils/hyperloglog/gp_hyperloglog.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/backend/cdb/cdbappendonlystorageread.c b/src/backend/cdb/cdbappendonlystorageread.c index 1acbd892fc..ea8ba347a9 100755 --- a/src/backend/cdb/cdbappendonlystorageread.c +++ b/src/backend/cdb/cdbappendonlystorageread.c @@ -283,7 +283,7 @@ AppendOnlyStorageRead_FinishOpenFile(AppendOnlyStorageRead *storageRead, errmsg("append-only storage read error on segment file '%s' for relation '%s'", filePathName, storageRead->relationName), errdetail("FileSeek offset = 0. Error code = %d (%s).", - (int) seekResult, strerror((int) seekResult)))); + errno, strerror(errno)))); } storageRead->file = file; diff --git a/src/backend/utils/hyperloglog/gp_hyperloglog.c b/src/backend/utils/hyperloglog/gp_hyperloglog.c index 17284c64de..ff66c338b8 100644 --- a/src/backend/utils/hyperloglog/gp_hyperloglog.c +++ b/src/backend/utils/hyperloglog/gp_hyperloglog.c @@ -592,6 +592,13 @@ gp_hll_compress_dense(GpHLLCounter hloglog) } return hloglog; } + + if (len < 0) + ereport(ERROR, + (errcode(ERRCODE_INTERNAL_ERROR), + errmsg("LZ compression failed"), + errdetail("LZ compression return value: %d", len))); + memcpy(hloglog->data,dest,len); /* resize the counter to only encompass the compressed data and the struct @@ -649,6 +656,13 @@ gp_hll_compress_dense_unpacked(GpHLLCounter hloglog) } return hloglog; } + + if (len < 0) + ereport(ERROR, + (errcode(ERRCODE_INTERNAL_ERROR), + errmsg("LZ compression failed"), + errdetail("LZ compression return value: %d", len))); + memcpy(hloglog->data, dest, len); /* resize the counter to only encompass the compressed data and the struct -- GitLab