]> git.pld-linux.org Git - packages/systemtap.git/blame - systemtap-rpm5-support.patch
updated format security patch
[packages/systemtap.git] / systemtap-rpm5-support.patch
CommitLineData
3d0924cd
JK
1diff -dur systemtap-3.2.orig/configure.ac systemtap-3.2/configure.ac
2--- systemtap-3.2.orig/configure.ac 2017-11-13 10:02:17.000000000 +0100
3+++ systemtap-3.2/configure.ac 2017-11-13 10:16:52.000000000 +0100
4@@ -465,6 +465,19 @@
6fbeb569
JR
5 [AS_HELP_STRING([--with-rpm],
6 [query rpm database for missing debuginfos])], [], [with_rpm="auto"])
7 if test "$with_rpm" != "no"; then
8+ PKG_CHECK_MODULES([RPM], [rpm], [
9+ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
10+ CPPFLAGS="$RPM_CFLAGS $CPPFLAGS"
11+ stap_LIBS="$stap_LIBS $RPM_LIBS"
12+ ], [
13+ AC_PATH_PROG(RPM_PATH,rpm,none)
14+ if test "$RPM_PATH" = "none"; then
15+ AC_MSG_ERROR([RPM executable was not found in your system])
16+ else
17+ AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])
18+ fi
19+ ]
20+)
21 AC_CHECK_LIB(rpm, rpmtsInitIterator, [
22 AC_DEFINE([HAVE_LIBRPM],[1],[have librpm])
3d0924cd 23 stap_LIBS="$stap_LIBS -lc -lrpm"
99214564
JR
24@@ -548,6 +548,9 @@
25 AC_CHECK_HEADERS([elfutils/version.h])
26 fi
27
28+CPPFLAGS="${CPPFLAGS} -I/usr/include/rpm"
29+LIBS="${LIBS} -lrpmdb"
30+
31 dnl This is here mainly to make sure that configure --prefix=... changes
32 dnl the config.h files so files depending on it are recompiled
33 dnl prefix is passed through indirectly in the Makefile.am AM_CPPFLAGS.
3d0924cd
JK
34diff -dur systemtap-3.2.orig/rpm_finder.cxx systemtap-3.2/rpm_finder.cxx
35--- systemtap-3.2.orig/rpm_finder.cxx 2017-10-18 19:59:37.000000000 +0200
36+++ systemtap-3.2/rpm_finder.cxx 2017-11-13 10:16:28.000000000 +0100
37@@ -20,20 +20,22 @@
6fbeb569
JR
38
39 #ifdef HAVE_LIBRPM
40
41-extern "C" {
42-
6fbeb569
JR
43-#include <string.h>
44-#include <rpm/rpmlib.h>
45-#include <rpm/rpmts.h>
46-#include <rpm/rpmdb.h>
47-#include <rpm/header.h>
48+#include <cstring>
49+#include <tr1/cstdint>
50+#include <rpmtypes.h>
51+#include <rpmiotypes.h>
52+#include <rpmtag.h>
53+#include <rpmts.h>
54+#include <rpmrc.h>
55+#include <rpmdb.h>
56+#include <rpmmacro.h>
57+#include <rpmio.h>
58+#include <rpmcli.h>
59
60 #ifndef xfree
61 #define xfree free
62 #endif
63
64-}
65-
66 #if ! HAVE_LIBRPMIO && HAVE_NSS
67 extern "C" {
68 #include <nss.h>
3d0924cd 69@@ -50,7 +52,7 @@
6fbeb569
JR
70 {
71 static int rpm_init_done = 0;
72 rpmts ts;
73- rpmdbMatchIterator mi;
74+ rpmmi mi;
75 int count = 0;
76
77 if (filename == NULL)
3d0924cd 78@@ -93,13 +95,15 @@
6fbeb569
JR
79 errmsg_t err;
80 size_t rpminfolen = strlen(rpm_type);
81 size_t srcrpmlen = sizeof (".src.rpm") - 1;
82- rpmdbMatchIterator mi_rpminfo;
83- h = rpmdbNextIterator(mi);
84+ rpmmi mi_rpminfo;
85+ h = rpmmiNext(mi);
86 if (h == NULL)
87 break;
88 /* Verify the kernel file is not already installed. */
3d0924cd
JK
89
90- rpminfo = headerFormat(h, header, &err);
91+ char *nvra = rpmExpand("%{___NVRA}", NULL);
92+ rpminfo = headerSprintf(h, header, rpmTagTable, rpmHeaderFormats, &err);
93+ free(nvra);
94
95 if (!rpminfo)
96 {
97@@ -140,20 +144,21 @@
6fbeb569
JR
98 /* s = `-debuginfo-%{version}-%{release}.%{arch}' */
99
100 /* RPMDBI_PACKAGES requires keylen == sizeof (int). */
101- /* RPMDBI_LABEL is an interface for NVR-based dbiFindByLabel(). */
102- mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMDBI_LABEL,
103+ /* RPMTAG_NVRA is an interface for NVR-based dbiFindByLabel(). */
104+ mi_rpminfo = rpmtsInitIterator(ts, (rpmTag) RPMTAG_NVRA,
105 rpminfo, 0);
106 if (mi_rpminfo)
107 {
108- rpmdbFreeIterator(mi_rpminfo);
109+ rpmmiFree(mi_rpminfo);
110 count = 0;
111 break;
112 }
113 /* The allocated memory gets utilized below for MISSING_RPM_HASH. */
114 if(strcmp(rpm_type,"-debuginfo")==0){
115+ char *nvra = rpmExpand("%{___NVRA}", NULL);
116 xfree(rpminfo);
3d0924cd
JK
117- rpminfo = headerFormat(h, "%{name}-%{version}-%{release}.%{arch}",
118- &err);
119+ rpminfo = headerSprintf(h, nvra, rpmTagTable, rpmHeaderFormats, &err);
6fbeb569
JR
120+ free(nvra);
121 }
122 if (!rpminfo)
123 {
3d0924cd 124@@ -177,7 +182,7 @@
6fbeb569
JR
125 sess.rpms_to_install.insert(rpminfo);
126 }
127 count++;
128- rpmdbFreeIterator(mi);
129+ rpmmiFree(mi);
130 }
131
132 rpmtsFree(ts);
This page took 0.115855 seconds and 4 git commands to generate.