Compare commits
5 commits
rawhide
...
private-jh
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0ea3f426d | ||
|
|
13f7512c39 | ||
|
|
e221ff1adc | ||
|
|
e170e2ecfe | ||
|
|
f6d8dc8e94 |
9 changed files with 42 additions and 474 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -508,3 +508,5 @@ thunderbird-langpacks-3.1.2-20100803.tar.bz2
|
|||
/thunderbird-langpacks-128.12.0esr-20250630.tar.xz
|
||||
/thunderbird-128.13.0esr.source.tar.xz
|
||||
/thunderbird-langpacks-128.13.0esr-20250723.tar.xz
|
||||
/thunderbird-140.1.0esr.source.tar.xz
|
||||
/thunderbird-langpacks-140.1.0esr-20250731.tar.xz
|
||||
|
|
|
|||
|
|
@ -1,44 +0,0 @@
|
|||
diff --git a/gfx/wr/swgl/src/vector_type.h b/gfx/wr/swgl/src/vector_type.h
|
||||
--- a/gfx/wr/swgl/src/vector_type.h
|
||||
+++ b/gfx/wr/swgl/src/vector_type.h
|
||||
@@ -238,27 +238,27 @@
|
||||
VectorType& operator%=(int x) {
|
||||
data %= x;
|
||||
return *this;
|
||||
}
|
||||
|
||||
- VectorType<mask_type, N> operator==(VectorType x) const {
|
||||
- return VectorType<mask_type, N>::wrap(data == x.data);
|
||||
+ VectorType<mask_index, N> operator==(VectorType x) const {
|
||||
+ return VectorType<mask_index, N>::wrap(data == x.data);
|
||||
}
|
||||
- VectorType<mask_type, N> operator!=(VectorType x) const {
|
||||
- return VectorType<mask_type, N>::wrap(data != x.data);
|
||||
+ VectorType<mask_index, N> operator!=(VectorType x) const {
|
||||
+ return VectorType<mask_index, N>::wrap(data != x.data);
|
||||
}
|
||||
- VectorType<mask_type, N> operator<(VectorType x) const {
|
||||
- return VectorType<mask_type, N>::wrap(data < x.data);
|
||||
+ VectorType<mask_index, N> operator<(VectorType x) const {
|
||||
+ return VectorType<mask_index, N>::wrap(data < x.data);
|
||||
}
|
||||
- VectorType<mask_type, N> operator>(VectorType x) const {
|
||||
- return VectorType<mask_type, N>::wrap(data > x.data);
|
||||
+ VectorType<mask_index, N> operator>(VectorType x) const {
|
||||
+ return VectorType<mask_index, N>::wrap(data > x.data);
|
||||
}
|
||||
- VectorType<mask_type, N> operator<=(VectorType x) const {
|
||||
- return VectorType<mask_type, N>::wrap(data <= x.data);
|
||||
+ VectorType<mask_index, N> operator<=(VectorType x) const {
|
||||
+ return VectorType<mask_index, N>::wrap(data <= x.data);
|
||||
}
|
||||
- VectorType<mask_type, N> operator>=(VectorType x) const {
|
||||
- return VectorType<mask_type, N>::wrap(data >= x.data);
|
||||
+ VectorType<mask_index, N> operator>=(VectorType x) const {
|
||||
+ return VectorType<mask_index, N>::wrap(data >= x.data);
|
||||
}
|
||||
|
||||
VectorType operator!() const { return wrap(!data); }
|
||||
VectorType operator&&(VectorType x) const { return wrap(data & x.data); }
|
||||
VectorType operator||(VectorType x) const { return wrap(data | x.data); }
|
||||
|
||||
|
|
@ -1,276 +0,0 @@
|
|||
diff --git a/gfx/wr/swgl/src/vector_type.h b/gfx/wr/swgl/src/vector_type.h
|
||||
--- a/gfx/wr/swgl/src/vector_type.h
|
||||
+++ b/gfx/wr/swgl/src/vector_type.h
|
||||
@@ -92,10 +92,19 @@
|
||||
template <>
|
||||
struct VectorMask<float> {
|
||||
typedef int type;
|
||||
};
|
||||
|
||||
+# ifdef __has_builtin
|
||||
+# if __has_builtin(__builtin_convertvector)
|
||||
+# define HAS_BUILTIN_CONVERTVECTOR
|
||||
+# endif
|
||||
+# if __has_builtin(__builtin_shufflevector)
|
||||
+# define HAS_BUILTIN_SHUFFLEVECTOR
|
||||
+# endif
|
||||
+# endif
|
||||
+
|
||||
template <typename T, int N>
|
||||
struct VectorType {
|
||||
enum { SIZE = N };
|
||||
|
||||
typedef T data_type __attribute__((vector_size(sizeof(T) * N)));
|
||||
@@ -134,10 +143,17 @@
|
||||
}
|
||||
|
||||
T& operator[](size_t i) { return elements[i]; }
|
||||
T operator[](size_t i) const { return elements[i]; }
|
||||
|
||||
+# ifdef HAS_BUILTIN_CONVERTVECTOR
|
||||
+ template <typename U, int M>
|
||||
+ operator VectorType<U, M>() const {
|
||||
+ return VectorType<U, M>::wrap(
|
||||
+ __builtin_convertvector(data, typename VectorType<U, M>::data_type));
|
||||
+ }
|
||||
+# else
|
||||
template <typename U>
|
||||
operator VectorType<U, 2>() const {
|
||||
return VectorType<U, 2>::wrap(
|
||||
(typename VectorType<U, N>::data_type){U(x), U(y)});
|
||||
}
|
||||
@@ -171,10 +187,11 @@
|
||||
U(elements[13]),
|
||||
U(elements[14]),
|
||||
U(elements[15]),
|
||||
});
|
||||
}
|
||||
+# endif
|
||||
|
||||
VectorType operator-() const { return wrap(-data); }
|
||||
VectorType operator~() const { return wrap(~data); }
|
||||
|
||||
VectorType operator&(VectorType x) const { return wrap(data & x.data); }
|
||||
@@ -266,46 +283,10 @@
|
||||
VectorType& operator=(VectorType x) {
|
||||
data = x.data;
|
||||
return *this;
|
||||
}
|
||||
|
||||
- VectorType<T, 4> shuffle(VectorType b, mask_index x, mask_index y,
|
||||
- mask_index z, mask_index w) const {
|
||||
- return VectorType<T, 4>::wrap(__builtin_shuffle(
|
||||
- data, b.data, (typename VectorType<T, 4>::mask_type){x, y, z, w}));
|
||||
- }
|
||||
- VectorType<T, 8> shuffle(VectorType b, mask_index x, mask_index y,
|
||||
- mask_index z, mask_index w, mask_index s,
|
||||
- mask_index t, mask_index u, mask_index v) const {
|
||||
- return VectorType<T, 8>::wrap(__builtin_shuffle(
|
||||
- data, b.data,
|
||||
- (typename VectorType<T, 8>::mask_type){x, y, z, w, s, t, u, v}));
|
||||
- }
|
||||
- VectorType<T, 16> shuffle(VectorType b, mask_index x, mask_index y,
|
||||
- mask_index z, mask_index w, mask_index s,
|
||||
- mask_index t, mask_index u, mask_index v,
|
||||
- mask_index i, mask_index j, mask_index k,
|
||||
- mask_index l, mask_index m, mask_index n,
|
||||
- mask_index o, mask_index p) const {
|
||||
- return VectorType<T, 16>::wrap(
|
||||
- __builtin_shuffle(data, b.data,
|
||||
- (typename VectorType<T, 16>::mask_type){
|
||||
- x, y, z, w, s, t, u, v, i, j, k, l, m, n, o, p}));
|
||||
- }
|
||||
-
|
||||
- VectorType<T, 4> swizzle(mask_index x, mask_index y, mask_index z,
|
||||
- mask_index w) const {
|
||||
- return VectorType<T, 4>::wrap(__builtin_shuffle(
|
||||
- data, (typename VectorType<T, 4>::mask_type){x, y, z, w}));
|
||||
- }
|
||||
- VectorType<T, 8> swizzle(mask_index x, mask_index y, mask_index z,
|
||||
- mask_index w, mask_index s, mask_index t,
|
||||
- mask_index u, mask_index v) const {
|
||||
- return VectorType<T, 8>::wrap(__builtin_shuffle(
|
||||
- data, (typename VectorType<T, 8>::mask_type){x, y, z, w, s, t, u, v}));
|
||||
- }
|
||||
-
|
||||
SI VectorType wrap(half_type low, half_type high) {
|
||||
VectorType v;
|
||||
v.low_half = low;
|
||||
v.high_half = high;
|
||||
return v;
|
||||
@@ -313,57 +294,90 @@
|
||||
|
||||
VectorType<T, N * 2> combine(VectorType high) const {
|
||||
return VectorType<T, N * 2>::wrap(data, high.data);
|
||||
}
|
||||
|
||||
-# define xxxx swizzle(0, 0, 0, 0)
|
||||
-# define yyyy swizzle(1, 1, 1, 1)
|
||||
-# define zzzz swizzle(2, 2, 2, 2)
|
||||
-# define wwww swizzle(3, 3, 3, 3)
|
||||
-# define xxyy swizzle(0, 0, 1, 1)
|
||||
-# define xxzz swizzle(0, 0, 2, 2)
|
||||
-# define yyww swizzle(1, 1, 3, 3)
|
||||
-# define zzww swizzle(2, 2, 3, 3)
|
||||
-# define xyxy swizzle(0, 1, 0, 1)
|
||||
-# define xzxz swizzle(0, 2, 0, 2)
|
||||
-# define ywyw swizzle(1, 3, 1, 3)
|
||||
-# define zwzw swizzle(2, 3, 2, 3)
|
||||
-# define zwxy swizzle(2, 3, 0, 1)
|
||||
-# define zyxw swizzle(2, 1, 0, 3)
|
||||
-# define xxyz swizzle(0, 0, 1, 2)
|
||||
-# define xyyz swizzle(0, 1, 1, 2)
|
||||
-# define xyzz swizzle(0, 1, 2, 2)
|
||||
-# define xzyw swizzle(0, 2, 1, 3)
|
||||
-# define yzwx swizzle(1, 2, 3, 0)
|
||||
-# define wxyz swizzle(3, 0, 1, 2)
|
||||
-# define wzyx swizzle(3, 2, 1, 0)
|
||||
-# define xxxxyyyy XXXXYYYY()
|
||||
- VectorType<T, 8> XXXXYYYY() const {
|
||||
- return swizzle(0, 0, 0, 0).combine(swizzle(1, 1, 1, 1));
|
||||
+# ifdef HAS_BUILTIN_SHUFFLEVECTOR
|
||||
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
|
||||
+ VectorType<T, M> shuffle(VectorType b) const {
|
||||
+ return VectorType<T, M>::wrap(
|
||||
+ __builtin_shufflevector(data, b.data, INDEXES...));
|
||||
+ }
|
||||
+
|
||||
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
|
||||
+ VectorType<T, M> swizzle() const {
|
||||
+ return VectorType<T, M>::wrap(
|
||||
+ __builtin_shufflevector(data, data, INDEXES...));
|
||||
+ }
|
||||
+# else
|
||||
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
|
||||
+ VectorType<T, M> shuffle(VectorType<T, M> b) const {
|
||||
+ return VectorType<T, M>::wrap(__builtin_shuffle(
|
||||
+ data, b.data, (typename VectorType<T, M>::mask_type){INDEXES...}));
|
||||
+ }
|
||||
+
|
||||
+ template <mask_index A, mask_index B, mask_index C, mask_index D,
|
||||
+ mask_index E, mask_index F, mask_index G, mask_index H>
|
||||
+ VectorType<T, 8> shuffle(VectorType<T, 4> b) const {
|
||||
+ return shuffle<A, B, C, D>(b).combine(shuffle<E, F, G, H>(b));
|
||||
+ }
|
||||
+
|
||||
+ template <mask_index A, mask_index B, mask_index C, mask_index D,
|
||||
+ mask_index E, mask_index F, mask_index G, mask_index H,
|
||||
+ mask_index I, mask_index J, mask_index K, mask_index L,
|
||||
+ mask_index W, mask_index X, mask_index Y, mask_index Z>
|
||||
+ VectorType<T, 16> shuffle(VectorType<T, 4> b) const {
|
||||
+ return shuffle<A, B, C, D, E, F, G, H>(b).combine(
|
||||
+ shuffle<I, J, K, L, W, X, Y, Z>(b));
|
||||
}
|
||||
-# define zzzzwwww ZZZZWWWW()
|
||||
- VectorType<T, 8> ZZZZWWWW() const {
|
||||
- return swizzle(2, 2, 2, 2).combine(swizzle(3, 3, 3, 3));
|
||||
+
|
||||
+ template <mask_index A, mask_index B, mask_index C, mask_index D,
|
||||
+ mask_index E, mask_index F, mask_index G, mask_index H,
|
||||
+ mask_index I, mask_index J, mask_index K, mask_index L,
|
||||
+ mask_index W, mask_index X, mask_index Y, mask_index Z>
|
||||
+ VectorType<T, 16> shuffle(VectorType<T, 8> b) const {
|
||||
+ return shuffle<A, B, C, D, E, F, G, H>(b).combine(
|
||||
+ shuffle<I, J, K, L, W, X, Y, Z>(b));
|
||||
}
|
||||
-# define xyzwxyzw XYZWXYZW()
|
||||
- VectorType<T, 8> XYZWXYZW() const { return combine(*this); }
|
||||
-# define xyxyxyxy XYXYXYXY()
|
||||
- VectorType<T, 8> XYXYXYXY() const {
|
||||
- return swizzle(0, 1, 0, 1).combine(swizzle(0, 1, 0, 1));
|
||||
+
|
||||
+ template <mask_index... INDEXES, int M = sizeof...(INDEXES)>
|
||||
+ VectorType<T, M> swizzle() const {
|
||||
+ return shuffle<INDEXES...>(*this);
|
||||
}
|
||||
-# define zwzwzwzw ZWZWZWZW()
|
||||
- VectorType<T, 8> ZWZWZWZW() const {
|
||||
- return swizzle(2, 3, 2, 3).combine(swizzle(2, 3, 2, 3));
|
||||
- }
|
||||
-# define xxyyzzww XXYYZZWW()
|
||||
- VectorType<T, 8> XXYYZZWW() const {
|
||||
- return swizzle(0, 0, 1, 1).combine(swizzle(2, 2, 3, 3));
|
||||
- }
|
||||
-# define xxxxyyyyzzzzwwww XXXXYYYYZZZZWWWW()
|
||||
- VectorType<T, 16> XXXXYYYYZZZZWWWW() {
|
||||
- return XXXXYYYY().combine(ZZZZWWWW());
|
||||
- }
|
||||
+# endif
|
||||
+
|
||||
+# define SWIZZLE(...) template swizzle<__VA_ARGS__>()
|
||||
+
|
||||
+# define xxxx SWIZZLE(0, 0, 0, 0)
|
||||
+# define yyyy SWIZZLE(1, 1, 1, 1)
|
||||
+# define zzzz SWIZZLE(2, 2, 2, 2)
|
||||
+# define wwww SWIZZLE(3, 3, 3, 3)
|
||||
+# define xxyy SWIZZLE(0, 0, 1, 1)
|
||||
+# define xxzz SWIZZLE(0, 0, 2, 2)
|
||||
+# define yyww SWIZZLE(1, 1, 3, 3)
|
||||
+# define zzww SWIZZLE(2, 2, 3, 3)
|
||||
+# define xyxy SWIZZLE(0, 1, 0, 1)
|
||||
+# define xzxz SWIZZLE(0, 2, 0, 2)
|
||||
+# define ywyw SWIZZLE(1, 3, 1, 3)
|
||||
+# define zwzw SWIZZLE(2, 3, 2, 3)
|
||||
+# define zwxy SWIZZLE(2, 3, 0, 1)
|
||||
+# define zyxw SWIZZLE(2, 1, 0, 3)
|
||||
+# define xxyz SWIZZLE(0, 0, 1, 2)
|
||||
+# define xyyz SWIZZLE(0, 1, 1, 2)
|
||||
+# define xyzz SWIZZLE(0, 1, 2, 2)
|
||||
+# define xzyw SWIZZLE(0, 2, 1, 3)
|
||||
+# define yzwx SWIZZLE(1, 2, 3, 0)
|
||||
+# define wxyz SWIZZLE(3, 0, 1, 2)
|
||||
+# define wzyx SWIZZLE(3, 2, 1, 0)
|
||||
+# define xxxxyyyy SWIZZLE(0, 0, 0, 0, 1, 1, 1, 1)
|
||||
+# define zzzzwwww SWIZZLE(2, 2, 2, 2, 3, 3, 3, 3)
|
||||
+# define xyzwxyzw SWIZZLE(0, 1, 2, 3, 0, 1, 2, 3)
|
||||
+# define xyxyxyxy SWIZZLE(0, 1, 0, 1, 0, 1, 0, 1)
|
||||
+# define zwzwzwzw SWIZZLE(2, 3, 2, 3, 2, 3, 2, 3)
|
||||
+# define xxyyzzww SWIZZLE(0, 0, 1, 1, 2, 2, 3, 3)
|
||||
+# define xxxxyyyyzzzzwwww \
|
||||
+ SWIZZLE(0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3)
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct VectorType<T, 2> {
|
||||
typedef T data_type __attribute__((vector_size(sizeof(T) * 2)));
|
||||
@@ -386,11 +400,11 @@
|
||||
VectorType operator|(VectorType x) const { return wrap(data | x.data); }
|
||||
VectorType operator|(T x) const { return wrap(data | x); }
|
||||
};
|
||||
|
||||
# define CONVERT(vector, type) ((type)(vector))
|
||||
-# define SHUFFLE(a, b, ...) a.shuffle(b, __VA_ARGS__)
|
||||
+# define SHUFFLE(a, b, ...) ((a).template shuffle<__VA_ARGS__>(b))
|
||||
|
||||
template <typename T, int N>
|
||||
SI VectorType<T, N * 2> combine(VectorType<T, N> a, VectorType<T, N> b) {
|
||||
return VectorType<T, N * 2>::wrap(a.data, b.data);
|
||||
}
|
||||
@@ -476,26 +490,19 @@
|
||||
template <typename T>
|
||||
SI VectorType<T, 8> zip2High(VectorType<T, 8> a, VectorType<T, 8> b) {
|
||||
return SHUFFLE(a, b, 4, 5, 12, 13, 6, 7, 14, 15);
|
||||
}
|
||||
|
||||
-#ifdef __clang__
|
||||
template <typename T>
|
||||
SI VectorType<T, 8> zip(VectorType<T, 4> a, VectorType<T, 4> b) {
|
||||
return SHUFFLE(a, b, 0, 4, 1, 5, 2, 6, 3, 7);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
SI VectorType<T, 16> zip(VectorType<T, 8> a, VectorType<T, 8> b) {
|
||||
return SHUFFLE(a, b, 0, 8, 1, 9, 2, 10, 3, 11, 4, 12, 5, 13, 6, 14, 7, 15);
|
||||
}
|
||||
-#else
|
||||
-template <typename T, int N>
|
||||
-SI VectorType<T, N * 2> zip(VectorType<T, N> a, VectorType<T, N> b) {
|
||||
- return combine(zipLow(a, b), zipHigh(a, b));
|
||||
-}
|
||||
-#endif
|
||||
|
||||
template <typename T>
|
||||
struct Unaligned {
|
||||
template <typename P>
|
||||
SI T load(const P* p) {
|
||||
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
diff -up thunderbird-91.7.0/parser/expat/lib/xmltok.c.expat-CVE-2022-25235 thunderbird-91.7.0/parser/expat/lib/xmltok.c
|
||||
--- thunderbird-91.7.0/parser/expat/lib/xmltok.c.expat-CVE-2022-25235 2022-03-02 17:57:38.364361168 +0100
|
||||
+++ thunderbird-91.7.0/parser/expat/lib/xmltok.c 2022-03-02 17:58:22.235512399 +0100
|
||||
@@ -65,13 +65,6 @@
|
||||
+ ((((byte)[2]) >> 5) & 1)] \
|
||||
& (1u << (((byte)[2]) & 0x1F)))
|
||||
|
||||
-#define UTF8_GET_NAMING(pages, p, n) \
|
||||
- ((n) == 2 \
|
||||
- ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \
|
||||
- : ((n) == 3 \
|
||||
- ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \
|
||||
- : 0))
|
||||
-
|
||||
/* Detection of invalid UTF-8 sequences is based on Table 3.1B
|
||||
of Unicode 3.2: http://www.unicode.org/unicode/reports/tr28/
|
||||
with the additional restriction of not allowing the Unicode
|
||||
diff -up thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c.expat-CVE-2022-25235 thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c
|
||||
--- thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c.expat-CVE-2022-25235 2022-03-02 17:57:38.365361172 +0100
|
||||
+++ thunderbird-91.7.0/parser/expat/lib/xmltok_impl.c 2022-03-02 18:04:51.240853247 +0100
|
||||
@@ -34,7 +34,7 @@
|
||||
case BT_LEAD ## n: \
|
||||
if (end - ptr < n) \
|
||||
return XML_TOK_PARTIAL_CHAR; \
|
||||
- if (!IS_NAME_CHAR(enc, ptr, n)) { \
|
||||
+ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NAME_CHAR(enc, ptr, n)) { \
|
||||
*nextTokPtr = ptr; \
|
||||
return XML_TOK_INVALID; \
|
||||
} \
|
||||
@@ -62,7 +62,7 @@
|
||||
case BT_LEAD ## n: \
|
||||
if (end - ptr < n) \
|
||||
return XML_TOK_PARTIAL_CHAR; \
|
||||
- if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \
|
||||
+ if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NMSTRT_CHAR(enc, ptr, n)) { \
|
||||
*nextTokPtr = ptr; \
|
||||
return XML_TOK_INVALID; \
|
||||
} \
|
||||
@@ -1090,6 +1090,10 @@ PREFIX(prologTok)(const ENCODING *enc, c
|
||||
case BT_LEAD ## n: \
|
||||
if (end - ptr < n) \
|
||||
return XML_TOK_PARTIAL_CHAR; \
|
||||
+ if (IS_INVALID_CHAR(enc, ptr, n)) { \
|
||||
+ *nextTokPtr = ptr; \
|
||||
+ return XML_TOK_INVALID; \
|
||||
+ } \
|
||||
if (IS_NMSTRT_CHAR(enc, ptr, n)) { \
|
||||
ptr += n; \
|
||||
tok = XML_TOK_NAME; \
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
diff -up thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25236 thunderbird-91.7.0/parser/expat/lib/xmlparse.c
|
||||
--- thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25236 2022-03-02 18:08:40.085642028 +0100
|
||||
+++ thunderbird-91.7.0/parser/expat/lib/xmlparse.c 2022-03-02 18:13:31.838667958 +0100
|
||||
@@ -700,8 +700,7 @@ XML_ParserCreate(const XML_Char *encodin
|
||||
XML_Parser XMLCALL
|
||||
XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep)
|
||||
{
|
||||
- XML_Char tmp[2];
|
||||
- *tmp = nsSep;
|
||||
+ XML_Char tmp[2] = {nsSep, 0};
|
||||
return XML_ParserCreate_MM(encodingName, NULL, tmp);
|
||||
}
|
||||
#endif
|
||||
@@ -1276,8 +1275,7 @@ XML_ExternalEntityParserCreate(XML_Parse
|
||||
would be otherwise.
|
||||
*/
|
||||
if (ns) {
|
||||
- XML_Char tmp[2];
|
||||
- *tmp = namespaceSeparator;
|
||||
+ XML_Char tmp[2] = {parser->m_namespaceSeparator, 0};
|
||||
parser = parserCreate(encodingName, &parser->m_mem, tmp, newDtd);
|
||||
}
|
||||
else {
|
||||
@@ -3667,6 +3665,16 @@ addBinding(XML_Parser parser, PREFIX *pr
|
||||
if (!mustBeXML && isXMLNS
|
||||
&& (len > xmlnsLen || uri[len] != xmlnsNamespace[len]))
|
||||
isXMLNS = XML_FALSE;
|
||||
+ // NOTE: While Expat does not validate namespace URIs against RFC 3986,
|
||||
+ // we have to at least make sure that the XML processor on top of
|
||||
+ // Expat (that is splitting tag names by namespace separator into
|
||||
+ // 2- or 3-tuples (uri-local or uri-local-prefix)) cannot be confused
|
||||
+ // by an attacker putting additional namespace separator characters
|
||||
+ // into namespace declarations. That would be ambiguous and not to
|
||||
+ // be expected.
|
||||
+ if (parser->m_ns && (uri[len] == parser->m_namespaceSeparator)) {
|
||||
+ return XML_ERROR_SYNTAX;
|
||||
+ }
|
||||
}
|
||||
isXML = isXML && len == xmlLen;
|
||||
isXMLNS = isXMLNS && len == xmlnsLen;
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
diff -up thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25315 thunderbird-91.7.0/parser/expat/lib/xmlparse.c
|
||||
--- thunderbird-91.7.0/parser/expat/lib/xmlparse.c.expat-CVE-2022-25315 2022-03-02 18:17:50.966583254 +0100
|
||||
+++ thunderbird-91.7.0/parser/expat/lib/xmlparse.c 2022-03-02 18:19:27.636924735 +0100
|
||||
@@ -2479,6 +2479,7 @@ storeRawNames(XML_Parser parser)
|
||||
while (tag) {
|
||||
int bufSize;
|
||||
int nameLen = sizeof(XML_Char) * (tag->name.strLen + 1);
|
||||
+ size_t rawNameLen;
|
||||
char *rawNameBuf = tag->buf + nameLen;
|
||||
/* Stop if already stored. Since tagStack is a stack, we can stop
|
||||
at the first entry that has already been copied; everything
|
||||
@@ -2490,7 +2491,11 @@ storeRawNames(XML_Parser parser)
|
||||
/* For re-use purposes we need to ensure that the
|
||||
size of tag->buf is a multiple of sizeof(XML_Char).
|
||||
*/
|
||||
- bufSize = nameLen + ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
|
||||
+ rawNameLen = ROUND_UP(tag->rawNameLength, sizeof(XML_Char));
|
||||
+ /* Detect and prevent integer overflow. */
|
||||
+ if (rawNameLen > (size_t)INT_MAX - nameLen)
|
||||
+ return XML_FALSE;
|
||||
+ bufSize = nameLen + (int)rawNameLen;
|
||||
if (bufSize > tag->bufEnd - tag->buf) {
|
||||
char *temp = (char *)REALLOC(tag->buf, bufSize);
|
||||
if (temp == NULL)
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
||||
--- firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2023-07-10 21:08:53.000000000 +0200
|
||||
+++ firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp 2023-07-17 10:33:23.443355156 +0200
|
||||
diff -up firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp
|
||||
--- firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.mozilla-bmo1170092 2025-06-02 15:26:44.000000000 +0200
|
||||
+++ firefox-140.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2025-06-04 13:24:00.344728697 +0200
|
||||
@@ -263,8 +263,20 @@ nsresult nsReadConfig::openAndEvaluateJS
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
|
|
@ -23,10 +23,10 @@ diff -up firefox-115.0.2/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092
|
|||
} else {
|
||||
nsAutoCString location("resource://gre/defaults/autoconfig/");
|
||||
location += aFileName;
|
||||
diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2/modules/libpref/Preferences.cpp
|
||||
--- firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 2023-07-10 21:09:00.000000000 +0200
|
||||
+++ firefox-115.0.2/modules/libpref/Preferences.cpp 2023-07-17 10:33:23.444355156 +0200
|
||||
@@ -4825,6 +4825,9 @@ nsresult Preferences::InitInitialObjects
|
||||
diff -up firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 firefox-140.0/modules/libpref/Preferences.cpp
|
||||
--- firefox-140.0/modules/libpref/Preferences.cpp.mozilla-bmo1170092 2025-06-02 15:26:51.000000000 +0200
|
||||
+++ firefox-140.0/modules/libpref/Preferences.cpp 2025-06-04 13:24:00.345430064 +0200
|
||||
@@ -4914,6 +4914,9 @@ nsresult Preferences::InitInitialObjects
|
||||
//
|
||||
// Thus, in the omni.jar case, we always load app-specific default
|
||||
// preferences from omni.jar, whether or not `$app == $gre`.
|
||||
|
|
@ -36,10 +36,10 @@ diff -up firefox-115.0.2/modules/libpref/Preferences.cpp.1170092 firefox-115.0.2
|
|||
|
||||
nsresult rv = NS_ERROR_FAILURE;
|
||||
UniquePtr<nsZipFind> find;
|
||||
diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp
|
||||
--- firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 2023-07-10 22:57:20.000000000 +0200
|
||||
+++ firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp 2023-07-17 10:56:25.309692121 +0200
|
||||
@@ -72,6 +72,7 @@
|
||||
diff -up firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 firefox-140.0/toolkit/xre/nsXREDirProvider.cpp
|
||||
--- firefox-140.0/toolkit/xre/nsXREDirProvider.cpp.mozilla-bmo1170092 2025-06-02 15:27:00.000000000 +0200
|
||||
+++ firefox-140.0/toolkit/xre/nsXREDirProvider.cpp 2025-06-04 15:44:09.413562326 +0200
|
||||
@@ -76,6 +76,7 @@
|
||||
#endif
|
||||
#ifdef XP_UNIX
|
||||
# include <ctype.h>
|
||||
|
|
@ -47,7 +47,7 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.
|
|||
#endif
|
||||
#ifdef XP_IOS
|
||||
# include "UIKitDirProvider.h"
|
||||
@@ -478,6 +479,17 @@ nsXREDirProvider::GetFile(const char* aP
|
||||
@@ -462,6 +463,17 @@ nsXREDirProvider::GetFile(const char* aP
|
||||
rv = file->AppendNative(nsLiteralCString(PREF_OVERRIDE_DIRNAME));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = EnsureDirectoryExists(file);
|
||||
|
|
@ -60,12 +60,12 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.
|
|||
+ appInfo->GetName(appName);
|
||||
+ ToLowerCase(appName);
|
||||
+ sysConfigDir.Append(appName);
|
||||
+ NS_NewNativeLocalFile(sysConfigDir, false, getter_AddRefs(file));
|
||||
+ NS_NewNativeLocalFile(sysConfigDir, getter_AddRefs(file));
|
||||
+ rv = EnsureDirectoryExists(file);
|
||||
} else {
|
||||
// We don't know anything about this property. Fail without warning, because
|
||||
// otherwise we'll get too much warning spam due to
|
||||
@@ -694,6 +706,16 @@ nsXREDirProvider::GetFiles(const char* a
|
||||
@@ -518,6 +530,16 @@ nsXREDirProvider::GetFiles(const char* a
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -82,9 +82,9 @@ diff -up firefox-115.0.2/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-115.0.
|
|||
rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile));
|
||||
} else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) {
|
||||
// NS_APP_CHROME_DIR_LIST is only used to get default (native) icons
|
||||
diff -up firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||
--- firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2023-07-10 21:09:13.000000000 +0200
|
||||
+++ firefox-115.0.2/xpcom/io/nsAppDirectoryServiceDefs.h 2023-07-17 10:33:23.444355156 +0200
|
||||
diff -up firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h
|
||||
--- firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h.mozilla-bmo1170092 2025-06-02 15:27:01.000000000 +0200
|
||||
+++ firefox-140.0/xpcom/io/nsAppDirectoryServiceDefs.h 2025-06-04 13:24:00.346423861 +0200
|
||||
@@ -58,6 +58,7 @@
|
||||
#define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL"
|
||||
#define NS_APP_PREFS_OVERRIDE_DIR \
|
||||
|
|
|
|||
6
sources
6
sources
|
|
@ -1,3 +1,3 @@
|
|||
SHA512 (cbindgen-vendor.tar.xz) = 3e7eaff088db918e95f5505e5feeb06e8b7b95cc62042a6d163a708fc76baea43d21bf49cf7e02bc64fdfc61e8d7704057dbb225098de56e110783104d166c54
|
||||
SHA512 (thunderbird-128.13.0esr.source.tar.xz) = 0439ff3bf8549c68778a2bf715da82b45a9e97c2ff4a8d06147d1b65c13031489a4126889a5a561484af385c428595f9d343fb6e266beeb923d4671665f2dbdc
|
||||
SHA512 (thunderbird-langpacks-128.13.0esr-20250723.tar.xz) = cb866a5f93ef3f9bcc0d23de9ac0859fef5884edc353895c5bf1c5ed6d90d1148f137c86c19b9c7d6381eafa7fe8a689f0c7ead652ba4fadb3c55e4ea038a2a8
|
||||
SHA512 (thunderbird-140.1.0esr.source.tar.xz) = f12e2dbda3c4558d06f59af25ff7b374d34e241b9c085236d0d0646dc331f62df85dbe2aa8ae5ff356fa5d0e4b4d73415a10e0e6f5c5ee8bd58305a43aa44c06
|
||||
SHA512 (thunderbird-langpacks-140.1.0esr-20250731.tar.xz) = 8afe455efff10664a62a4fdf8969621803275e129cae15af1cb2d8b8f02a7432adba8f58dda8bf7429ad2898962c985754430c4bfe6e4066d09d2ef35a191be5
|
||||
SHA512 (cbindgen-vendor.tar.xz) = 08d9e2aeb8a0fafd6794d36811a1b4886d01b0745bf68dbb5e25fbf6ed1a8000238eac195aec16eac6e9968ad913d80350c1293595fab63325b9c1ff507d199f
|
||||
|
|
|
|||
|
|
@ -2,6 +2,10 @@
|
|||
# first f42 https://koji.fedoraproject.org/koji/taskinfo?taskID=124917502
|
||||
# then f40 https://koji.fedoraproject.org/koji/taskinfo?taskID=125295645
|
||||
# then also f41 https://koji.fedoraproject.org/koji/taskinfo?taskID=125632253
|
||||
# Excluded due to https://bugzilla.mozilla.org/show_bug.cgi?id=1792159
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2129720
|
||||
ExcludeArch: i686
|
||||
|
||||
%ifarch ppc64le
|
||||
%global rustflags_debuginfo 1
|
||||
%endif
|
||||
|
|
@ -87,13 +91,13 @@ ExcludeArch: armv7hl
|
|||
|
||||
Summary: Mozilla Thunderbird mail/newsgroup client
|
||||
Name: thunderbird
|
||||
Version: 128.13.0
|
||||
Version: 140.1.0
|
||||
Release: 1%{?dist}
|
||||
URL: http://www.mozilla.org/projects/thunderbird/
|
||||
License: MPL-2.0 OR GPL-2.0-or-later OR LGPL-2.0-or-later
|
||||
Source0: https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz
|
||||
%if %{build_langpacks}
|
||||
Source1: thunderbird-langpacks-%{version}%{?pre_version}-20250723.tar.xz
|
||||
Source1: thunderbird-langpacks-%{version}%{?pre_version}-20250731.tar.xz
|
||||
%endif
|
||||
Source3: get-calendar-langpacks.sh
|
||||
Source4: cbindgen-vendor.tar.xz
|
||||
|
|
@ -126,8 +130,6 @@ Patch53: firefox-gcc-build.patch
|
|||
Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch
|
||||
Patch78: firefox-i686-build.patch
|
||||
Patch79: firefox-gcc-13-build.patch
|
||||
Patch80: build-swgl-gcc15-D221744.diff
|
||||
Patch81: build-swgl-gcc15-D222067.diff
|
||||
# PROTOBUF_MUSTTAIL return ... error: cannot tail-call: target is not able to optimize the call into a sibling call
|
||||
Patch82: build-s390x-protobuf-musttail.patch
|
||||
|
||||
|
|
@ -140,9 +142,6 @@ Patch402: mozilla-526293.patch
|
|||
Patch406: mozilla-1170092.patch
|
||||
|
||||
# Bundled expat backported patches
|
||||
Patch501: expat-CVE-2022-25235.patch
|
||||
Patch502: expat-CVE-2022-25236.patch
|
||||
Patch503: expat-CVE-2022-25315.patch
|
||||
|
||||
# Tentative patch for RUSTFLAGS parsing issue,
|
||||
# borrowed from firefox commit 24c9accce19c5cae9394430b24eaf938a9c17882:
|
||||
|
|
@ -183,10 +182,10 @@ BuildRequires: libXrender-devel
|
|||
BuildRequires: hunspell-devel
|
||||
BuildRequires: llvm
|
||||
%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10
|
||||
BuildRequires: clang17
|
||||
BuildRequires: clang17-libs
|
||||
BuildRequires: llvm17-devel
|
||||
%global llvm_suffix -17
|
||||
BuildRequires: clang
|
||||
BuildRequires: clang-libs
|
||||
BuildRequires: llvm-devel
|
||||
%global llvm_suffix -20
|
||||
%else
|
||||
BuildRequires: clang
|
||||
BuildRequires: clang-libs
|
||||
|
|
@ -311,21 +310,15 @@ debug %{name}, you want to install %{name}-debuginfo instead.
|
|||
|
||||
%patch -P 422 -p1 -b .0001-GLIBCXX-fix-for-GCC-12
|
||||
|
||||
%patch -P 501 -p1 -b .expat-CVE-2022-25235
|
||||
%patch -P 502 -p1 -b .expat-CVE-2022-25236
|
||||
%patch -P 503 -p1 -b .expat-CVE-2022-25315
|
||||
|
||||
%patch -P40 -p1 -b .aarch64-skia
|
||||
#patch -P40 -p1 -b .aarch64-skia
|
||||
%patch -P44 -p1 -b .build-arm-libopus
|
||||
#patch -P53 -p1 -b .firefox-gcc-build
|
||||
%patch -P71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12
|
||||
%patch -P78 -p1 -b .firefox-i686
|
||||
%patch -P79 -p1 -b .firefox-gcc-13-build
|
||||
%patch -P80 -p1 -b .swgl-gcc15-1
|
||||
%patch -P81 -p1 -b .swgl-gcc15-2
|
||||
%patch -P82 -p1 -b .build-s390x-protobuf-musttail
|
||||
|
||||
%patch -P 1200 -p1 -b .rustflags-commasplit
|
||||
#patch -P 1200 -p1 -b .rustflags-commasplit
|
||||
|
||||
%if %{official_branding}
|
||||
# Required by Mozilla Corporation
|
||||
|
|
@ -417,8 +410,6 @@ echo "ac_add_options --disable-crashreporter" >> .mozconfig
|
|||
|
||||
# Same as https://bugzilla.redhat.com/show_bug.cgi?id=2239046 for Firefox:
|
||||
# Clang 17 upstream's detection fails, tell it where to look.
|
||||
echo "ac_add_options --with-clang-path=`which clang%{?llvm_suffix}`" >> .mozconfig
|
||||
echo "ac_add_options --with-libclang-path=`llvm-config%{?llvm_suffix} --libdir`" >> .mozconfig
|
||||
|
||||
echo 'export NODEJS="%{nodewrapperdir}/node-stdout-nonblocking-wrapper"' >> .mozconfig
|
||||
|
||||
|
|
@ -427,6 +418,14 @@ echo 'export MOZ_APP_REMOTINGNAME=net.thunderbird.Thunderbird' >> .mozconfig
|
|||
%else
|
||||
echo 'export MOZ_APP_REMOTINGNAME=thunderbird' >> .mozconfig
|
||||
%endif
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=2239046
|
||||
# with clang 17 upstream's detection fails, so let's just tell it
|
||||
# where to look
|
||||
%if 0%{?fedora} >= 42
|
||||
echo "ac_add_options --with-libclang-path=`llvm-config-20 --libdir`" >> .mozconfig
|
||||
%else
|
||||
echo "ac_add_options --with-libclang-path=`llvm-config --libdir`" >> .mozconfig
|
||||
%endif
|
||||
|
||||
# Remove executable bit to make brp-mangle-shebangs happy.
|
||||
find third_party -type f -iname "*.rs"|xargs chmod a-x
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue