Disable erasure of tdnf. (bug 1787318)

Change-Id: Ic607edea6b2b665d4884e9850d688c595151999c
This commit is contained in:
xiaolin-vmware 2017-01-20 10:58:38 -08:00 committed by Xiaolin Li
parent 086f13388e
commit 5f4a726303
3 changed files with 26 additions and 9 deletions

View File

@ -802,6 +802,7 @@ TDNFResolve(
HyPackageList hPkgListGoal = NULL;
PTDNF_SOLVED_PKG_INFO pSolvedPkgInfo = NULL;
PTDNF_PKG_INFO pPkgInfo = NULL;
if(!pTdnf || !ppSolvedPkgInfo)
{
@ -819,9 +820,9 @@ TDNFResolve(
BAIL_ON_TDNF_ERROR(dwError);
dwError = TDNFAllocateMemory(
1,
sizeof(TDNF_SOLVED_PKG_INFO),
(void**)&pSolvedPkgInfo);
1,
sizeof(TDNF_SOLVED_PKG_INFO),
(void**)&pSolvedPkgInfo);
BAIL_ON_TDNF_ERROR(dwError);
pSolvedPkgInfo->nAlterType = nAlterType;
@ -844,6 +845,18 @@ TDNFResolve(
pSolvedPkgInfo);
BAIL_ON_TDNF_ERROR(dwError);
pPkgInfo = pSolvedPkgInfo->pPkgsToRemove;
while(pPkgInfo != NULL)
{
if(pPkgInfo->pszName != NULL &&
strcmp(pPkgInfo->pszName, TDNF_NAME) == 0)
{
dwError = ERROR_TDNF_SELF_ERASE;
BAIL_ON_TDNF_ERROR(dwError);
}
pPkgInfo = pPkgInfo->pNext;
}
pSolvedPkgInfo->nNeedAction =
pSolvedPkgInfo->pPkgsToInstall ||
pSolvedPkgInfo->pPkgsToUpgrade ||
@ -965,9 +978,9 @@ TDNFSearchCommand(
}
unError = TDNFAllocateMemory(
unCount,
sizeof(TDNF_PKG_INFO),
(void**)&pPkgInfo);
unCount,
sizeof(TDNF_PKG_INFO),
(void**)&pPkgInfo);
BAIL_ON_TDNF_ERROR(unError);
@ -977,7 +990,8 @@ TDNFSearchCommand(
unError = TDNFSafeAllocateString(hy_package_get_name(hPkg), &pPkg->pszName);
BAIL_ON_TDNF_ERROR(unError);
unError = TDNFSafeAllocateString(hy_package_get_summary(hPkg), &pPkg->pszSummary);
unError = TDNFSafeAllocateString(hy_package_get_summary(hPkg),
&pPkg->pszSummary);
BAIL_ON_TDNF_ERROR(unError);
}

View File

@ -109,6 +109,7 @@ typedef enum
} while(0)
//Misc
#define TDNF_RPM_EXT ".rpm"
#define TDNF_NAME "tdnf"
#define DIR_SEPARATOR '/'
//repomd type
@ -216,4 +217,5 @@ typedef enum
{ERROR_TDNF_AUTOERASE_UNSUPPORTED,"ERROR_TDNF_AUTOERASE_UNSUPPORTED","autoerase / autoremove is not supported."}, \
{ERROR_TDNF_RPM_CHECK, "ERROR_TDNF_RPM_CHECK", "rpm check reported errors"}, \
{ERROR_TDNF_METADATA_EXPIRE_PARSE, "ERROR_TDNF_METADATA_EXPIRE_PARSE", "metadata_expire value could not be parsed. Check your repo files."},\
{ERROR_TDNF_SELF_ERASE, "ERROR_TDNF_SELF_ERASE", "The operation would result in removing the protected package : tdnf"},\
};

View File

@ -67,10 +67,11 @@ extern "C" {
#define ERROR_TDNF_NO_DOWNGRADE_PATH 1028
//
#define ERROR_TDNF_METADATA_EXPIRE_PARSE 1029
#define ERROR_TDNF_SELF_ERASE 1030
//curl errors
#define ERROR_TDNF_CURL_INIT 1030
#define ERROR_TDNF_CURL_BASE 1031
#define ERROR_TDNF_CURL_INIT 1200
#define ERROR_TDNF_CURL_BASE 1201
#define ERROR_TDNF_CURL_END 1299
//Hawkey errors 1300 to 1399