Accepting request 1218739 from devel:libraries:c_c++

OBS-URL: https://build.opensuse.org/request/show/1218739
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libxslt?expand=0&rev=70
This commit is contained in:
Ana Guerrero 2024-10-29 13:31:49 +00:00 committed by Git OBS Bridge
commit 548eb707b5
3 changed files with 81 additions and 0 deletions

View File

@ -0,0 +1,75 @@
https://gitlab.gnome.org/GNOME/libxslt/-/issues/123
From c45ed81aeb50a7fb6799a166270d6ccc9ffa63b2 Mon Sep 17 00:00:00 2001
From: Nick Wellnhofer <wellnhofer@aevum.de>
Date: Thu, 19 Sep 2024 21:49:46 +0200
Subject: [PATCH] variables: Fix non-deterministic generated IDs
Evaluate global variables in deterministic order. Otherwise, generated
IDs could be non-deterministic if generate-id() is called.
Fixes #123.
---
libxslt/variables.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/libxslt/variables.c b/libxslt/variables.c
index 93cb0747..09069aa3 100644
--- a/libxslt/variables.c
+++ b/libxslt/variables.c
@@ -1259,13 +1259,6 @@ error:
return(result);
}
-static void
-xsltEvalGlobalVariableWrapper(void *payload, void *data,
- const xmlChar *name ATTRIBUTE_UNUSED) {
- xsltEvalGlobalVariable((xsltStackElemPtr) payload,
- (xsltTransformContextPtr) data);
-}
-
/**
* xsltEvalGlobalVariables:
* @ctxt: the XSLT transformation context
@@ -1278,6 +1271,7 @@ xsltEvalGlobalVariableWrapper(void *payload, void *data,
int
xsltEvalGlobalVariables(xsltTransformContextPtr ctxt) {
xsltStackElemPtr elem;
+ xsltStackElemPtr head = NULL;
xsltStylesheetPtr style;
if ((ctxt == NULL) || (ctxt->document == NULL))
@@ -1321,6 +1315,8 @@ xsltEvalGlobalVariables(xsltTransformContextPtr ctxt) {
xsltFreeStackElem(def);
return(-1);
}
+ def->next = head;
+ head = def;
} else if ((elem->comp != NULL) &&
(elem->comp->type == XSLT_FUNC_VARIABLE)) {
/*
@@ -1343,9 +1339,19 @@ xsltEvalGlobalVariables(xsltTransformContextPtr ctxt) {
}
/*
- * This part does the actual evaluation
+ * This part does the actual evaluation. Note that scanning the hash
+ * table would result in a non-deterministic order, leading to
+ * non-deterministic generated IDs.
*/
- xmlHashScan(ctxt->globalVars, xsltEvalGlobalVariableWrapper, ctxt);
+ elem = head;
+ while (elem != NULL) {
+ xsltStackElemPtr next;
+
+ xsltEvalGlobalVariable(elem, ctxt);
+ next = elem->next;
+ elem->next = NULL;
+ elem = next;
+ }
return(0);
}
--
GitLab

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Fri Sep 20 14:27:35 UTC 2024 - Bernhard Wiedemann <bwiedemann@suse.com>
- Add libxslt-reproducible.patch to make xml output deterministic (boo#1062303)
-------------------------------------------------------------------
Fri May 24 16:14:39 UTC 2024 - Christophe Marin <christophe@krop.fr>

View File

@ -44,6 +44,7 @@ Patch1: libxslt-random-seed.patch
Patch2: gcc14-runtest-no-const.patch
# PATCH-FIX-UPSTREAM -- 0001-tests-Fix-build-with-older-libxml2.patch
Patch3: 0001-tests-Fix-build-with-older-libxml2.patch
Patch4: libxslt-reproducible.patch
#
### SUSE patches starts on 1000
# PATCH-FIX-SUSE