[arch-commits] Commit in packagekit/trunk (4 files)

Carsten Haitzler raster at archlinux.org
Sun Jun 13 12:07:01 UTC 2021


    Date: Sunday, June 13, 2021 @ 12:07:00
  Author: raster
Revision: 963276

fix various bugs gracked by upstream pkgbuild

fixing various issues at https://github.com/PackageKit/PackageKit/pull/487

Added:
  packagekit/trunk/0016-alpm-fix-uninitialized-stack-vars-used-later-in-conf.patch
  packagekit/trunk/0017-alpm-fix-missing-handling-of-hookdir-in-pacman.conf.patch
  packagekit/trunk/0018-alpm-fix-get-update-detail-which-uses-totally-wrong-.patch
Modified:
  packagekit/trunk/PKGBUILD

-----------------------------------------------------------------+
 0016-alpm-fix-uninitialized-stack-vars-used-later-in-conf.patch |   29 ++
 0017-alpm-fix-missing-handling-of-hookdir-in-pacman.conf.patch  |   54 +++++
 0018-alpm-fix-get-update-detail-which-uses-totally-wrong-.patch |  100 ++++++++++
 PKGBUILD                                                        |   14 +
 4 files changed, 194 insertions(+), 3 deletions(-)

Added: 0016-alpm-fix-uninitialized-stack-vars-used-later-in-conf.patch
===================================================================
--- 0016-alpm-fix-uninitialized-stack-vars-used-later-in-conf.patch	                        (rev 0)
+++ 0016-alpm-fix-uninitialized-stack-vars-used-later-in-conf.patch	2021-06-13 12:07:00 UTC (rev 963276)
@@ -0,0 +1,29 @@
+From 763a046849ded07e3785d76b8af24381b44aadc1 Mon Sep 17 00:00:00 2001
+From: "Carsten Haitzler (Rasterman)" <raster at rasterman.com>
+Date: Sun, 13 Jun 2021 12:13:30 +0100
+Subject: [PATCH 1/2] alpm - fix uninitialized stack vars used later in config
+
+In the parsing of siglevel, depending on content this can leave
+level and mask sometimes unset as the code likes to take current value
+and val | newbitval to set bits, assuming it starts at 0. This fixes
+that.
+---
+ backends/alpm/pk-alpm-config.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/backends/alpm/pk-alpm-config.c b/backends/alpm/pk-alpm-config.c
+index 01081106c..3fbb60c18 100644
+--- a/backends/alpm/pk-alpm-config.c
++++ b/backends/alpm/pk-alpm-config.c
+@@ -793,7 +793,7 @@ static gboolean
+ pk_alpm_config_configure_repos (PkBackend *backend, PkAlpmConfig *config,
+ 				   alpm_handle_t *handle, GError **error)
+ {
+-	alpm_siglevel_t base, level, mask, local, remote;
++	alpm_siglevel_t base, level = 0, mask = 0, local, remote;
+ 	const alpm_list_t *i;
+ 	PkAlpmConfigSection *options;
+ 
+-- 
+2.31.1
+

Added: 0017-alpm-fix-missing-handling-of-hookdir-in-pacman.conf.patch
===================================================================
--- 0017-alpm-fix-missing-handling-of-hookdir-in-pacman.conf.patch	                        (rev 0)
+++ 0017-alpm-fix-missing-handling-of-hookdir-in-pacman.conf.patch	2021-06-13 12:07:00 UTC (rev 963276)
@@ -0,0 +1,54 @@
+From f2d1163b3c965b8b61f98460ff68d6cd94aae1a0 Mon Sep 17 00:00:00 2001
+From: "Carsten Haitzler (Rasterman)" <raster at rasterman.com>
+Date: Sun, 13 Jun 2021 12:15:18 +0100
+Subject: [PATCH 2/2] alpm - fix missing handling of hookdir in pacman.conf
+
+The pacman.conf parser didnt handle HookDir at all. This fixes that
+and handles it.
+---
+ backends/alpm/pk-alpm-config.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/backends/alpm/pk-alpm-config.c b/backends/alpm/pk-alpm-config.c
+index 3fbb60c18..3bce61a52 100644
+--- a/backends/alpm/pk-alpm-config.c
++++ b/backends/alpm/pk-alpm-config.c
+@@ -47,7 +47,7 @@ typedef struct
+ 
+ 	 alpm_list_t		*cachedirs, *holdpkgs, *ignoregroups,
+ 				*ignorepkgs, *localfilesiglevels, *noextracts,
+-				*noupgrades, *remotefilesiglevels;
++				*noupgrades, *remotefilesiglevels, *hookdirs;
+ 
+ 	 alpm_list_t		*sections;
+ 	 GRegex			*xrepo, *xarch;
+@@ -106,6 +106,7 @@ pk_alpm_config_free (PkAlpmConfig *config)
+ 	FREELIST (config->noextracts);
+ 	FREELIST (config->noupgrades);
+ 	FREELIST (config->remotefilesiglevels);
++	FREELIST (config->hookdirs);
+ 
+ 	alpm_list_free_inner (config->sections, pk_alpm_config_section_free);
+ 	alpm_list_free (config->sections);
+@@ -360,6 +361,7 @@ static const PkAlpmConfigList pk_alpm_config_list_options[] = {
+ 	{ "NoUpgrade", G_STRUCT_OFFSET (PkAlpmConfig, noupgrades) },
+ 	{ "RemoteFileSigLevel", G_STRUCT_OFFSET (PkAlpmConfig,
+ 						 remotefilesiglevels) },
++	{ "HookDir", G_STRUCT_OFFSET (PkAlpmConfig, hookdirs) },
+ 	{ NULL, 0 }
+ };
+ 
+@@ -997,6 +999,10 @@ pk_alpm_config_configure_alpm (PkBackend *backend, PkAlpmConfig *config, GError
+ 	alpm_option_set_noupgrades (handle, config->noupgrades);
+ 	config->noupgrades = NULL;
+ 
++	/* alpm takes ownership */
++	alpm_option_set_noupgrades (handle, config->hookdirs);
++	config->hookdirs = NULL;
++
+ 	pk_alpm_config_configure_repos (backend, config, handle, error);
+ 
+ 	return handle;
+-- 
+2.31.1
+

Added: 0018-alpm-fix-get-update-detail-which-uses-totally-wrong-.patch
===================================================================
--- 0018-alpm-fix-get-update-detail-which-uses-totally-wrong-.patch	                        (rev 0)
+++ 0018-alpm-fix-get-update-detail-which-uses-totally-wrong-.patch	2021-06-13 12:07:00 UTC (rev 963276)
@@ -0,0 +1,100 @@
+From 6e3ea5b0cfdaec125472fc2132767f4fc8c92a65 Mon Sep 17 00:00:00 2001
+From: "Carsten Haitzler (Rasterman)" <raster at rasterman.com>
+Date: Sun, 13 Jun 2021 12:59:26 +0100
+Subject: [PATCH] alpm - fix get-update-detail which uses totally wrong list of
+ strings
+
+pk_backend_get_update_detail_thread() passed in single stirngs instead
+of null pointer terminated lists (arrays) of strings thus the null
+terminator was junk on the stack... this fixes that/ updates is a
+single string anyway so thus fake an array of 2 eleemtns and replaces
+was all wrong trying to munge multiple replaces into a single string
+insted of producing a proper array of them.
+---
+ backends/alpm/pk-alpm-update.c | 35 +++++++++++++++++-----------------
+ 1 file changed, 17 insertions(+), 18 deletions(-)
+
+diff --git a/backends/alpm/pk-alpm-update.c b/backends/alpm/pk-alpm-update.c
+index aa641c02b..4071a10f6 100644
+--- a/backends/alpm/pk-alpm-update.c
++++ b/backends/alpm/pk-alpm-update.c
+@@ -39,33 +39,32 @@
+ #include "pk-alpm-transaction.h"
+ #include "pk-alpm-update.h"
+ 
+-static gchar *
++static gchar **
+ pk_alpm_pkg_build_replaces (PkBackendJob *job, alpm_pkg_t *pkg)
+ {
+ 	PkBackend *backend = pk_backend_job_get_backend (job);
+ 	PkBackendAlpmPrivate *priv = pk_backend_get_user_data (backend);
+ 	const alpm_list_t *i;
+-	GString *string = NULL;
++	gchar **replaces = NULL;
++	gint count = 0;
+ 
+ 	g_return_val_if_fail (pkg != NULL, NULL);
+ 
+ 	/* make a list of the packages that package replaces */
+ 	for (i = alpm_pkg_get_replaces (pkg); i != NULL; i = i->next) {
+-		alpm_pkg_t *replaces = alpm_db_get_pkg (priv->localdb, i->data);
+-
+-		if (replaces != NULL) {
+-			g_autofree gchar *package = pk_alpm_pkg_build_id (replaces);
+-			if (string == NULL) {
+-				string = g_string_new (package);
+-			} else {
+-				g_string_append_printf (string, "&%s", package);
++		alpm_pkg_t *package = alpm_db_get_pkg (priv->localdb, i->data);
++
++		if (package != NULL) {
++			gchar *id = pk_alpm_pkg_build_id (package);
++			if (id) {
++				replaces =  g_realloc (replaces, ((++count) + 1) * sizeof(gchar *));
++				replaces[count - 1] = id;
++				replaces[count] = NULL;
+ 			}
+ 		}
+ 	}
+ 
+-	if (string == NULL)
+-		return NULL;
+-	return g_string_free (string, FALSE);
++	return replaces;
+ }
+ 
+ static gchar **
+@@ -143,8 +142,8 @@ pk_backend_get_update_detail_thread (PkBackendJob *job, GVariant* params, gpoint
+ 		PkRestartEnum restart = PK_RESTART_ENUM_NONE;
+ 		PkUpdateStateEnum state = PK_UPDATE_STATE_ENUM_STABLE;
+ 		alpm_time_t built, installed;
+-		g_autofree gchar *upgrades = NULL;
+-		g_autofree gchar *replaces = NULL;
++		g_autofree gchar *upgrades[2] = { NULL, NULL };
++		g_autofree gchar **replaces;
+ 		g_auto(GStrv) urls = NULL;
+ 		g_autofree gchar *issued = NULL;
+ 		g_autofree gchar *updated = NULL;
+@@ -158,7 +157,7 @@ pk_backend_get_update_detail_thread (PkBackendJob *job, GVariant* params, gpoint
+ 
+ 		old = alpm_db_get_pkg (priv->localdb, alpm_pkg_get_name (pkg));
+ 		if (old != NULL) {
+-			upgrades = pk_alpm_pkg_build_id (old);
++			upgrades[0] = pk_alpm_pkg_build_id (old);
+ 			if (pk_alpm_pkg_same_pkgver (pkg, old)) {
+ 				reason = "Update to a newer release";
+ 			} else {
+@@ -188,8 +187,8 @@ pk_backend_get_update_detail_thread (PkBackendJob *job, GVariant* params, gpoint
+ 				updated = pk_alpm_time_to_iso8601 (installed);
+ 		}
+ 
+-		pk_backend_job_update_detail (job, *packages, &upgrades,
+-					      &replaces, urls, NULL, NULL,
++		pk_backend_job_update_detail (job, *packages, upgrades,
++					      replaces, urls, NULL, NULL,
+ 					      restart, reason, NULL, state,
+ 					      issued, updated);
+ 	}
+-- 
+2.31.1
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2021-06-13 11:47:18 UTC (rev 963275)
+++ PKGBUILD	2021-06-13 12:07:00 UTC (rev 963276)
@@ -11,7 +11,7 @@
 license=('GPL')
 makedepends=('polkit' 'sqlite' 'gobject-introspection' 'intltool'
              'bash-completion' 'vala' 'meson')
-options=('!emptydirs')
+options=('!emptydirs' '!strip')
 validpgpkeys=('163EB50119225DB3DF8F49EA17ACBA8DFA970E17'        # Richard Hughes <richard at hughsie.com>
               'EC60AABDF42AAE8FB062640480858FA38F62AF74')       # Kalev Lember <klember at redhat.com>
 source=("https://www.freedesktop.org/software/PackageKit/releases/PackageKit-${pkgver}.tar.xz"
@@ -29,7 +29,11 @@
          0012-alpm-fix-warning-about-fallthrough-be-explicit-about.patch
          0013-build-fix-overall-sysconfdir-handling-so-it-can-work.patch
          0014-Fix-get-updates.patch
-         0015-support-new-pacman-options.patch)
+         0015-support-new-pacman-options.patch
+         0016-alpm-fix-uninitialized-stack-vars-used-later-in-conf.patch
+         0017-alpm-fix-missing-handling-of-hookdir-in-pacman.conf.patch
+         0018-alpm-fix-get-update-detail-which-uses-totally-wrong-.patch
+         )
 sha256sums=('d3bef282f8b45963618adb69ed5199f23640b00b98ead66291ae30cff8068e4a'
             '3c4d5a2658c9ed28ff949f7a2aa0c99e1a85e63f7fd0b068d3b9278ace503c16'
             '258ff42a2c0f9dd5d609785d5535af35294c5940b63936fa32fdc4cff4b3151d'
@@ -45,7 +49,10 @@
             'a2ff81d619e0e9be87188c046367581b61d5756d294012cb886431454afbe249'
             '0188f015890681acdded08a2372cf6963a5b9436e98734dcab07b9d0147310c9'
             '2e7e542a6115f3ed993c71c63bf41206552f6028282778c7f90fdfb2fd9eebe8'
-            '2012114520c304b78340dfd33e87862d0a2e973d51c3dadd8e6cf0483a041735')
+            '2012114520c304b78340dfd33e87862d0a2e973d51c3dadd8e6cf0483a041735'
+            'a7ae42bbf5a1d4995d2b4f483a78791da57a41d1bcc2ddd52370c8fa19430282'
+            '589102648833adbda34f46b7b2c1e1849892fda36d5721eed3e36ea6e349156c'
+            '5e433fa6dff406b085ccee8a6f52af5a26daf9a1892c91e14b0bd00cb70cf191')
 
 prepare() {
   for _patch in *.patch; do
@@ -64,6 +71,7 @@
                 -Dsystemd=true
         )
 
+export CFLAGS="-O0 -g"
         arch-meson "PackageKit-$pkgver" build "${_meson_options[@]}"
 
         ninja -C build



More information about the arch-commits mailing list