--- appstream-glib-0.7.15/libappstream-glib/as-utils.c.orig 2019-02-28 13:26:26.000000000 +0100 +++ appstream-glib-0.7.15/libappstream-glib/as-utils.c 2019-06-07 21:39:27.631669049 +0200 @@ -27,7 +27,8 @@ #include #ifdef HAVE_RPM -#include +#include +#include #endif #include "as-app-private.h" --- appstream-glib-0.6.9/libappstream-builder/asb-package-rpm.c.orig 2016-11-30 11:07:39.000000000 +0100 +++ appstream-glib-0.6.9/libappstream-builder/asb-package-rpm.c 2017-03-04 07:59:10.334045621 +0100 @@ -33,7 +33,7 @@ #include #include -#include +#include #include #include "asb-package-rpm.h" @@ -132,6 +132,36 @@ asb_package_rpm_set_source (AsbPackage * asb_package_set_source_pkgname (pkg, srcrpm); } +static uint64_t rpmtdGetNumber(rpmtd td) +{ + uint64_t val = 0; + int ix; + assert(td != NULL); + ix = (td->ix >= 0 ? td->ix : 0); + + switch (td->type) { + case RPM_INT64_TYPE: + val = *((uint64_t *) td->data + ix); + break; + case RPM_INT32_TYPE: + val = *((uint32_t *) td->data + ix); + break; + case RPM_INT16_TYPE: + val = *((uint16_t *) td->data + ix); + break; + case RPM_INT8_TYPE: + case RPM_CHAR_TYPE: + val = *((uint8_t *) td->data + ix); + break; + default: + break; + } + return val; +} + +#define _RPMVSF_NOSIGNATURES (RPMVSF_NODSAHEADER | RPMVSF_NORSAHEADER | RPMVSF_NODSA | RPMVSF_NORSA) +#define _RPMVSF_NODIGESTS (RPMVSF_NOSHA1HEADER | RPMVSF_NOMD5HEADER | RPMVSF_NOSHA1 | RPMVSF_NOMD5) + static gboolean asb_package_rpm_ensure_nevra (AsbPackage *pkg, GError **error) { @@ -139,7 +169,7 @@ asb_package_rpm_ensure_nevra (AsbPackage AsbPackageRpmPrivate *priv = GET_PRIVATE (pkg_rpm); rpmtd td; - td = rpmtdNew (); + td = malloc (sizeof (*td)); headerGet (priv->h, RPMTAG_NAME, td, HEADERGET_MINMEM); asb_package_set_name (pkg, rpmtdGetString (td)); headerGet (priv->h, RPMTAG_VERSION, td, HEADERGET_MINMEM); @@ -150,7 +180,7 @@ asb_package_rpm_ensure_nevra (AsbPackage asb_package_set_arch (pkg, rpmtdGetString (td)); headerGet (priv->h, RPMTAG_EPOCH, td, HEADERGET_MINMEM); asb_package_set_epoch (pkg, (guint) rpmtdGetNumber (td)); - rpmtdFree (td); + free (td); return TRUE; } @@ -161,10 +191,10 @@ asb_package_rpm_ensure_source (AsbPackag AsbPackageRpmPrivate *priv = GET_PRIVATE (pkg_rpm); rpmtd td; - td = rpmtdNew (); + td = malloc (sizeof (*td)); headerGet (priv->h, RPMTAG_SOURCERPM, td, HEADERGET_MINMEM); asb_package_rpm_set_source (pkg, rpmtdGetString (td)); - rpmtdFree (td); + free (td); return TRUE; } @@ -175,24 +205,28 @@ asb_package_rpm_ensure_url (AsbPackage * AsbPackageRpmPrivate *priv = GET_PRIVATE (pkg_rpm); rpmtd td; - td = rpmtdNew (); + td = malloc (sizeof (*td)); headerGet (priv->h, RPMTAG_URL, td, HEADERGET_MINMEM); asb_package_set_url (pkg, rpmtdGetString (td)); - rpmtdFree (td); + free (td); return TRUE; } static gboolean asb_package_rpm_ensure_vcs (AsbPackage *pkg, GError **error) { +#ifdef RPMTAG_VCS AsbPackageRpm *pkg_rpm = ASB_PACKAGE_RPM (pkg); AsbPackageRpmPrivate *priv = GET_PRIVATE (pkg_rpm); rpmtd td; - td = rpmtdNew (); + td = malloc (sizeof (*td)); headerGet (priv->h, RPMTAG_VCS, td, HEADERGET_MINMEM); asb_package_set_vcs (pkg, rpmtdGetString (td)); - rpmtdFree (td); + free (td); +#else + asb_package_set_vcs (pkg, NULL); +#endif return TRUE; } @@ -203,10 +237,10 @@ asb_package_rpm_ensure_license (AsbPacka AsbPackageRpmPrivate *priv = GET_PRIVATE (pkg_rpm); rpmtd td; - td = rpmtdNew (); + td = malloc (sizeof (*td)); headerGet (priv->h, RPMTAG_LICENSE, td, HEADERGET_MINMEM); asb_package_rpm_set_license (pkg, rpmtdGetString (td)); - rpmtdFree (td); + free (td); return TRUE; } @@ -277,7 +311,7 @@ asb_package_rpm_ensure_releases (AsbPack /* read out the file list */ for (i = 0; i < 3; i++) - td[i] = rpmtdNew (); + td[i] = malloc (sizeof (*td[1])); /* get the ChangeLog info */ headerGet (priv->h, RPMTAG_CHANGELOGTIME, td[0], HEADERGET_MINMEM); headerGet (priv->h, RPMTAG_CHANGELOGNAME, td[1], HEADERGET_MINMEM); @@ -292,7 +326,7 @@ asb_package_rpm_ensure_releases (AsbPack } for (i = 0; i < 3; i++) { rpmtdFreeData (td[i]); - rpmtdFree (td[i]); + free (td[i]); } return TRUE; } @@ -309,7 +343,7 @@ asb_package_rpm_ensure_deps (AsbPackage rpmtd td = NULL; /* read out the dep list */ - td = rpmtdNew (); + td = malloc (sizeof (*td)); rc = headerGet (priv->h, RPMTAG_REQUIRENAME, td, HEADERGET_MINMEM); if (!rc) { ret = FALSE; @@ -339,7 +373,7 @@ asb_package_rpm_ensure_deps (AsbPackage g_free (tmp); out: rpmtdFreeData (td); - rpmtdFree (td); + free (td); return ret; } @@ -362,7 +396,7 @@ asb_package_rpm_ensure_filelists (AsbPac /* read out the file list */ for (i = 0; i < 3; i++) - td[i] = rpmtdNew (); + td[i] = malloc (sizeof (*td[i])); rc = headerGet (priv->h, RPMTAG_DIRNAMES, td[0], HEADERGET_MINMEM); if (rc) rc = headerGet (priv->h, RPMTAG_BASENAMES, td[1], HEADERGET_MINMEM); @@ -397,7 +431,7 @@ asb_package_rpm_ensure_filelists (AsbPac out: for (i = 0; i < 3; i++) { rpmtdFreeData (td[i]); - rpmtdFree (td[i]); + free (td[i]); } return ret; } --- appstream-glib-0.7.8/libappstream-builder/asb-package-rpm.c~ 2018-04-20 12:37:25.000000000 +0200 +++ appstream-glib-0.7.8/libappstream-builder/asb-package-rpm.c 2018-05-03 10:49:28.865283220 +0200 @@ -29,6 +29,8 @@ #include "config.h" +#define _DEFAULT_SOURCE 1 + #include #include #include