mariadb: update to version 10.4.22 17603/head
authorJosef Schlehofer <pepe.schlehofer@gmail.com>
Thu, 13 Jan 2022 13:46:40 +0000 (14:46 +0100)
committerJosef Schlehofer <pepe.schlehofer@gmail.com>
Thu, 13 Jan 2022 13:52:05 +0000 (14:52 +0100)
Fixes: CVE-2021-35604
Removed two patches:
130-c11_atomics.patch - included in upstream now [1]
140-mips-connect-unaligned.patch - included in upstream, too. [2]

[1] https://github.com/MariaDB/server/commit/f502ccbcb5dfce29067434885a23db8d1bd5f134#diff-6ef8fc82162068daeab927be94e246b202eb39323a102273b9448219da24172f
[2] https://github.com/MariaDB/server/commit/a33c1082dab7ab4b08acf957d6364be95e4c6a9f#diff-821e2c7a49184a660339b094f437fcd1e9aea997a86391467a657088234ebca0

Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
utils/mariadb/Makefile
utils/mariadb/patches/130-c11_atomics.patch [deleted file]
utils/mariadb/patches/140-mips-connect-unaligned.patch [deleted file]

index 65033ab5872dab7d41334ff8f65c998fa369a951..ac2307cd3285b8258c4b3f54e7120e2139f404db 100644 (file)
@@ -9,13 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mariadb
-PKG_VERSION:=10.4.21
+PKG_VERSION:=10.4.22
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL := https://archive.mariadb.org/$(PKG_NAME)-$(PKG_VERSION)/source
 
-PKG_HASH:=94dd2e6f5d286de8a7dccffe984015d4253a0568281c7440e772cfbe098a291d
+PKG_HASH:=44bdc36eeb02888296e961718bae808f3faab268ed49160a785248db60500c00
 PKG_MAINTAINER:=Michal Hrusecky <Michal@Hrusecky.net>
 PKG_LICENSE:=GPL-2.0-only
 PKG_LICENSE_FILES:=COPYING THIRDPARTY
