unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
blob f9bdcf60aaae2cd74e48f82a3f68081db6cabdae 1773 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
Fix CVE-2018-10756:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-10756

Patch copied from Fedora:

https://src.fedoraproject.org/rpms/transmission/blob/master/f/2123adf8e5e1c2b48791f9d22fc8c747e974180e.patch

--- a/libtransmission/variant.c	2018-05-01 12:21:08.000000000 -0500
+++ b/libtransmission/variant.c	2020-05-18 10:21:27.554214128 -0500
@@ -820,7 +820,7 @@
 struct SaveNode
 {
   const tr_variant * v;
-  tr_variant sorted;
+  tr_variant* sorted;
   size_t childIndex;
   bool isVisited;
 };
@@ -849,26 +849,33 @@
 
       qsort (tmp, n, sizeof (struct KeyIndex), compareKeyIndex);
 
-      tr_variantInitDict (&node->sorted, n);
+      node->sorted = tr_new(tr_variant, 1);
+      tr_variantInitDict (node->sorted, n);
       for (i=0; i<n; ++i)
-        node->sorted.val.l.vals[i] = *tmp[i].val;
+        node->sorted->val.l.vals[i] = *tmp[i].val;
       node->sorted.val.l.count = n;
 
       tr_free (tmp);
 
-      node->v = &node->sorted;
+      v = node->sorted;
     }
   else
     {
-      node->v = v;
+      node->sorted = NULL;
     }
+    
+    node->v = v;
 }
 
 static void
 nodeDestruct (struct SaveNode * node)
 {
-  if (node->v == &node->sorted)
-    tr_free (node->sorted.val.l.vals);
+    //TR_ASSERT(node != NULL);
+    if (node->sorted != NULL)
+    {
+        tr_free(node->sorted->val.l.vals);
+        tr_free(node->sorted);    
+    }
 }
 
 /**
--- a/libtransmission/variant.c	2020-05-18 10:21:49.000000000 -0500
+++ b/libtransmission/variant.c	2020-05-18 10:24:34.673648865 -0500
@@ -853,7 +853,7 @@
       tr_variantInitDict (node->sorted, n);
       for (i=0; i<n; ++i)
         node->sorted->val.l.vals[i] = *tmp[i].val;
-      node->sorted.val.l.count = n;
+      node->sorted->val.l.count = n;
 
       tr_free (tmp);
 


debug log:

solving f9bdcf60aa ...
found f9bdcf60aa in https://git.savannah.gnu.org/cgit/guix.git

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).