summaryrefslogtreecommitdiffstats
path: root/src/Daemon/RPM.cpp
diff options
context:
space:
mode:
authorNikola Pajkovsky <npajkovs@redhat.com>2010-08-05 13:23:51 +0200
committerNikola Pajkovsky <npajkovs@redhat.com>2010-08-10 09:56:37 +0200
commite84ab7783d05eb7b5f1b55ab44e7c23c85e50516 (patch)
tree7656e60b9ce0c6cb51d3464369a519709ea8ed5c /src/Daemon/RPM.cpp
parentf926010c0f67582bcb37d1221cfe09743248b148 (diff)
downloadabrt-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.cpp223
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;
-}