diff --git a/utils/mariadb/patches/130-c11_atomics.patch b/utils/mariadb/patches/130-c11_atomics.patch
deleted file mode 100644 (file)
index a99566e..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-Author: VicenČ›iu Ciorbaru <vicentiu@mariadb.org>
-Date:   Fri Dec 21 19:14:04 2018 +0200
-
-   Link with libatomic to enable C11 atomics support
-
-   Some architectures (mips) require libatomic to support proper
-   atomic operations. Check first if support is available without
-   linking, otherwise use the library.
-
---- a/configure.cmake
-+++ b/configure.cmake
-@@ -866,7 +866,25 @@ int main()
-   long long int *ptr= &var;
-   return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
- }"
--HAVE_GCC_C11_ATOMICS)
-+HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
-+  SET(HAVE_GCC_C11_ATOMICS True)
-+ELSE()
-+  SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-+  LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
-+  CHECK_CXX_SOURCE_COMPILES("
-+  int main()
-+  {
-+    long long int var= 1;
-+    long long int *ptr= &var;
-+    return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
-+  }"
-+  HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+    SET(HAVE_GCC_C11_ATOMICS True)
-+  ENDIF()
-+  SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
-+ENDIF()
- IF(WITH_VALGRIND)
-   SET(HAVE_valgrind 1)
---- a/mysys/CMakeLists.txt
-+++ b/mysys/CMakeLists.txt
-@@ -78,6 +78,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings
-  ${LIBNSL} ${LIBM} ${LIBRT} ${CMAKE_DL_LIBS} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY})
- DTRACE_INSTRUMENT(mysys)
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(mysys atomic)
-+ENDIF()
-+
- IF(HAVE_BFD_H)
-   TARGET_LINK_LIBRARIES(mysys bfd)  
- ENDIF(HAVE_BFD_H)
---- a/sql/CMakeLists.txt
-+++ b/sql/CMakeLists.txt
-@@ -191,6 +191,10 @@ ELSE()
-   SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL})
- ENDIF()
-+IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
-+  TARGET_LINK_LIBRARIES(sql atomic)
-+ENDIF()
-+
- IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS)
diff --git a/utils/mariadb/patches/140-mips-connect-unaligned.patch b/utils/mariadb/patches/140-mips-connect-unaligned.patch
deleted file mode 100644 (file)
index 7eceffa..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-From: Debian MySQL Maintainers <pkg-mysql-maint@lists.alioth.debian.org>
-Date: Thu, 10 Aug 2017 20:40:28 +0200
-Subject: mips-connect-unaligned
-
----
- storage/connect/valblk.cpp | 41 ++++++++++++++++++-------------------
- storage/connect/valblk.h   | 51 +++++++++++++++++++++++++++++-----------------
- 2 files changed, 52 insertions(+), 40 deletions(-)
-
---- a/storage/connect/valblk.cpp
-+++ b/storage/connect/valblk.cpp
-@@ -268,14 +268,14 @@ bool TYPBLK<TYPE>::Init(PGLOBAL g, bool
- template <class TYPE>
- char *TYPBLK<TYPE>::GetCharString(char *p, int n)
-   {
--  sprintf(p, Fmt, Typp[n]);
-+  sprintf(p, Fmt, UnalignedRead(n));
-   return p;
-   } // end of GetCharString
- template <>
- char *TYPBLK<double>::GetCharString(char *p, int n)
-   {
--  sprintf(p, Fmt, Prec, Typp[n]);
-+  sprintf(p, Fmt, Prec, UnalignedRead(n));
-   return p;
-   } // end of GetCharString
-@@ -291,7 +291,7 @@ void TYPBLK<TYPE>::SetValue(PVAL valp, i
-   ChkTyp(valp);
-   if (!(b = valp->IsNull()))
--    Typp[n] = GetTypedValue(valp);
-+    UnalignedWrite(n, GetTypedValue(valp));
-   else
-     Reset(n);
-@@ -353,9 +353,9 @@ void TYPBLK<TYPE>::SetValue(PCSZ p, int
-   ulonglong val = CharToNumber(p, strlen(p), maxval, Unsigned, &minus); 
-     
-   if (minus && val < maxval)
--    Typp[n] = (TYPE)(-(signed)val);
-+    UnalignedWrite(n, (TYPE)(-(signed)val));
-   else
--    Typp[n] = (TYPE)val;
-+    UnalignedWrite(n, (TYPE)val);
-   SetNull(n, false);
-   } // end of SetValue
-@@ -398,7 +398,7 @@ void TYPBLK<double>::SetValue(PCSZ p, in
-               throw Type;
-       } // endif Check
--  Typp[n] = atof(p);
-+  UnalignedWrite(n, atof(p));
-   SetNull(n, false);
-   } // end of SetValue
-@@ -430,7 +430,7 @@ void TYPBLK<TYPE>::SetValue(PVBLK pv, in
-   ChkTyp(pv);
-   if (!(b = pv->IsNull(n2) && Nullable))
--    Typp[n1] = GetTypedValue(pv, n2);
-+    UnalignedWrite(n1, GetTypedValue(pv, n2));
-   else
-     Reset(n1);
-@@ -481,10 +481,10 @@ void TYPBLK<TYPE>::SetMin(PVAL valp, int
-   {
-   CheckParms(valp, n)
-   TYPE  tval = GetTypedValue(valp);
--  TYPE& tmin = Typp[n];
-+  TYPE  tmin = UnalignedRead(n);
-   if (tval < tmin)
--    tmin = tval;
-+    UnalignedWrite(n, tval);
-   } // end of SetMin
-@@ -496,10 +496,10 @@ void TYPBLK<TYPE>::SetMax(PVAL valp, int
-   {
-   CheckParms(valp, n)
-   TYPE  tval = GetTypedValue(valp);
--  TYPE& tmin = Typp[n];
-+  TYPE  tmin = UnalignedRead(n);
-   if (tval > tmin)
--    tmin = tval;
-+    UnalignedWrite(n, tval);
-   } // end of SetMax
-@@ -513,8 +513,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
-   CheckType(pv)
-   TYPE *lp = ((TYPBLK*)pv)->Typp;
--  for (int i = k; i < n; i++)          // TODO
--    Typp[i] = lp[i];
-+  memcpy(Typp + k, lp + k, sizeof(TYPE) * n);
-   } // end of SetValues
- #endif // 0
-@@ -525,7 +524,7 @@ void TYPBLK<TYPE>::SetValues(PVBLK pv, i
- template <class TYPE>
- void TYPBLK<TYPE>::Move(int i, int j)
-   {
--  Typp[j] = Typp[i];
-+  UnalignedWrite(j, UnalignedRead(i));
-   MoveNull(i, j);
-   } // end of Move
-@@ -539,7 +538,7 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
-   ChkIndx(n);
-   ChkTyp(vp);
- #endif   // _DEBUG
--  TYPE mlv = Typp[n];
-+  TYPE mlv = UnalignedRead(n);
-   TYPE vlv = GetTypedValue(vp);
-   return (vlv > mlv) ? 1 : (vlv < mlv) ? (-1) : 0;
-@@ -551,8 +550,8 @@ int TYPBLK<TYPE>::CompVal(PVAL vp, int n
- template <class TYPE>
- int TYPBLK<TYPE>::CompVal(int i1, int i2)
-   {
--  TYPE lv1 = Typp[i1];
--  TYPE lv2 = Typp[i2];
-+  TYPE lv1 = UnalignedRead(i1);
-+  TYPE lv2 = UnalignedRead(i2);
-   return (lv1 > lv2) ? 1 : (lv1 < lv2) ? (-1) : 0;
-   } // end of CompVal
-@@ -589,7 +588,7 @@ int TYPBLK<TYPE>::Find(PVAL vp)
-   TYPE n = GetTypedValue(vp);
-   for (i = 0; i < Nval; i++)
--    if (n == Typp[i])
-+    if (n == UnalignedRead(i))
-       break;
-   return (i < Nval) ? i : (-1);
-@@ -605,7 +604,7 @@ int TYPBLK<TYPE>::GetMaxLength(void)
-   int i, n, m;
-   for (i = n = 0; i < Nval; i++) {
--    m = sprintf(buf, Fmt, Typp[i]);
-+    m = sprintf(buf, Fmt, UnalignedRead(i));
-     n = MY_MAX(n, m);
-     } // endfor i
-@@ -1335,7 +1334,7 @@ char *DATBLK::GetCharString(char *p, int
-   char *vp;
-   if (Dvalp) {
--    Dvalp->SetValue(Typp[n]);
-+    Dvalp->SetValue(UnalignedRead(n));
-     vp = Dvalp->GetCharString(p);
-   } else
-     vp = TYPBLK<int>::GetCharString(p, n);
-@@ -1351,7 +1350,7 @@ void DATBLK::SetValue(PCSZ p, int n)
-   if (Dvalp) {
-     // Decode the string according to format
-     Dvalp->SetValue_psz(p);
--    Typp[n] = Dvalp->GetIntValue();
-+    UnalignedWrite(n, Dvalp->GetIntValue());
-   } else
-     TYPBLK<int>::SetValue(p, n);
---- a/storage/connect/valblk.h
-+++ b/storage/connect/valblk.h
-@@ -139,6 +139,7 @@ class VALBLK : public BLOCK {
-   int     Prec;             // Precision of float values
-   }; // end of class VALBLK
-+
- /***********************************************************************/
- /*  Class TYPBLK: represents a block of typed values.                  */
- /***********************************************************************/
-@@ -151,40 +152,41 @@ class TYPBLK : public VALBLK {
-   // Implementation
-   virtual bool   Init(PGLOBAL g, bool check);
-   virtual int    GetVlen(void) {return sizeof(TYPE);}
--  virtual char   GetTinyValue(int n) {return (char)Typp[n];}
--  virtual uchar  GetUTinyValue(int n) {return (uchar)Typp[n];}
--  virtual short  GetShortValue(int n) {return (short)Typp[n];}
--  virtual ushort GetUShortValue(int n) {return (ushort)Typp[n];}
--  virtual int    GetIntValue(int n) {return (int)Typp[n];}
--  virtual uint   GetUIntValue(int n) {return (uint)Typp[n];}
--  virtual longlong GetBigintValue(int n) {return (longlong)Typp[n];}
--  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)Typp[n];}
--  virtual double GetFloatValue(int n) {return (double)Typp[n];}
-+
-+  virtual char   GetTinyValue(int n) {return (char)UnalignedRead(n);}
-+  virtual uchar  GetUTinyValue(int n) {return (uchar)UnalignedRead(n);}
-+  virtual short  GetShortValue(int n) {return (short)UnalignedRead(n);}
-+  virtual ushort GetUShortValue(int n) {return (ushort)UnalignedRead(n);}
-+  virtual int    GetIntValue(int n) {return (int)UnalignedRead(n);}
-+  virtual uint   GetUIntValue(int n) {return (uint)UnalignedRead(n);}
-+  virtual longlong GetBigintValue(int n) {return (longlong)UnalignedRead(n);}
-+  virtual ulonglong GetUBigintValue(int n) {return (ulonglong)UnalignedRead(n);}
-+  virtual double GetFloatValue(int n) {return (double)UnalignedRead(n);}
-   virtual char  *GetCharString(char *p, int n);
--  virtual void   Reset(int n) {Typp[n] = 0;}
-+  virtual void   Reset(int n) {UnalignedWrite(n, 0);}
-   // Methods
-   using VALBLK::SetValue;
-   virtual void   SetValue(PCSZ sp, int n);
-   virtual void   SetValue(const char *sp, uint len, int n);
-   virtual void   SetValue(short sval, int n)
--                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
-   virtual void   SetValue(ushort sval, int n)
--                  {Typp[n] = (TYPE)sval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)sval); SetNull(n, false);}
-   virtual void   SetValue(int lval, int n)
--                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
-   virtual void   SetValue(uint lval, int n)
--                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
-   virtual void   SetValue(longlong lval, int n)
--                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
-   virtual void   SetValue(ulonglong lval, int n)
--                  {Typp[n] = (TYPE)lval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)lval); SetNull(n, false);}
-   virtual void   SetValue(double fval, int n)
--                  {Typp[n] = (TYPE)fval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)fval); SetNull(n, false);}
-   virtual void   SetValue(char cval, int n)
--                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
-   virtual void   SetValue(uchar cval, int n)
--                  {Typp[n] = (TYPE)cval; SetNull(n, false);}
-+                  {UnalignedWrite(n, (TYPE)cval); SetNull(n, false);}
-   virtual void   SetValue(PVAL valp, int n);
-   virtual void   SetValue(PVBLK pv, int n1, int n2);
-   virtual void   SetMin(PVAL valp, int n);
-@@ -206,6 +208,17 @@ class TYPBLK : public VALBLK {
-   // Members
-   TYPE* const &Typp;
-   const char  *Fmt;
-+
-+  // Unaligned access
-+  TYPE UnalignedRead(int n) const {
-+    TYPE result;
-+    memcpy(&result, Typp + n, sizeof(TYPE));
-+    return result;
-+  }
-+
-+  void UnalignedWrite(int n, TYPE value) {
-+    memcpy(Typp + n, &value, sizeof(TYPE));
-+  }
-   }; // end of class TYPBLK
- /***********************************************************************/