gnu: gegl: Fix CVE-2012-4433.
[jackhill/guix/guix.git] / gnu / packages / patches / doc++-segfault-fix.patch
1 Adapted from https://sources.debian.net/data/main/d/doc%2B%2B/3.4.10-3.4/debian/patches/segfault_fix.patch
2
3 --- doc++-3.4.10/src/McDArray.h 2000-07-30 12:40:48.000000000 +0200
4 +++ doc++-3.4.10/src/McDArray.h 2005-05-10 15:02:06.000000000 +0200
5 @@ -80,9 +80,14 @@
6 McDArray(const McDArray& old) : memFactor(old.memFactor),
7 thesize(old.thesize), themax(old.themax)
8 {
9 - data = (T*)malloc(themax * sizeof(T));
10 - if(thesize)
11 - memcpy(data, old.data, thesize * sizeof(T));
12 + if (themax)
13 + {
14 + data = (T*)malloc(themax * sizeof(T));
15 + if(thesize)
16 + memcpy(data, old.data, thesize * sizeof(T));
17 + }
18 + else
19 + data = 0;
20 assert(isConsistent());
21 }
22
23 --- doc++-3.4.10/src/McDirectory.cc 2000-03-14 22:17:36.000000000 +0100
24 +++ doc++-3.4.10/src/McDirectory.cc 2005-05-10 15:02:18.000000000 +0200
25 @@ -23,12 +23,13 @@
26 */
27
28 #include "McDirectory.h"
29 -#include "McSorter.h"
30 #include "McString.h"
31 #include "doc.h"
32
33 #include <stdio.h>
34
35 +#include <algorithm>
36 +
37 #ifdef WIN32
38 #include <windows.h>
39 #ifdef __BORLANDC__
40 @@ -62,7 +63,7 @@
41 FindClose(searchHandle);
42 StringCompare comp;
43 if(list.size())
44 - sort((char **)list, list.size(), comp, 0);
45 + std::sort((char **)list, (char **)list + list.size(), comp);
46 return 0;
47 }
48
49 @@ -107,7 +108,7 @@
50 closedir(dir);
51 StringCompare comp;
52 if(list.size())
53 - sort((char **)list, list.size(), comp, 0);
54 + std::sort((char **)list, (char **)list + list.size(), comp);
55 return list.size();
56 }
57
58 --- doc++-3.4.10/src/McDirectory.h 2000-06-28 21:54:58.000000000 +0200
59 +++ doc++-3.4.10/src/McDirectory.h 2005-05-10 15:02:18.000000000 +0200
60 @@ -59,9 +59,9 @@
61 class StringCompare
62 {
63 public:
64 - int operator()(const char *t1, const char *t2)
65 + bool operator()(const char *t1, const char *t2)
66 {
67 - return strcmp(t1, t2);
68 + return strcmp(t1, t2) < 0;
69 }
70 };
71 };
72 --- doc++-3.4.10/src/html.cc 2001-02-17 07:34:49.000000000 +0100
73 +++ doc++-3.4.10/src/html.cc 2005-05-10 15:02:18.000000000 +0200
74 @@ -38,9 +38,10 @@
75 #include <sys/stat.h>
76 #include <sys/types.h>
77
78 +#include <algorithm>
79 +
80 #include "McDirectory.h"
81 #include "McHashTable.h"
82 -#include "McSorter.h"
83 #include "classgraph.h"
84 #include "doc.h"
85 #include "gifs.h"
86 @@ -314,9 +315,11 @@
87 virtual void writeMember(Entry *e, bool links, bool withSub = true);
88 class EntryCompare {
89 public:
90 - int operator()(const MemberWriterListEntry& l1, const MemberWriterListEntry& l2)
91 + bool operator()(const MemberWriterListEntry& l1, const MemberWriterListEntry& l2)
92 {
93 - return strcmp(l1.entry->fullName.c_str(), l2.entry->fullName.c_str());
94 + const char *s1 = l1.entry->fullName.c_str();
95 + const char *s2 = l2.entry->fullName.c_str();
96 + return strcmp(s1, s2) < 0;
97 }
98 };
99 public:
100 @@ -324,7 +327,7 @@
101 {
102 EntryCompare comp;
103 if(list.size())
104 - ::sort((MemberWriterListEntry *)list, list.size(), comp, 0);
105 + std::sort((MemberWriterListEntry *)list, (MemberWriterListEntry *)list + list.size(), comp);
106 }
107 virtual void startList(FILE *f, char *heading, bool withLinks);
108 virtual void addMember(Entry *e, bool links, bool withSub = true)
109 @@ -376,7 +379,7 @@
110 int lp;
111
112 if(list.size() > 1)
113 - ::sort((TOCListEntry *)list, list.size(), comp, 0);
114 + std::sort((TOCListEntry *)list, (TOCListEntry *)list + list.size(), comp);
115
116 // Sort subsections
117 for(lp = 0; lp < list.size(); lp++)
118 @@ -385,9 +388,9 @@
119 }
120 class EntryCompare {
121 public:
122 - int operator()(TOCListEntry& l1, TOCListEntry& l2)
123 + bool operator()(const TOCListEntry& l1, const TOCListEntry& l2)
124 {
125 - return strcmp(l1.name, l2.name);
126 + return strcmp(l1.name, l2.name) < 0;
127 }
128 };
129 void addEntry(Entry *entry, TOClist *tl);
130 @@ -487,7 +490,7 @@
131
132 for(i = 0; i < list.size(); i++)
133 if(list[i].tl)
134 - free(list[i].tl);
135 + delete list[i].tl;
136 }
137
138 class HIERlist;
139 @@ -509,7 +512,7 @@
140 int i;
141
142 if(list.size() > 1)
143 - ::sort((HIERListEntry *)list, list.size(), comp, 0);
144 + std::sort((HIERListEntry *)list, (HIERListEntry *)list + list.size(), comp);
145
146 // Sort subentries
147 for(i = 0; i < list.size(); i++)
148 @@ -519,9 +522,9 @@
149 class EntryCompare
150 {
151 public:
152 - int operator()(HIERListEntry& l1, HIERListEntry& l2)
153 + bool operator()(const HIERListEntry& l1, const HIERListEntry& l2)
154 {
155 - return strcmp(l1.name, l2.name);
156 + return strcmp(l1.name, l2.name) < 0;
157 }
158 };
159 void addEntry(Entry *entry, HIERlist *hl);
160 --- doc++-3.4.10/src/readfiles.ll 2001-11-25 18:04:48.000000000 +0100
161 +++ doc++-3.4.10/src/readfiles.ll 2005-05-10 15:02:18.000000000 +0200
162 @@ -28,7 +28,6 @@
163 #include <sys/types.h>
164
165 #include "McDirectory.h"
166 -#include "McSorter.h"
167 #include "McString.h"
168 #include "doc.h"
169 #include "nametable.h"