Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Tonvia
TDengine
提交
19aaf703
T
TDengine
项目概览
Tonvia
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
19aaf703
编写于
8月 14, 2021
作者:
S
Shengliang Guan
提交者:
GitHub
8月 14, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7344 from taosdata/fix/TD-5890
fixed realloc can cause memory leak
上级
d8fff49e
490702c9
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
79 addition
and
33 deletion
+79
-33
deps/MsvcLibX/src/iconv.c
deps/MsvcLibX/src/iconv.c
+4
-2
deps/MsvcLibX/src/main.c
deps/MsvcLibX/src/main.c
+6
-2
deps/MsvcLibX/src/realpath.c
deps/MsvcLibX/src/realpath.c
+12
-4
src/balance/src/bnScore.c
src/balance/src/bnScore.c
+11
-2
src/client/src/tscPrepare.c
src/client/src/tscPrepare.c
+3
-2
src/client/src/tscSql.c
src/client/src/tscSql.c
+3
-1
src/client/src/tscUtil.c
src/client/src/tscUtil.c
+9
-3
src/common/inc/tdataformat.h
src/common/inc/tdataformat.h
+6
-4
src/common/src/tdataformat.c
src/common/src/tdataformat.c
+3
-2
src/kit/shell/src/shellCheck.c
src/kit/shell/src/shellCheck.c
+3
-2
src/kit/taospack/taospack.c
src/kit/taospack/taospack.c
+4
-1
src/mnode/src/mnodeTable.c
src/mnode/src/mnodeTable.c
+3
-2
src/os/src/detail/osMemory.c
src/os/src/detail/osMemory.c
+3
-2
src/os/src/windows/wGetline.c
src/os/src/windows/wGetline.c
+4
-2
src/query/src/qTsbuf.c
src/query/src/qTsbuf.c
+5
-2
未找到文件。
deps/MsvcLibX/src/iconv.c
浏览文件 @
19aaf703
...
...
@@ -98,6 +98,7 @@ int ConvertString(char *buf, size_t nBytes, UINT cpFrom, UINT cpTo, LPCSTR lpDef
char
*
DupAndConvert
(
const
char
*
string
,
UINT
cpFrom
,
UINT
cpTo
,
LPCSTR
lpDefaultChar
)
{
int
nBytes
;
char
*
pBuf
;
char
*
pBuf1
;
nBytes
=
4
*
((
int
)
lstrlen
(
string
)
+
1
);
/* Worst case for the size needed */
pBuf
=
(
char
*
)
malloc
(
nBytes
);
if
(
!
pBuf
)
{
...
...
@@ -110,8 +111,9 @@ char *DupAndConvert(const char *string, UINT cpFrom, UINT cpTo, LPCSTR lpDefault
free
(
pBuf
);
return
NULL
;
}
pBuf
=
realloc
(
pBuf
,
nBytes
+
1
);
return
pBuf
;
pBuf1
=
realloc
(
pBuf
,
nBytes
+
1
);
if
(
pBuf1
==
NULL
&&
pBuf
!=
NULL
)
free
(
pBuf
);
return
pBuf1
;
}
int
CountCharacters
(
const
char
*
string
,
UINT
cp
)
{
...
...
deps/MsvcLibX/src/main.c
浏览文件 @
19aaf703
...
...
@@ -68,6 +68,7 @@ int BreakArgLine(LPSTR pszCmdLine, char ***pppszArg) {
int
iString
=
FALSE
;
/* TRUE = string mode; FALSE = non-string mode */
int
nBackslash
=
0
;
char
**
ppszArg
;
char
**
ppszArg1
;
int
iArg
=
FALSE
;
/* TRUE = inside an argument; FALSE = between arguments */
ppszArg
=
(
char
**
)
malloc
((
argc
+
1
)
*
sizeof
(
char
*
));
...
...
@@ -89,7 +90,10 @@ int BreakArgLine(LPSTR pszCmdLine, char ***pppszArg) {
if
((
!
iArg
)
&&
(
c
!=
' '
)
&&
(
c
!=
'\t'
))
{
/* Beginning of a new argument */
iArg
=
TRUE
;
ppszArg
[
argc
++
]
=
pszCopy
+
j
;
ppszArg
=
(
char
**
)
realloc
(
ppszArg
,
(
argc
+
1
)
*
sizeof
(
char
*
));
ppszArg1
=
(
char
**
)
realloc
(
ppszArg
,
(
argc
+
1
)
*
sizeof
(
char
*
));
if
(
ppszArg1
==
NULL
&&
ppszArg
!=
NULL
)
free
(
ppszArg
);
ppszArg
=
ppszArg1
;
if
(
!
ppszArg
)
return
-
1
;
pszCopy
[
j
]
=
c0
=
'\0'
;
}
...
...
@@ -212,7 +216,7 @@ int _initU(void) {
fprintf
(
stderr
,
"Warning: Can't convert the argument line to UTF-8
\n
"
);
_acmdln
[
0
]
=
'\0'
;
}
realloc
(
_acmdln
,
n
+
1
);
/* Resize the memory block to fit the UTF-8 line */
//
realloc(_acmdln, n+1); /* Resize the memory block to fit the UTF-8 line */
/* Should not fail since we make it smaller */
/* Record the console code page, to allow converting the output accordingly */
...
...
deps/MsvcLibX/src/realpath.c
浏览文件 @
19aaf703
...
...
@@ -196,6 +196,7 @@ not_compact_enough:
/* Normally defined in stdlib.h. Output buf must contain PATH_MAX bytes */
char
*
realpath
(
const
char
*
path
,
char
*
outbuf
)
{
char
*
pOutbuf
=
outbuf
;
char
*
pOutbuf1
;
int
iErr
;
const
char
*
pc
;
...
...
@@ -242,8 +243,11 @@ realpath_failed:
return
NULL
;
}
if
(
!
outbuf
)
pOutbuf
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
return
pOutbuf
;
if
(
!
outbuf
)
{
pOutbuf1
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
pOutbuf1
==
NULL
&&
pOutbuf
)
free
(
pOutbuf
);
}
return
pOutbuf1
;
}
#endif
...
...
@@ -517,6 +521,7 @@ int ResolveLinksA(const char *path, char *buf, size_t bufsize) {
/* Normally defined in stdlib.h. Output buf must contain PATH_MAX bytes */
char
*
realpathU
(
const
char
*
path
,
char
*
outbuf
)
{
char
*
pOutbuf
=
outbuf
;
char
*
pOutbuf1
;
char
*
pPath1
=
NULL
;
char
*
pPath2
=
NULL
;
int
iErr
;
...
...
@@ -590,10 +595,13 @@ realpathU_failed:
}
DEBUG_LEAVE
((
"return 0x%p; //
\"
%s
\"\n
"
,
pOutbuf
,
pOutbuf
));
if
(
!
outbuf
)
pOutbuf
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
!
outbuf
)
{
pOutbuf1
=
realloc
(
pOutbuf
,
strlen
(
pOutbuf
)
+
1
);
if
(
pOutbuf1
==
NULL
&&
pOutbuf
)
free
(
pOutbuf
);
}
free
(
pPath1
);
free
(
pPath2
);
return
pOutbuf
;
return
pOutbuf
1
;
}
#endif
/* defined(_WIN32) */
...
...
src/balance/src/bnScore.c
浏览文件 @
19aaf703
...
...
@@ -116,8 +116,17 @@ void bnCleanupDnodes() {
static
void
bnCheckDnodesSize
(
int32_t
dnodesNum
)
{
if
(
tsBnDnodes
.
maxSize
<=
dnodesNum
)
{
tsBnDnodes
.
maxSize
=
dnodesNum
*
2
;
tsBnDnodes
.
list
=
realloc
(
tsBnDnodes
.
list
,
tsBnDnodes
.
maxSize
*
sizeof
(
SDnodeObj
*
));
int32_t
maxSize
=
dnodesNum
*
2
;
SDnodeObj
**
list1
=
NULL
;
int32_t
retry
=
0
;
while
(
list1
==
NULL
&&
retry
++
<
3
)
{
list1
=
realloc
(
tsBnDnodes
.
list
,
maxSize
*
sizeof
(
SDnodeObj
*
));
}
if
(
list1
)
{
tsBnDnodes
.
list
=
list1
;
tsBnDnodes
.
maxSize
=
maxSize
;
}
}
}
...
...
src/client/src/tscPrepare.c
浏览文件 @
19aaf703
...
...
@@ -1527,8 +1527,9 @@ int taos_stmt_prepare(TAOS_STMT* stmt, const char* sql, unsigned long length) {
pCmd
->
insertParam
.
insertType
=
TSDB_QUERY_TYPE_STMT_INSERT
;
pCmd
->
insertParam
.
objectId
=
pSql
->
self
;
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
char
*
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
if
(
sqlstr
==
NULL
&&
pSql
->
sqlstr
)
free
(
pSql
->
sqlstr
);
pSql
->
sqlstr
=
sqlstr
;
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"%p failed to malloc sql string buffer"
,
pSql
);
STMT_RET
(
TSDB_CODE_TSC_OUT_OF_MEMORY
);
...
...
src/client/src/tscSql.c
浏览文件 @
19aaf703
...
...
@@ -887,7 +887,9 @@ int taos_validate_sql(TAOS *taos, const char *sql) {
return
TSDB_CODE_TSC_EXCEED_SQL_LIMIT
;
}
pSql
->
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
char
*
sqlstr
=
realloc
(
pSql
->
sqlstr
,
sqlLen
+
1
);
if
(
sqlstr
==
NULL
&&
pSql
->
sqlstr
)
free
(
pSql
->
sqlstr
);
pSql
->
sqlstr
=
sqlstr
;
if
(
pSql
->
sqlstr
==
NULL
)
{
tscError
(
"0x%"
PRIx64
" failed to malloc sql string buffer"
,
pSql
->
self
);
tfree
(
pSql
);
...
...
src/client/src/tscUtil.c
浏览文件 @
19aaf703
...
...
@@ -625,8 +625,10 @@ static void setResRawPtrImpl(SSqlRes* pRes, SInternalField* pInfo, int32_t i, bo
}
else
if
(
convertNchar
&&
pInfo
->
field
.
type
==
TSDB_DATA_TYPE_NCHAR
)
{
// convert unicode to native code in a temporary buffer extra one byte for terminated symbol
pRes
->
buffer
[
i
]
=
realloc
(
pRes
->
buffer
[
i
],
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
char
*
buffer
=
realloc
(
pRes
->
buffer
[
i
],
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
if
(
buffer
==
NULL
)
return
;
pRes
->
buffer
[
i
]
=
buffer
;
// string terminated char for binary data
memset
(
pRes
->
buffer
[
i
],
0
,
pInfo
->
field
.
bytes
*
pRes
->
numOfRows
);
...
...
@@ -4364,6 +4366,7 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name,
STableMeta
*
p
=
NULL
;
size_t
sz
=
0
;
STableMeta
*
pChild
=
*
ppChild
;
STableMeta
*
pChild1
;
taosHashGetCloneExt
(
tscTableMetaMap
,
pChild
->
sTableName
,
strnlen
(
pChild
->
sTableName
,
TSDB_TABLE_FNAME_LEN
),
NULL
,
(
void
**
)
&
p
,
&
sz
);
...
...
@@ -4374,7 +4377,10 @@ int32_t tscCreateTableMetaFromSTableMeta(STableMeta** ppChild, const char* name,
int32_t
totalBytes
=
(
p
->
tableInfo
.
numOfColumns
+
p
->
tableInfo
.
numOfTags
)
*
sizeof
(
SSchema
);
int32_t
tableMetaSize
=
sizeof
(
STableMeta
)
+
totalBytes
;
if
(
*
tableMetaCapacity
<
tableMetaSize
)
{
pChild
=
realloc
(
pChild
,
tableMetaSize
);
pChild1
=
realloc
(
pChild
,
tableMetaSize
);
if
(
pChild1
==
NULL
)
return
-
1
;
pChild
=
pChild1
;
*
tableMetaCapacity
=
(
size_t
)
tableMetaSize
;
}
...
...
src/common/inc/tdataformat.h
浏览文件 @
19aaf703
...
...
@@ -547,8 +547,9 @@ SKVRow tdGetKVRowFromBuilder(SKVRowBuilder *pBuilder);
static
FORCE_INLINE
int
tdAddColToKVRow
(
SKVRowBuilder
*
pBuilder
,
int16_t
colId
,
int8_t
type
,
void
*
value
)
{
if
(
pBuilder
->
nCols
>=
pBuilder
->
tCols
)
{
pBuilder
->
tCols
*=
2
;
pBuilder
->
pColIdx
=
(
SColIdx
*
)
realloc
((
void
*
)(
pBuilder
->
pColIdx
),
sizeof
(
SColIdx
)
*
pBuilder
->
tCols
);
if
(
pBuilder
->
pColIdx
==
NULL
)
return
-
1
;
SColIdx
*
pColIdx
=
(
SColIdx
*
)
realloc
((
void
*
)(
pBuilder
->
pColIdx
),
sizeof
(
SColIdx
)
*
pBuilder
->
tCols
);
if
(
pColIdx
==
NULL
)
return
-
1
;
pBuilder
->
pColIdx
=
pColIdx
;
}
pBuilder
->
pColIdx
[
pBuilder
->
nCols
].
colId
=
colId
;
...
...
@@ -561,8 +562,9 @@ static FORCE_INLINE int tdAddColToKVRow(SKVRowBuilder *pBuilder, int16_t colId,
while
(
tlen
>
pBuilder
->
alloc
-
pBuilder
->
size
)
{
pBuilder
->
alloc
*=
2
;
}
pBuilder
->
buf
=
realloc
(
pBuilder
->
buf
,
pBuilder
->
alloc
);
if
(
pBuilder
->
buf
==
NULL
)
return
-
1
;
void
*
buf
=
realloc
(
pBuilder
->
buf
,
pBuilder
->
alloc
);
if
(
buf
==
NULL
)
return
-
1
;
pBuilder
->
buf
=
buf
;
}
memcpy
(
POINTER_SHIFT
(
pBuilder
->
buf
,
pBuilder
->
size
),
value
,
tlen
);
...
...
src/common/src/tdataformat.c
浏览文件 @
19aaf703
...
...
@@ -138,8 +138,9 @@ int tdAddColToSchema(STSchemaBuilder *pBuilder, int8_t type, int16_t colId, int1
if
(
pBuilder
->
nCols
>=
pBuilder
->
tCols
)
{
pBuilder
->
tCols
*=
2
;
pBuilder
->
columns
=
(
STColumn
*
)
realloc
(
pBuilder
->
columns
,
sizeof
(
STColumn
)
*
pBuilder
->
tCols
);
if
(
pBuilder
->
columns
==
NULL
)
return
-
1
;
STColumn
*
columns
=
(
STColumn
*
)
realloc
(
pBuilder
->
columns
,
sizeof
(
STColumn
)
*
pBuilder
->
tCols
);
if
(
columns
==
NULL
)
return
-
1
;
pBuilder
->
columns
=
columns
;
}
STColumn
*
pCol
=
&
(
pBuilder
->
columns
[
pBuilder
->
nCols
]);
...
...
src/kit/shell/src/shellCheck.c
浏览文件 @
19aaf703
...
...
@@ -72,12 +72,13 @@ static int32_t shellShowTables(TAOS *con, char *db) {
int32_t
tbIndex
=
tbNum
++
;
if
(
tbMallocNum
<
tbNum
)
{
tbMallocNum
=
(
tbMallocNum
*
2
+
1
);
tbNames
=
realloc
(
tbNames
,
tbMallocNum
*
sizeof
(
char
*
));
if
(
tbNames
==
NULL
)
{
char
**
tbNames1
=
realloc
(
tbNames
,
tbMallocNum
*
sizeof
(
char
*
));
if
(
tbNames
1
==
NULL
)
{
fprintf
(
stdout
,
"failed to malloc tablenames, num:%d
\n
"
,
tbMallocNum
);
code
=
TSDB_CODE_TSC_OUT_OF_MEMORY
;
break
;
}
tbNames
=
tbNames1
;
}
tbNames
[
tbIndex
]
=
malloc
(
TSDB_TABLE_NAME_LEN
);
...
...
src/kit/taospack/taospack.c
浏览文件 @
19aaf703
...
...
@@ -149,7 +149,10 @@ float* read_float(const char* inFile, int* pcount){
//printf(" buff=%s float=%.50f \n ", buf, floats[fi]);
if
(
++
fi
==
malloc_cnt
)
{
malloc_cnt
+=
100000
;
floats
=
realloc
(
floats
,
malloc_cnt
*
sizeof
(
float
));
float
*
floats1
=
realloc
(
floats
,
malloc_cnt
*
sizeof
(
float
));
if
(
floats1
==
NULL
)
break
;
floats
=
floats1
;
}
memset
(
buf
,
0
,
sizeof
(
buf
));
}
...
...
src/mnode/src/mnodeTable.c
浏览文件 @
19aaf703
...
...
@@ -2921,10 +2921,11 @@ static SMultiTableMeta* ensureMsgBufferSpace(SMultiTableMeta *pMultiMeta, SArray
(
*
totalMallocLen
)
*=
2
;
}
pMultiMeta
=
realloc
(
pMultiMeta
,
*
totalMallocLen
);
if
(
pMultiMeta
==
NULL
)
{
SMultiTableMeta
*
pMultiMeta1
=
realloc
(
pMultiMeta
,
*
totalMallocLen
);
if
(
pMultiMeta
1
==
NULL
)
{
return
NULL
;
}
pMultiMeta
=
pMultiMeta1
;
}
return
pMultiMeta
;
...
...
src/os/src/detail/osMemory.c
浏览文件 @
19aaf703
...
...
@@ -504,8 +504,9 @@ void * taosTRealloc(void *ptr, size_t size) {
void
*
tptr
=
(
void
*
)((
char
*
)
ptr
-
sizeof
(
size_t
));
size_t
tsize
=
size
+
sizeof
(
size_t
);
tptr
=
realloc
(
tptr
,
tsize
);
if
(
tptr
==
NULL
)
return
NULL
;
void
*
tptr1
=
realloc
(
tptr
,
tsize
);
if
(
tptr1
==
NULL
)
return
NULL
;
tptr
=
tptr1
;
*
(
size_t
*
)
tptr
=
size
;
...
...
src/os/src/windows/wGetline.c
浏览文件 @
19aaf703
...
...
@@ -81,11 +81,13 @@ int32_t getstr(char **lineptr, size_t *n, FILE *stream, char terminator, int32_t
*
n
+=
MIN_CHUNK
;
nchars_avail
=
(
int32_t
)(
*
n
+
*
lineptr
-
read_pos
);
*
lineptr
=
realloc
(
*
lineptr
,
*
n
);
if
(
!
*
lineptr
)
{
char
*
lineptr1
=
realloc
(
*
lineptr
,
*
n
);
if
(
!
lineptr1
)
{
errno
=
ENOMEM
;
return
-
1
;
}
*
lineptr
=
lineptr1
;
read_pos
=
*
n
-
nchars_avail
+
*
lineptr
;
assert
((
*
lineptr
+
*
n
)
==
(
read_pos
+
nchars_avail
));
}
...
...
src/query/src/qTsbuf.c
浏览文件 @
19aaf703
...
...
@@ -223,8 +223,11 @@ static STSGroupBlockInfoEx* addOneGroupInfo(STSBuf* pTSBuf, int32_t id) {
static
void
shrinkBuffer
(
STSList
*
ptsData
)
{
// shrink tmp buffer size if it consumes too many memory compared to the pre-defined size
if
(
ptsData
->
allocSize
>=
ptsData
->
threshold
*
2
)
{
ptsData
->
rawBuf
=
realloc
(
ptsData
->
rawBuf
,
MEM_BUF_SIZE
);
ptsData
->
allocSize
=
MEM_BUF_SIZE
;
char
*
rawBuf
=
realloc
(
ptsData
->
rawBuf
,
MEM_BUF_SIZE
);
if
(
rawBuf
)
{
ptsData
->
rawBuf
=
rawBuf
;
ptsData
->
allocSize
=
MEM_BUF_SIZE
;
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录