Merge pull request #631 from Yang1032/fix-2

fix: fix realloc mistakes to avoid memory leaks
pull/481/merge
YuQing 2023-04-25 07:50:22 +08:00 committed by GitHub
commit 5335a59313
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 21 deletions

View File

@ -226,9 +226,9 @@ int fdht_split_ids(const char *szIds, int **ppIds, int *id_count)
if (alloc_count < *id_count + (count + 1))
{
alloc_count += count + 1;
*ppIds = (int *)realloc(*ppIds, \
int *new_ids = (int *)realloc(*ppIds, \
sizeof(int) * alloc_count);
if (*ppIds == NULL)
if (new_ids == NULL)
{
result = errno != 0 ? errno : ENOMEM;
logError("file: "__FILE__", line: %d, "\
@ -237,9 +237,11 @@ int fdht_split_ids(const char *szIds, int **ppIds, int *id_count)
__LINE__, \
(int)sizeof(int) * alloc_count,\
result, STRERROR(result));
free(*ppIds)
*ppIds = NULL;
break;
}
*ppIds = new_ids;
}
for (i=nStart; i<=nEnd; i++)
@ -498,11 +500,11 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
alloc_server_count = \
pGroupArray->server_count + \
pGroupArray->group_count + 8;
pGroupArray->servers = (FDHTServerInfo*)
FDHTServerInfo* new_servers = (FDHTServerInfo*)
realloc(pGroupArray->servers, \
sizeof(FDHTServerInfo) * \
alloc_server_count);
if (pGroupArray->servers == NULL)
if (new_servers == NULL)
{
logError("file: "__FILE__", " \
"line: %d, malloc " \
@ -513,8 +515,11 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
(int)sizeof(FDHTServerInfo) \
* alloc_server_count, \
errno, STRERROR(errno));
free(pGroupArray->servers);
pGroupArray->servers = NULL;
return errno!=0 ? errno:ENOMEM;
}
pGroupArray->servers = new_servers;
}
fdht_insert_sorted_servers( \
@ -574,10 +579,10 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
if (alloc_server_count > pGroupArray->server_count)
{
pGroupArray->servers = (FDHTServerInfo*)realloc( \
FDHTServerInfo* new_servers= (FDHTServerInfo*)realloc( \
pGroupArray->servers, sizeof(FDHTServerInfo) \
* pGroupArray->server_count);
if (pGroupArray->servers == NULL)
if (new_servers == NULL)
{
logError("file: "__FILE__", line: %d, " \
"malloc %d bytes fail, " \
@ -585,8 +590,11 @@ int fdht_load_groups_ex(IniContext *pIniContext, \
__LINE__, (int)sizeof(FDHTServerInfo) * \
pGroupArray->server_count, \
errno, STRERROR(errno));
free(pGroupArray->servers);
pGroupArray->servers = NULL;
return errno != 0 ? errno : ENOMEM;
}
pGroupArray->servers = new_servers;
}
memset(&pGroupArray->proxy_server, 0, sizeof(FDHTServerInfo));

View File

@ -3320,17 +3320,20 @@ int storage_sync_thread_start(const FDFSStorageBrief *pStorage)
}
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);
if (sync_tids == NULL)
if (new_sync_tids == NULL)
{
logError("file: "__FILE__", line: %d, "
"malloc %d bytes fail, errno: %d, error info: %s",
__LINE__, (int)sizeof(pthread_t) * thread_count,
errno, STRERROR(errno));
free(sync_tids);
sync_tids = NULL;
}
else
{
sync_tids = new_sync_tids;
sync_tids[thread_count - 1] = tid;
}

View File

@ -655,18 +655,21 @@ static int tracker_load_groups_new(FDFSGroups *pGroups, const char *data_path,
if (nStorageSyncSize <= *nTrunkServerCount)
{
nStorageSyncSize += 8;
*ppTrunkServers = (FDFSStorageSync *)realloc( \
*ppTrunkServers, \
sizeof(FDFSStorageSync) * nStorageSyncSize);
if (*ppTrunkServers == NULL)
FDFSStorageSync *new_trunk_servers = (FDFSStorageSync *)
realloc(*ppTrunkServers, \
sizeof(FDFSStorageSync) * nStorageSyncSize);
if (new_trunk_servers == NULL)
{
result = errno != 0 ? errno : ENOMEM;
logError("file: "__FILE__", line: %d, " \
"realloc %d bytes fail", __LINE__, \
(int)sizeof(FDFSStorageSync) * \
nStorageSyncSize);
free(*ppTrunkServers);
*ppTrunkServers = NULL;
break;
}
*ppTrunkServers = new_trunk_servers;
}
strcpy((*ppTrunkServers)[*nTrunkServerCount].group_name, \
@ -991,18 +994,21 @@ static int tracker_load_storages_old(FDFSGroups *pGroups, const char *data_path)
if (nStorageSyncSize <= nStorageSyncCount)
{
nStorageSyncSize += 8;
pStorageSyncs = (FDFSStorageSync *)realloc( \
pStorageSyncs, \
sizeof(FDFSStorageSync) * nStorageSyncSize);
if (pStorageSyncs == NULL)
FDFSStorageSync *pNewStorageSyncs = (FDFSStorageSync *)
realloc(pStorageSyncs, \
sizeof(FDFSStorageSync) * nStorageSyncSize);
if (pNewStorageSyncs == NULL)
{
result = errno != 0 ? errno : ENOMEM;
logError("file: "__FILE__", line: %d, " \
"realloc %d bytes fail", __LINE__, \
(int)sizeof(FDFSStorageSync) * \
nStorageSyncSize);
free(pStorageSyncs);
pStorageSyncs = NULL;
break;
}
pStorageSyncs = pNewStorageSyncs;
}
strcpy(pStorageSyncs[nStorageSyncCount].group_name, \
@ -1274,18 +1280,21 @@ static int tracker_load_storages_new(FDFSGroups *pGroups, const char *data_path)
{
nStorageSyncSize *= 2;
}
pStorageSyncs = (FDFSStorageSync *)realloc( \
pStorageSyncs, \
sizeof(FDFSStorageSync) * nStorageSyncSize);
if (pStorageSyncs == NULL)
FDFSStorageSync *pNewStorageSyncs = (FDFSStorageSync *)
realloc(pStorageSyncs, \
sizeof(FDFSStorageSync) * nStorageSyncSize);
if (pNewStorageSyncs == NULL)
{
result = errno != 0 ? errno : ENOMEM;
logError("file: "__FILE__", line: %d, " \
"realloc %d bytes fail", __LINE__, \
(int)sizeof(FDFSStorageSync) * \
nStorageSyncSize);
free(pStorageSyncs);
pStorageSyncs = NULL;
break;
}
pStorageSyncs = pNewStorageSyncs;
}
strcpy(pStorageSyncs[nStorageSyncCount].group_name, \