Add wrap check in alloc routine

This commit is contained in:
Priyesh Padmavilasom 2015-12-18 15:28:49 -05:00
parent 9fe08657ce
commit be1dddab7a
19 changed files with 52 additions and 30 deletions

View File

@ -228,6 +228,7 @@ TDNFClean(
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_CLEAN_INFO),
(void**)&pCleanInfo);
BAIL_ON_TDNF_ERROR(dwError);
@ -495,6 +496,7 @@ TDNFOpenHandle(
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF),
(void**)&pTdnf);
BAIL_ON_TDNF_ERROR(dwError);
@ -668,6 +670,7 @@ TDNFResolve(
BAIL_ON_TDNF_ERROR(dwError);
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_SOLVED_PKG_INFO),
(void**)&pSolvedPkgInfo);
BAIL_ON_TDNF_ERROR(dwError);
@ -675,7 +678,8 @@ TDNFResolve(
pSolvedPkgInfo->nAlterType = nAlterType;
dwError = TDNFAllocateMemory(
sizeof(char*) * pTdnf->pArgs->nCmdCount,
pTdnf->pArgs->nCmdCount,
sizeof(char*),
(void**)&pSolvedPkgInfo->ppszPkgsNotResolved);
BAIL_ON_TDNF_ERROR(dwError);
@ -812,7 +816,8 @@ TDNFSearchCommand(
}
unError = TDNFAllocateMemory(
sizeof(TDNF_PKG_INFO) * unCount,
unCount,
sizeof(TDNF_PKG_INFO),
(void**)&pPkgInfo);
BAIL_ON_TDNF_ERROR(unError);
@ -902,6 +907,7 @@ TDNFUpdateInfo(
for(iAdv = 0; iAdv < nCount; iAdv++)
{
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_UPDATEINFO),
(void**)&pInfo);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -53,7 +53,8 @@ TDNFCopyEnabledRepos(
}
dwError = TDNFAllocateMemory(
sizeof(char**) * (nCount + 1),
nCount + 1,
sizeof(char**),
(void**)&ppszReposUsed);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -74,6 +74,7 @@ TDNFReadConfig(
if(g_key_file_has_group(pKeyFile, pszGroup))
{
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_CONF),
(void**)&pConf);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -137,6 +137,7 @@ typedef enum
{ERROR_TDNF_SET_PROXY_USERPASS, "ERROR_TDNF_SET_PROXY_USERPASS", "There was an error setting the proxy server user and pass"}, \
{ERROR_TDNF_NO_DISTROVERPKG, "ERROR_TDNF_NO_DISTROVERPKG", "distroverpkg config entry is set to a package that is not installed. Check /etc/tdnf/tdnf.conf"}, \
{ERROR_TDNF_DISTROVERPKG_READ, "ERROR_TDNF_DISTROVERPKG_READ", "There was an error reading version of distroverpkg"}, \
{ERROR_TDNF_INVALID_ALLOCSIZE, "ERROR_TDNF_INVALID_ALLOCSIZE", "A memory allocation was requested with an invalid size"}, \
{ERROR_TDNF_NO_ENABLED_REPOS, "ERROR_TDNF_NO_ENABLED_REPOS", "There are no enabled repos.\n Run ""tdnf repolist all"" to see the repos you have.\n You can enable repos by editing repo files in your repodir(usually /etc/yum.repos.d)"}, \
{ERROR_TDNF_PACKAGELIST_EMPTY, "ERROR_TDNF_PACKAGELIST_EMPTY", "Packagelist was empty"}, \
{ERROR_TDNF_GOAL_CREATE, "ERROR_TDNF_GOAL_CREATE", "Error creating goal"}, \

View File

@ -188,6 +188,7 @@ TDNFGoalGetAllResultsIgnoreNoData(
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_SOLVED_PKG_INFO),
(void**)&pInfo);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -106,6 +106,7 @@ TDNFCloneCmdArgs(
PTDNF_CMD_ARGS pCmdArgs = NULL;
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_CMD_ARGS),
(void**)&pCmdArgs);
BAIL_ON_TDNF_ERROR(dwError);
@ -134,7 +135,8 @@ TDNFCloneCmdArgs(
pCmdArgs->nCmdCount = pCmdArgsIn->nCmdCount;
dwError = TDNFAllocateMemory(
pCmdArgs->nCmdCount * sizeof(char*),
pCmdArgs->nCmdCount,
sizeof(char*),
(void**)&pCmdArgs->ppszCmds
);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -22,20 +22,27 @@
uint32_t
TDNFAllocateMemory(
size_t size,
size_t nNumElements,
size_t nSize,
void** ppMemory
)
{
uint32_t dwError = 0;
void* pMemory = NULL;
if (!ppMemory || !size)
if (!ppMemory || !nSize || !nNumElements)
{
dwError = ERROR_TDNF_INVALID_PARAMETER;
BAIL_ON_TDNF_ERROR(dwError);
}
pMemory = calloc(1, size);
if(nNumElements > SIZE_MAX/nSize)
{
dwError = ERROR_TDNF_INVALID_ALLOCSIZE;
BAIL_ON_TDNF_ERROR(dwError);
}
pMemory = calloc(nNumElements, nSize);
if (!pMemory)
{
dwError = ERROR_TDNF_OUT_OF_MEMORY;

View File

@ -356,6 +356,7 @@ TDNFPopulatePkgInfos(
FOR_PACKAGELIST(hPkg, hPkgList, nIndex)
{
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_PKG_INFO),
(void**)&pPkgInfo);
BAIL_ON_TDNF_ERROR(dwError);
@ -456,7 +457,8 @@ TDNFPopulatePkgInfoArray(
}
dwError = TDNFAllocateMemory(
sizeof(TDNF_PKG_INFO) * dwCount,
dwCount,
sizeof(TDNF_PKG_INFO),
(void**)&pPkgInfo);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -617,17 +617,6 @@ TDNFFreePackageInfoContents(
PTDNF_PKG_INFO pPkgInfo
);
uint32_t
TDNFAllocateMemory(
size_t size,
void** ppMemory
);
void
TDNFFreeMemory(
void* pMemory
);
void
TDNFFreeCmdOpt(
PTDNF_CMD_OPT pCmdOpt

View File

@ -160,7 +160,7 @@ TDNFLoadReposFromFile(
{
pszRepo = ppszRepos[i];
dwError = TDNFAllocateMemory(sizeof(TDNF_REPO_DATA), (void**)&pRepo);
dwError = TDNFAllocateMemory(1, sizeof(TDNF_REPO_DATA), (void**)&pRepo);
BAIL_ON_TDNF_ERROR(dwError);
dwError = TDNFAllocateString(pszRepo, &pRepo->pszId);

View File

@ -113,7 +113,7 @@ TDNFAllocateStringPrintf(
}
nSize = nSize + 1;
dwError = TDNFAllocateMemory(nSize, (void**)&pszDst);
dwError = TDNFAllocateMemory(1, nSize, (void**)&pszDst);
BAIL_ON_TDNF_ERROR(dwError);
va_start(argList, pszFmt);
@ -180,7 +180,7 @@ TDNFAllocateStringN(
BAIL_ON_TDNF_ERROR(dwError);
}
dwError = TDNFAllocateMemory(dwNumElements + 1, (void**)&pszDst);
dwError = TDNFAllocateMemory(dwNumElements + 1, 1, (void**)&pszDst);
BAIL_ON_TDNF_ERROR(dwError);
strncpy(pszDst, pszSrc, dwNumElements);

View File

@ -51,7 +51,8 @@ TDNFUpdateInfoSummary(
BAIL_ON_TDNF_ERROR(dwError);
dwError = TDNFAllocateMemory(
sizeof(TDNF_UPDATEINFO_SUMMARY) * (nTypeCount+1),
nTypeCount + 1,
sizeof(TDNF_UPDATEINFO_SUMMARY),
(void**)&pSummary);
BAIL_ON_TDNF_ERROR(dwError);
@ -198,6 +199,7 @@ TDNFGetUpdateInfoPackages(
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_UPDATEINFO_PKG),
(void**)&pPkg);
BAIL_ON_TDNF_ERROR(dwError);

View File

@ -48,7 +48,7 @@ TDNFUtilsFormatSize(
nIndex++;
}
dwError = TDNFAllocateMemory(nMaxSize, (void**)&pszFormattedSize);
dwError = TDNFAllocateMemory(1, nMaxSize, (void**)&pszFormattedSize);
BAIL_ON_TDNF_ERROR(dwError);
if(sprintf(pszFormattedSize, "%.2f %c", dSize, pszSizes[nIndex]) < 0)

View File

@ -189,7 +189,8 @@ TDNFUtilsFormatSize(
//apis to allocate and free memory
uint32_t
TDNFAllocateMemory(
size_t size,
size_t nNumElements,
size_t nSize,
void** ppMemory
);

View File

@ -58,6 +58,8 @@ extern "C" {
#define ERROR_TDNF_SET_PROXY_USERPASS 1021
#define ERROR_TDNF_NO_DISTROVERPKG 1022
#define ERROR_TDNF_DISTROVERPKG_READ 1023
//
#define ERROR_TDNF_INVALID_ALLOCSIZE 1024
//Hawkey errors 1300 to 1399
#define ERROR_TDNF_HAWKEY_BASE 1300

View File

@ -72,6 +72,7 @@ TDNFCliParseArgs(
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_CMD_ARGS),
(void**)&pCmdArgs);
BAIL_ON_CLI_ERROR(dwError);
@ -153,7 +154,8 @@ TDNFCliParseArgs(
{
pCmdArgs->nCmdCount = argc-optind;
dwError = TDNFAllocateMemory(
pCmdArgs->nCmdCount * sizeof(char*),
pCmdArgs->nCmdCount,
sizeof(char*),
(void**)&pCmdArgs->ppszCmds);
BAIL_ON_CLI_ERROR(dwError);
@ -255,7 +257,8 @@ TDNFCliParsePackageArgs(
}
dwError = TDNFAllocateMemory(
sizeof(char*) * (nPackageCount + 1),
nPackageCount + 1,
sizeof(char*),
(void**)&ppszPackageArgs);
BAIL_ON_CLI_ERROR(dwError);

View File

@ -39,6 +39,7 @@ TDNFCliParseListArgs(
BAIL_ON_CLI_ERROR(dwError);
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_LIST_ARGS),
(void**)&pListArgs);
BAIL_ON_CLI_ERROR(dwError);
@ -58,7 +59,8 @@ TDNFCliParseListArgs(
//Copy the rest of the args as package name specs
nPackageCount = pCmdArgs->nCmdCount - nStartIndex;
dwError = TDNFAllocateMemory(
sizeof(char*) * (nPackageCount + 1),
nPackageCount + 1,
sizeof(char*),
(void**)&pListArgs->ppszPackageNameSpecs);
BAIL_ON_CLI_ERROR(dwError);

View File

@ -40,6 +40,7 @@ TDNFCliParseUpdateInfoArgs(
}
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_UPDATEINFO_ARGS),
(void**)&pUpdateInfoArgs);
BAIL_ON_CLI_ERROR(dwError);
@ -80,7 +81,8 @@ TDNFCliParseUpdateInfoArgs(
//Copy the rest of the args as package name specs
nPackageCount = pCmdArgs->nCmdCount - nStartIndex;
dwError = TDNFAllocateMemory(
sizeof(char*) * (nPackageCount + 1),
nPackageCount + 1,
sizeof(char*),
(void**)&pUpdateInfoArgs->ppszPackageNameSpecs);
BAIL_ON_CLI_ERROR(dwError);

View File

@ -85,7 +85,7 @@ GetOptionAndValue(
BAIL_ON_CLI_ERROR(dwError);
}
dwError = TDNFAllocateMemory(sizeof(TDNF_CMD_OPT), (void**)&pCmdOpt);
dwError = TDNFAllocateMemory(1, sizeof(TDNF_CMD_OPT), (void**)&pCmdOpt);
BAIL_ON_CLI_ERROR(dwError);
dwError = TDNFAllocateString(pszOptArg, &pCmdOpt->pszOptName);