fix: fix realloc mistakes to avoid memory leaks
parent
969cb24400
commit
b2966596a9
|
|
@ -226,9 +226,9 @@ int fdht_split_ids(const char *szIds, int **ppIds, int *id_count)
|
||||||
if (alloc_count < *id_count + (count + 1))
|
if (alloc_count < *id_count + (count + 1))
|
||||||
{
|
{
|
||||||
alloc_count += count + 1;
|
alloc_count += count + 1;
|
||||||
*ppIds = (int *)realloc(*ppIds, \
|
int *new_ids = (int *)realloc(*ppIds, \
|
||||||
sizeof(int) * alloc_count);
|
sizeof(int) * alloc_count);
|
||||||
if (*ppIds == NULL)
|
if (new_ids == NULL)
|
||||||
{
|
{
|
||||||
result = errno != 0 ? errno : ENOMEM;
|
result = errno != 0 ? errno : ENOMEM;
|
||||||
logError("file: "__FILE__", line: %d, "\
|
logError("file: "__FILE__", line: %d, "\
|
||||||
|
|
@ -237,9 +237,11 @@ int fdht_split_ids(const char *szIds, int **ppIds, int *id_count)
|
||||||
__LINE__, \
|
__LINE__, \
|
||||||
(int)sizeof(int) * alloc_count,\
|
(int)sizeof(int) * alloc_count,\
|
||||||
result, STRERROR(result));
|
result, STRERROR(result));
|
||||||
|
free(*ppIds)
|
||||||
|
*ppIds = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*ppIds = new_ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i=nStart; i<=nEnd; i++)
|
for (i=nStart; i<=nEnd; i++)
|
||||||
|
|
@ -498,11 +500,11 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
|
||||||
alloc_server_count = \
|
alloc_server_count = \
|
||||||
pGroupArray->server_count + \
|
pGroupArray->server_count + \
|
||||||
pGroupArray->group_count + 8;
|
pGroupArray->group_count + 8;
|
||||||
pGroupArray->servers = (FDHTServerInfo*)
|
FDHTServerInfo* new_servers = (FDHTServerInfo*)
|
||||||
realloc(pGroupArray->servers, \
|
realloc(pGroupArray->servers, \
|
||||||
sizeof(FDHTServerInfo) * \
|
sizeof(FDHTServerInfo) * \
|
||||||
alloc_server_count);
|
alloc_server_count);
|
||||||
if (pGroupArray->servers == NULL)
|
if (new_servers == NULL)
|
||||||
{
|
{
|
||||||
logError("file: "__FILE__", " \
|
logError("file: "__FILE__", " \
|
||||||
"line: %d, malloc " \
|
"line: %d, malloc " \
|
||||||
|
|
@ -513,8 +515,11 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
|
||||||
(int)sizeof(FDHTServerInfo) \
|
(int)sizeof(FDHTServerInfo) \
|
||||||
* alloc_server_count, \
|
* alloc_server_count, \
|
||||||
errno, STRERROR(errno));
|
errno, STRERROR(errno));
|
||||||
|
free(pGroupArray->servers);
|
||||||
|
pGroupArray->servers = NULL;
|
||||||
return errno!=0 ? errno:ENOMEM;
|
return errno!=0 ? errno:ENOMEM;
|
||||||
}
|
}
|
||||||
|
pGroupArray->servers = new_servers;
|
||||||
}
|
}
|
||||||
|
|
||||||
fdht_insert_sorted_servers( \
|
fdht_insert_sorted_servers( \
|
||||||
|
|
@ -574,10 +579,10 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
|
||||||
|
|
||||||
if (alloc_server_count > pGroupArray->server_count)
|
if (alloc_server_count > pGroupArray->server_count)
|
||||||
{
|
{
|
||||||
pGroupArray->servers = (FDHTServerInfo*)realloc( \
|
FDHTServerInfo* new_servers= (FDHTServerInfo*)realloc( \
|
||||||
pGroupArray->servers, sizeof(FDHTServerInfo) \
|
pGroupArray->servers, sizeof(FDHTServerInfo) \
|
||||||
* pGroupArray->server_count);
|
* pGroupArray->server_count);
|
||||||
if (pGroupArray->servers == NULL)
|
if (new_servers == NULL)
|
||||||
{
|
{
|
||||||
logError("file: "__FILE__", line: %d, " \
|
logError("file: "__FILE__", line: %d, " \
|
||||||
"malloc %d bytes fail, " \
|
"malloc %d bytes fail, " \
|
||||||
|
|
@ -585,8 +590,11 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
|
||||||
__LINE__, (int)sizeof(FDHTServerInfo) * \
|
__LINE__, (int)sizeof(FDHTServerInfo) * \
|
||||||
pGroupArray->server_count, \
|
pGroupArray->server_count, \
|
||||||
errno, STRERROR(errno));
|
errno, STRERROR(errno));
|
||||||
|
free(pGroupArray->servers);
|
||||||
|
pGroupArray->servers = NULL;
|
||||||
return errno != 0 ? errno : ENOMEM;
|
return errno != 0 ? errno : ENOMEM;
|
||||||
}
|
}
|
||||||
|
pGroupArray->servers = new_servers;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset(&pGroupArray->proxy_server, 0, sizeof(FDHTServerInfo));
|
memset(&pGroupArray->proxy_server, 0, sizeof(FDHTServerInfo));
|
||||||
|
|
|
||||||
|
|
@ -3320,17 +3320,20 @@ int storage_sync_thread_start(const FDFSStorageBrief *pStorage)
|
||||||
}
|
}
|
||||||
|
|
||||||
thread_count = FC_ATOMIC_INC(g_storage_sync_thread_count);
|
thread_count = FC_ATOMIC_INC(g_storage_sync_thread_count);
|
||||||
sync_tids = (pthread_t *)realloc(sync_tids,
|
pthread_t *new_sync_tids = (pthread_t *)realloc(sync_tids,
|
||||||
sizeof(pthread_t) * thread_count);
|
sizeof(pthread_t) * thread_count);
|
||||||
if (sync_tids == NULL)
|
if (new_sync_tids == NULL)
|
||||||
{
|
{
|
||||||
logError("file: "__FILE__", line: %d, "
|
logError("file: "__FILE__", line: %d, "
|
||||||
"malloc %d bytes fail, errno: %d, error info: %s",
|
"malloc %d bytes fail, errno: %d, error info: %s",
|
||||||
__LINE__, (int)sizeof(pthread_t) * thread_count,
|
__LINE__, (int)sizeof(pthread_t) * thread_count,
|
||||||
errno, STRERROR(errno));
|
errno, STRERROR(errno));
|
||||||
|
free(sync_tids);
|
||||||
|
sync_tids = NULL;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
sync_tids = new_sync_tids;
|
||||||
sync_tids[thread_count - 1] = tid;
|
sync_tids[thread_count - 1] = tid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -655,18 +655,21 @@ static int tracker_load_groups_new(FDFSGroups *pGroups, const char *data_path,
|
||||||
if (nStorageSyncSize <= *nTrunkServerCount)
|
if (nStorageSyncSize <= *nTrunkServerCount)
|
||||||
{
|
{
|
||||||
nStorageSyncSize += 8;
|
nStorageSyncSize += 8;
|
||||||
*ppTrunkServers = (FDFSStorageSync *)realloc( \
|
FDFSStorageSync *new_trunk_servers = (FDFSStorageSync *)
|
||||||
*ppTrunkServers, \
|
realloc(*ppTrunkServers, \
|
||||||
sizeof(FDFSStorageSync) * nStorageSyncSize);
|
sizeof(FDFSStorageSync) * nStorageSyncSize);
|
||||||
if (*ppTrunkServers == NULL)
|
if (new_trunk_servers == NULL)
|
||||||
{
|
{
|
||||||
result = errno != 0 ? errno : ENOMEM;
|
result = errno != 0 ? errno : ENOMEM;
|
||||||
logError("file: "__FILE__", line: %d, " \
|
logError("file: "__FILE__", line: %d, " \
|
||||||
"realloc %d bytes fail", __LINE__, \
|
"realloc %d bytes fail", __LINE__, \
|
||||||
(int)sizeof(FDFSStorageSync) * \
|
(int)sizeof(FDFSStorageSync) * \
|
||||||
nStorageSyncSize);
|
nStorageSyncSize);
|
||||||
|
free(*ppTrunkServers);
|
||||||
|
*ppTrunkServers = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
*ppTrunkServers = new_trunk_servers;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy((*ppTrunkServers)[*nTrunkServerCount].group_name, \
|
strcpy((*ppTrunkServers)[*nTrunkServerCount].group_name, \
|
||||||
|
|
@ -991,18 +994,21 @@ static int tracker_load_storages_old(FDFSGroups *pGroups, const char *data_path)
|
||||||
if (nStorageSyncSize <= nStorageSyncCount)
|
if (nStorageSyncSize <= nStorageSyncCount)
|
||||||
{
|
{
|
||||||
nStorageSyncSize += 8;
|
nStorageSyncSize += 8;
|
||||||
pStorageSyncs = (FDFSStorageSync *)realloc( \
|
FDFSStorageSync *pNewStorageSyncs = (FDFSStorageSync *)
|
||||||
pStorageSyncs, \
|
realloc(pStorageSyncs, \
|
||||||
sizeof(FDFSStorageSync) * nStorageSyncSize);
|
sizeof(FDFSStorageSync) * nStorageSyncSize);
|
||||||
if (pStorageSyncs == NULL)
|
if (pNewStorageSyncs == NULL)
|
||||||
{
|
{
|
||||||
result = errno != 0 ? errno : ENOMEM;
|
result = errno != 0 ? errno : ENOMEM;
|
||||||
logError("file: "__FILE__", line: %d, " \
|
logError("file: "__FILE__", line: %d, " \
|
||||||
"realloc %d bytes fail", __LINE__, \
|
"realloc %d bytes fail", __LINE__, \
|
||||||
(int)sizeof(FDFSStorageSync) * \
|
(int)sizeof(FDFSStorageSync) * \
|
||||||
nStorageSyncSize);
|
nStorageSyncSize);
|
||||||
|
free(pStorageSyncs);
|
||||||
|
pStorageSyncs = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
pStorageSyncs = pNewStorageSyncs;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(pStorageSyncs[nStorageSyncCount].group_name, \
|
strcpy(pStorageSyncs[nStorageSyncCount].group_name, \
|
||||||
|
|
@ -1274,18 +1280,21 @@ static int tracker_load_storages_new(FDFSGroups *pGroups, const char *data_path)
|
||||||
{
|
{
|
||||||
nStorageSyncSize *= 2;
|
nStorageSyncSize *= 2;
|
||||||
}
|
}
|
||||||
pStorageSyncs = (FDFSStorageSync *)realloc( \
|
FDFSStorageSync *pNewStorageSyncs = (FDFSStorageSync *)
|
||||||
pStorageSyncs, \
|
realloc(pStorageSyncs, \
|
||||||
sizeof(FDFSStorageSync) * nStorageSyncSize);
|
sizeof(FDFSStorageSync) * nStorageSyncSize);
|
||||||
if (pStorageSyncs == NULL)
|
if (pNewStorageSyncs == NULL)
|
||||||
{
|
{
|
||||||
result = errno != 0 ? errno : ENOMEM;
|
result = errno != 0 ? errno : ENOMEM;
|
||||||
logError("file: "__FILE__", line: %d, " \
|
logError("file: "__FILE__", line: %d, " \
|
||||||
"realloc %d bytes fail", __LINE__, \
|
"realloc %d bytes fail", __LINE__, \
|
||||||
(int)sizeof(FDFSStorageSync) * \
|
(int)sizeof(FDFSStorageSync) * \
|
||||||
nStorageSyncSize);
|
nStorageSyncSize);
|
||||||
|
free(pStorageSyncs);
|
||||||
|
pStorageSyncs = NULL;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
pStorageSyncs = pNewStorageSyncs;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcpy(pStorageSyncs[nStorageSyncCount].group_name, \
|
strcpy(pStorageSyncs[nStorageSyncCount].group_name, \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue