Merge pull request #413 from localvar/mem-leak-in-taos_query_a

fix memory leak in taos_query_a
This commit is contained in:
haojun Liao 2019-08-24 14:52:48 +08:00 committed by GitHub
commit 8eff6c4da9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 5 deletions

View File

@ -49,6 +49,13 @@ void taos_query_a(TAOS *taos, char *sqlstr, void (*fp)(void *, TAOS_RES *, int),
return; return;
} }
int32_t sqlLen = strlen(sqlstr);
if (sqlLen > TSDB_MAX_SQL_LEN) {
tscError("sql string too long");
tscQueueAsyncError(fp, param);
return;
}
SSqlObj *pSql = (SSqlObj *)malloc(sizeof(SSqlObj)); SSqlObj *pSql = (SSqlObj *)malloc(sizeof(SSqlObj));
if (pSql == NULL) { if (pSql == NULL) {
tscError("failed to malloc sqlObj"); tscError("failed to malloc sqlObj");
@ -65,12 +72,10 @@ void taos_query_a(TAOS *taos, char *sqlstr, void (*fp)(void *, TAOS_RES *, int),
pSql->fp = fp; pSql->fp = fp;
pSql->param = param; pSql->param = param;
tscAllocPayloadWithSize(pCmd, TSDB_DEFAULT_PAYLOAD_SIZE); if (tscAllocPayloadWithSize(pCmd, TSDB_DEFAULT_PAYLOAD_SIZE) != TSDB_CODE_SUCCESS) {
tscError("%p failed to alloc payload", pSql);
int32_t sqlLen = strlen(sqlstr);
if (sqlLen > TSDB_MAX_SQL_LEN) {
tscError("%p sql string too long", pSql);
tscQueueAsyncError(fp, param); tscQueueAsyncError(fp, param);
free(pSql);
return; return;
} }
@ -78,6 +83,8 @@ void taos_query_a(TAOS *taos, char *sqlstr, void (*fp)(void *, TAOS_RES *, int),
if (pSql->sqlstr == NULL) { if (pSql->sqlstr == NULL) {
tscError("%p failed to malloc sql string buffer", pSql); tscError("%p failed to malloc sql string buffer", pSql);
tscQueueAsyncError(fp, param); tscQueueAsyncError(fp, param);
free(pCmd->payload);
free(pSql);
return; return;
} }