properly handle rename() and chmod() errors

This commit is contained in:
Oliver Kurth 2022-08-11 15:03:25 -07:00
parent 859c1be4fe
commit e72937d6ea
3 changed files with 17 additions and 9 deletions

View File

@ -668,10 +668,16 @@ TDNFDownloadFile(
}
else
{
dwError = rename(pszFileTmp, pszFile);
BAIL_ON_TDNF_ERROR(dwError);
dwError = chmod(pszFile, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
BAIL_ON_TDNF_ERROR(dwError);
if (rename(pszFileTmp, pszFile) == -1)
{
dwError = errno;
BAIL_ON_TDNF_SYSTEM_ERROR(dwError);
}
if (chmod(pszFile, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) == -1)
{
dwError = errno;
BAIL_ON_TDNF_SYSTEM_ERROR(dwError);
}
}
cleanup:

View File

@ -1345,9 +1345,11 @@ TDNFReplaceFile(
BAIL_ON_TDNF_ERROR(dwError);
}
/* coverity[toctou] */
dwError = rename (pszSrcFile, pszDstFile);
BAIL_ON_TDNF_ERROR(dwError);
if (rename(pszSrcFile, pszDstFile) == -1)
{
dwError = errno;
BAIL_ON_TDNF_SYSTEM_ERROR(dwError);
}
cleanup:
return dwError;
error:

View File

@ -678,9 +678,9 @@ SolvCreateMetaDataCache(
BAIL_ON_TDNF_LIBSOLV_ERROR(dwError);
}
if (rename (pszTempSolvFile, pszCacheFilePath))
if (rename(pszTempSolvFile, pszCacheFilePath) == -1)
{
dwError = ERROR_TDNF_INVALID_PARAMETER;
dwError = ERROR_TDNF_SYSTEM_BASE + errno;
BAIL_ON_TDNF_LIBSOLV_ERROR(dwError);
}
unlink(pszTempSolvFile);