diff options
| author | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-08-05 13:23:51 +0200 |
|---|---|---|
| committer | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-08-10 09:56:37 +0200 |
| commit | e84ab7783d05eb7b5f1b55ab44e7c23c85e50516 (patch) | |
| tree | 7656e60b9ce0c6cb51d3464369a519709ea8ed5c /src/Daemon/RPM.cpp | |
| parent | f926010c0f67582bcb37d1221cfe09743248b148 (diff) | |
| download | abrt-e84ab7783d05eb7b5f1b55ab44e7c23c85e50516.tar.gz abrt-e84ab7783d05eb7b5f1b55ab44e7c23c85e50516.tar.xz abrt-e84ab7783d05eb7b5f1b55ab44e7c23c85e50516.zip | |
rename RPM.cpp -> rpm.c
Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
Diffstat (limited to 'src/Daemon/RPM.cpp')
| -rw-r--r-- | src/Daemon/RPM.cpp | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/src/Daemon/RPM.cpp b/src/Daemon/RPM.cpp deleted file mode 100644 index 60f896a6..00000000 --- a/src/Daemon/RPM.cpp +++ /dev/null @@ -1,223 +0,0 @@ -/* - Copyright (C) 2010 ABRT team - Copyright (C) 2010 RedHat Inc - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -#include "abrtlib.h" -#include "RPM.h" -#include <rpm/header.h> -#include <rpm/rpmts.h> -#include "comm_layer_inner.h" -#include <glib.h> - -/** -* A set, which contains finger prints. -*/ - -static GList *list_fingerprints = NULL; - -void rpm_init() -{ - int status = rpmReadConfigFiles((const char*)NULL, (const char*)NULL); - if (status != 0) - error_msg("error reading rc files"); - - list_fingerprints = g_list_alloc(); -} - -static void list_free(gpointer data, gpointer user_data) -{ - free(data); -} - -void rpm_destroy() -{ - rpmFreeRpmrc(); - rpmFreeCrypto(); - - g_list_foreach(list_fingerprints, list_free, NULL); - g_list_free(list_fingerprints); -} - -void rpm_load_gpgkey(const char* filename) -{ - uint8_t *pkt = NULL; - size_t pklen; - if (pgpReadPkts(filename, &pkt, &pklen) != PGPARMOR_PUBKEY) - { - free(pkt); - error_msg("Can't load public GPG key %s", filename); - return; - } - - uint8_t keyID[8]; - if (pgpPubkeyFingerprint(pkt, pklen, keyID) == 0) - { - char *fingerprint = pgpHexStr(keyID, sizeof(keyID)); - if (fingerprint != NULL) - g_list_append(list_fingerprints, fingerprint); - } - free(pkt); -} - -bool rpm_chk_fingerprint(const char* pkg) -{ - bool ret = false; - char *pgpsig = NULL; - const char *errmsg = NULL; - - rpmts ts = rpmtsCreate(); - rpmdbMatchIterator iter = rpmtsInitIterator(ts, RPMTAG_NAME, pkg, 0); - Header header = rpmdbNextIterator(iter); - - if (!header) - goto error; - - pgpsig = headerFormat(header, "%{SIGGPG:pgpsig}", &errmsg); - if (!pgpsig && errmsg) - { - VERB1 log("cannot get siggpg:pgpsig. reason: %s", errmsg); - goto error; - } - - { - char *pgpsig_tmp = strstr(pgpsig, " Key ID "); - if (pgpsig_tmp) - { - pgpsig_tmp += sizeof(" Key ID ") - 1; - ret = g_list_find(list_fingerprints, pgpsig_tmp) != NULL; - } - } - -error: - free(pgpsig); - rpmdbFreeIterator(iter); - rpmtsFree(ts); - return ret; -} - -/* - Checking the MD5 sum requires to run prelink to "un-prelink" the - binaries - this is considered potential security risk so we don't - use it, until we find some non-intrusive way -*/ - -/* - * Not woking, need to be rewriten - * -bool CheckHash(const char* pPackage, const char* pPath) -{ - bool ret = true; - rpmts ts = rpmtsCreate(); - rpmdbMatchIterator iter = rpmtsInitIterator(ts, RPMTAG_NAME, pPackage, 0); - Header header = rpmdbNextIterator(iter); - if (header == NULL) - goto error; - - rpmfi fi = rpmfiNew(ts, header, RPMTAG_BASENAMES, RPMFI_NOHEADER); - pgpHashAlgo hashAlgo; - std::string headerHash; - char computedHash[1024] = ""; - - while (rpmfiNext(fi) != -1) - { - if (strcmp(pPath, rpmfiFN(fi)) == 0) - { - headerHash = rpmfiFDigestHex(fi, &hashAlgo); - rpmDoDigest(hashAlgo, pPath, 1, (unsigned char*) computedHash, NULL); - ret = (headerHash != "" && headerHash == computedHash); - break; - } - } - rpmfiFree(fi); -error: - rpmdbFreeIterator(iter); - rpmtsFree(ts); - return ret; -} -*/ - -char* rpm_get_description(const char* pkg) -{ - char *dsc = NULL; - const char *errmsg = NULL; - rpmts ts = rpmtsCreate(); - - rpmdbMatchIterator iter = rpmtsInitIterator(ts, RPMTAG_NAME, pkg, 0); - Header header = rpmdbNextIterator(iter); - if (!header) - goto error; - - dsc = headerFormat(header, "%{SUMMARY}\n\n%{DESCRIPTION}", &errmsg); - if (!dsc && errmsg) - error_msg("cannot get summary and description. reason: %s", errmsg); - -error: - rpmdbFreeIterator(iter); - rpmtsFree(ts); - return dsc; -} - -char* rpm_get_component(const char* filename) -{ - char *ret = NULL; - char *srpm = NULL; - const char *errmsg = NULL; - - rpmts ts = rpmtsCreate(); - rpmdbMatchIterator iter = rpmtsInitIterator(ts, RPMTAG_BASENAMES, filename, 0); - Header header = rpmdbNextIterator(iter); - if (!header) - goto error; - - srpm = headerFormat(header, "%{SOURCERPM}", &errmsg); - if (!srpm && errmsg) - { - error_msg("cannot get srpm. reason: %s", errmsg); - goto error; - } - - ret = get_package_name_from_NVR_or_NULL(srpm); - free(srpm); - -error: - rpmdbFreeIterator(iter); - rpmtsFree(ts); - return ret; -} - -// caller is responsible to free returned value -char* rpm_get_package_nvr(const char* filename) -{ - char* nvr = NULL; - const char *errmsg = NULL; - - rpmts ts = rpmtsCreate(); - rpmdbMatchIterator iter = rpmtsInitIterator(ts, RPMTAG_BASENAMES, filename, 0); - Header header = rpmdbNextIterator(iter); - - if (!header) - goto error; - - nvr = headerFormat(header, "%{NAME}-%{VERSION}-%{RELEASE}", &errmsg); - if (!nvr && errmsg) - error_msg("cannot get nvr. reason: %s", errmsg); - -error: - rpmdbFreeIterator(iter); - rpmtsFree(ts); - return nvr; -} |
