Репозиторий Sisyphus
Последнее обновление: 25 августа 2019 | Пакетов: 17347 | Посещений: 14701890
en ru br
Репозитории ALT

Группа :: Базы Данных
Пакет: mariadb

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: mariadb-10.3.15-alt-chroot.patch
Скачать


diff -ur mariadb-10.3.15/sql/mysqld.cc mariadb-10.3.15.new/sql/mysqld.cc
--- mariadb-10.3.15/sql/mysqld.cc	2019-05-13 20:53:34.000000000 +0300
+++ mariadb-10.3.15.new/sql/mysqld.cc	2019-05-15 15:01:30.409344236 +0300
@@ -209,6 +209,14 @@
 #define fcntl(X,Y,Z) 0
 #endif
 
+#ifndef EMBEDDED_LIBRARY
+#define ALT_CHROOT
+#endif
+
+#ifdef ALT_CHROOT
+#include <time.h>                              // For tzset(3)
+#endif
+
 inline void setup_fpu()
 {
 #if defined(__FreeBSD__) && defined(HAVE_IEEEFP_H) && !defined(HAVE_FEDISABLEEXCEPT)
@@ -2541,12 +2549,24 @@
 static void set_root(const char *path)
 {
 #if !defined(__WIN__)
+#ifdef ALT_CHROOT
+  tzset();
+#endif
+
   if (chroot(path) == -1)
   {
     sql_perror("chroot");
     unireg_abort(1);
   }
+#ifndef ALT_CHROOT
   my_setwd("/", MYF(0));
+#else
+  if (chdir("/") == -1)
+  {
+   sql_perror("chdir");
+   unireg_abort(1);
+  }
+#endif
 #endif
 }
 
@@ -5999,14 +6019,21 @@
   /*
     We have enough space for fiddling with the argv, continue
   */
+#ifdef ALT_CHROOT
+  init_ssl();
+  network_init();
+#endif
   check_data_home(mysql_real_data_home);
   if (my_setwd(mysql_real_data_home, opt_abort ? 0 : MYF(MY_WME)) && !opt_abort)
     unireg_abort(1);				/* purecov: inspected */
 
   /* Atomic write initialization must be done as root */
   my_init_atomic_write();
-
+#ifndef ALT_CHROOT
   if ((user_info= check_user(mysqld_user)))
+#else
+  if (user_info)
+#endif
   {
 #if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT)
     if (locked_in_memory) // getuid() == 0 here
@@ -6030,8 +6057,10 @@
   if (init_server_components())
     unireg_abort(1);
 
+#ifndef ALT_CHROOT
   init_ssl();
   network_init();
+#endif
 
 #ifdef __WIN__
   if (!opt_console)
@@ -9826,6 +9855,12 @@
   /* Set global MyISAM variables from delay_key_write_options */
   fix_delay_key_write(0, 0, OPT_GLOBAL);
 
+#ifdef ALT_CHROOT
+  if (fix_paths())
+    return 1;
+  user_info = check_user(mysqld_user);
+#endif
+
 #ifndef EMBEDDED_LIBRARY
   if (mysqld_chroot)
     set_root(mysqld_chroot);
@@ -9834,8 +9869,10 @@
   max_allowed_packet= global_system_variables.max_allowed_packet;
   net_buffer_length= global_system_variables.net_buffer_length;
 #endif
+#ifndef ALT_CHROOT
   if (fix_paths())
     return 1;
+#endif
 
   /*
     Set some global variables from the global_system_variables
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin