You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by wl...@apache.org on 2016/01/19 08:33:49 UTC
incubator-hawq git commit: HAWQ-274. Fix coverity bug
Repository: incubator-hawq
Updated Branches:
refs/heads/master 7df00d587 -> d17359c0a
HAWQ-274. Fix coverity bug
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/d17359c0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/d17359c0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/d17359c0
Branch: refs/heads/master
Commit: d17359c0a47299ccd6d175aacf33c259910c3f21
Parents: 7df00d5
Author: Wen Lin <wl...@pivotal.io>
Authored: Tue Jan 19 15:33:22 2016 +0800
Committer: Wen Lin <wl...@pivotal.io>
Committed: Tue Jan 19 15:33:22 2016 +0800
----------------------------------------------------------------------
src/backend/cdb/cdbtmpdir.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/d17359c0/src/backend/cdb/cdbtmpdir.c
----------------------------------------------------------------------
diff --git a/src/backend/cdb/cdbtmpdir.c b/src/backend/cdb/cdbtmpdir.c
index 40db883..d89c26e 100644
--- a/src/backend/cdb/cdbtmpdir.c
+++ b/src/backend/cdb/cdbtmpdir.c
@@ -84,7 +84,7 @@ static int GetTmpDirNumber(char* szTmpDir)
if (szTmpDir[i] == ',' || i == strlen(szTmpDir))
{
/* in case two commas are written together */
- if (i-idx > 1)
+ if (i-idx > 1 && i-idx <= MAX_TMP_DIR_LEN)
{
tmpdir = (char *)palloc0(i-idx);
strncpy(tmpdir, szTmpDir+idx+1, i-idx-1);
@@ -154,9 +154,12 @@ void TmpDirInfoArrayShmemInit(void)
int32_t i = 0;
MemSet(TmpDirInfoArray, 0, TmpDirNum*sizeof(TmpDirInfo));
foreach(lc, tmpDirList) {
- TmpDirInfoArray[i].available = true;
- strncpy(TmpDirInfoArray[i].path, (char*)lfirst(lc), strlen((char*)lfirst(lc)));
- i++;
+ if (strlen((char*)lfirst(lc)) < MAX_TMP_DIR_LEN)
+ {
+ strncpy(TmpDirInfoArray[i].path, (char*)lfirst(lc), strlen((char*)lfirst(lc)));
+ TmpDirInfoArray[i].available = true;
+ i++;
+ }
}
if (tmpDirList)
@@ -207,8 +210,7 @@ bool CheckTmpDirAvailable(char *path)
}
_exit:
- if (fname != NULL)
- pfree(fname);
+ pfree(fname);
if (tmp != NULL)
fclose(tmp);
return ret;
@@ -298,7 +300,8 @@ void getSegmentLocalTmpDirFromShmem(int session_id, int command_id, int qeidx)
}
else
{
- int64_t key = (session_id << 32) + command_id + qeidx;
+ int64_t session_key = session_id;
+ int64_t key = (session_key << 32) + command_id + qeidx;
LocalTempPath = GetTmpDirPathFromArray(key % TmpDirNum);
}
}