The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

02.02.2018 11:33  Выпуск системной библиотеки Glibc 2.27

После шести месяцев разработки состоялся релиз системной библиотеки GNU C Library (glibc) 2.27, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В состав нового выпуска включены исправления от 73 разработчиков. Примечательно, что мэйнтейнером выпуска 2.27 стал Дмитрий Левин, генеральный конструктор ALT Linux.

Из добавленных в Glibc 2.27 улучшений можно отметить:

  • Реализованы новые функции memfd_create и mlock2, специфичные для платформы Linux. Функция memfd_create позволяет создавать области маппинга памяти при помощи механизма memfd, при котором область памяти идентифицируется через файловый дескриптор, который может передаваться между процессами (можно выделить память как по malloc, но обращаться к ней как с файлом, по файловому дескриптору). Функция mlock2 расширяет возможности вызова mlock() поддержкой дополнительного аргумента, позволяющего задействовать новый режим блокировки VM_LOCKONFAULT, при котором страницы памяти в указанном диапазоне будут закреплены в ОЗУ не сразу, а только после возникновения page fault (обращение к невыделенным страницам памяти);
  • Добавлена поддержка механизма PKU (Memory Protection Keys), реализованного в серверных моделях процессоров Intel на базе микроархитектуры Skylake для защиты доступа к страницам памяти из пространства пользователя без изменения таблиц страниц памяти при изменении домена защиты. Для использования данного режима в sys/mman.h добавлены функции pkey_alloc, pkey_free, pkey_mprotect, pkey_set и pkey_get, которые можно использовать для дополнительной защиты размещения в памяти ключей шифрования, предоставив возможность чтения только для одного потока в многопоточной программе шифрования;
  • Добавлена функция copy_file_range, позволяющая ускорить выполнение операций копирования данных из одного файла в другой файл с выполнением операции только на стороне ядра без предварительного чтения данных в память процесса, что избавляет от частого переключения контекста между ядром и пространством пользователя. Тем не менее в обычных условиях использование copy_file_range лишь немного быстрее обычной команды "cp", так как основное время уходит на ввод/вывод с накопителя;
  • Добавлена возможность компиляции Glibc (опция "--enable-static-pie") с поддержкой сборки статически связанных исполняемых файлов в формате PIE. По сравнению с обычными статическими исполняемыми файлами подобные файлы в формате PIE могут быть загружены по любому адресу и предоставляют дополнительные средства защиты ценой определённого повышения потребления памяти и снижения производительности. При сборке Glibc с опцией "--enable-static-pie" формируется файл libc.a, который можно использовать с компилятором GCC 8 для создания статических файлов PIE при указании опции '-static-pie'. Возможность реализована для архитектур i386, x86_64 и x32 (требуется binutils 2.29), а также aarch64 (требуется binutils 2.30);
  • Добавлена поддержка архитектуры RISC-V, которая предоставляет открытую и гибкую систему машинных инструкций, позволяющую создавать микропроцессоры для произвольных областей применения, не требуя при этом отчислений и не налагая условий на использование. RISC-V позволяет создавать полностью открытые SoC и процессоры. Для использования RISC-V также требуется binutils 2.30, gcc 7.3.0 и ядро Linux 4.15;
  • Проведена оптимизация кода функций asin, atan2, exp, expf, log, pow, atan, sin, cosf, sinf, sincosf и tan с задействованием набора инструкций FMA (Fused Multiply–Add) на платформе x86_64;
  • Проведена оптимизация кода функций trunc и truncf с задействованием инструкций SSE4.1 на платформе x86_64;
  • Проведены общие платформонезависимые оптимизации кода функций expf, exp2f, logf, log2f, powf, sinf, cosf и sincosf;
  • Проведена оптимизация функций memcpy, mempcpy, memmove и memset для процессоров Sparc M7;
  • С целью обеспечения более быстрого и безопасного завершения процессов в наборе функций malloc прекращён вывод информации об адресе сбоя и обратной трассировке стека. Целью изменения является минимизация действий, выполняемых после обнаружения выхода за границы диапазонов памяти, чтобы избежать потенциальных уязвимостей в коде обработки данных ситуаций и сократить время завершения работы процесса;
  • В функции abort обеспечено мгновенное завершение процессов без сброса буферов ввода/вывода в stdio, что снижает вероятность повреждения данных после краха и возникновения ситуаций взаимной блокировки;
  • В библиотеку математических функций добавлены интерфейсы _Float32, _Float64 и _Float32x в соответствии с требованиями стандарта ISO/IEC TS 18661-3:2015. Для платформ с поддержкой формата IEEE binary128 для типа "long double" (aarch64, alpha, mips64, riscv, s390 и sparc) в библиотеке математических функций также реализованы интерфейсы _Float128 для данного типа;
  • В утилите ldconfig при обработке директивы include обеспечена сортировка в соответствии с локалью C/POSIX (ранее использовались правила из текущей локали, что приводило к проблемам);
  • Добавлена поддержка двух грамматических форм имён месяцев (например, января и январь). В strftime спецификаторы "%B" и "%b" теперь выводят имена месяца с учётом их грамматической формы в контексте общей даты, а новые спецификаторы %OB" и "%Ob" могут применяться для вывода грамматической формы названия месяца как такового. В функции strptime считаются корректными любые формы имени месяца, обрабатываемые через специфкаторы %B", "%b", "%h", "%OB", "%Ob" и "%Oh". Вызов nl_langinfo выводит форму со склонением при указании флагов MON_1..12 и ABMON_1..12 либо нормальную форму при указании флагов ALTMON_1..12 и _NL_ABALTMON_1..12;
  • Устаревшая функциональность и изменения, приводящие к нарушению обратной совместимости:
    • Изменения в бинарном формате локали не позволяют использовать файлы локали, собранные для Glibc 2.27, в статически скомпилированных приложениях. В этом случае вместо запрошенной локали будет включена локаль C/POSIX, а для корректной загрузки локали требуется перекомпиляция приложения;
    • Объявлена устаревшей возможность использования в статически скомпилированных приложениях вызова dlopen. Поддержка таких приложений будет прекращена в следующем выпуске. Для подобных программ следует применять динамическое связывание;
    • Объявлена устаревшей и будет прекращена в следующем выпуске поддержка старых программ, в которых используются внутренние структуры данных и функции stdio (_IO_*), в том числе программы C++, использующих класс streams из libstdc++ (GCC 2.95);
    • Из заголовочного файла sys/ptrace.h убрано определение константы PTRACE_SEIZE_DEVEL на системах GNU/Linux;
    • В libm прекращена поддержка обработчиков ошибок SVID (вызов пользовательской функции matherr при ошибке) и применение переменной _LIB_VERSION для управления обработкой ошибок. Прекращена поставка библиотеки libieee.a. Из заголовочного файла math.h убраны определения макросов X_TLOSS, DOMAIN, SING, OVERFLOW, UNDERFLOW, TLOSS, PLOSS и HUGE;
    • В новых программах прекращена поддержка функций pow10, pow10f и pow10l, вместо которых следует использовать exp10, exp10f и exp10l;
    • Прекращена поддержка механизма сборки дополнительных пакетов во время сборки Glibc. Опция "--enable-add-ons" теперь игнорируется;
    • Во время сборки теперь не учитывается опция "--without-fp", а задействование аппаратных средств вычислений с плавающей запятой производится на уровне опций компилятора;
    • В функции res_hnok, res_dnok, res_mailok и res_ownok добавлена проверка соответствия переданной строки требованиям к доменному имени;
    • Объявлены устаревшими заголовочные файлы libio.h и _G_config.h, вместо определённых в них GNU-расширений следует использовать стандартные интерфейсы stdio.h;
    • Для сборки содержимого каталога intl теперь требуется пакет bison 2.7 или более новая версия;
  • Устранены уязвимости:
    • CVE-2017-15670, CVE-2017-15671, CVE-2017-15804 - переполнения буфера в функции glob. Потенциально могут привести к выполнению кода злоумышленника при выполнения поиска имен файлов по шаблону при помощи функции glob(). Проблема проявляется при использование флага GLOB_TILDE (расширение GNU) в процессе обработки домашних директорий при помощи оператора "~", идущего после длинной строки (при обработке пути вида "~длинная_строка/a/b").
    • CVE-2017-1000409 - может привести к повышению своих привилегий в системе. Уязвимость вызвана переполнением буфера в компоновщике ld.so и может быть эксплуатирована через указание специально подобранных данных в переменной LD_LIBRARY_PATH перед запуском suid-программ. Для эксплуатации переполнения буфера локальный атакующий должен иметь возможность создания жесткой ссылки на исполняемый SUID-файл в каталог, содержащий двоеточие в имени. Также требуется, чтобы применяемая в дистрибутиве версия ld.so передавала переменную окружения LD_LIBRARY_PATH в функцию _dl_init_paths().
    • CVE-2017-1000408 - некорректное вычисление размера массива в функции _dl_init_paths может привести к утечке содержимого памяти процессов через манипуляцию с переменной окружения LD_HWCAP_MASK.
    • CVE-2018-1000001 - переполнение через нижнюю границу буфера в функции realpath(), проявляющееся при возврате относительного пути системным вызовом getcwd(). Существует рабочий прототип эксплоита, позволяющий поднять свои привилегии до прав root через манипуляцию с исполняемыми файлами с флагом suid root, в которых вызывается функция realpath();
    • CVE-2009-5064 - запуск программы в режиме проверки скриптом ldd может привести к запуску исполняемого кода;
    • CVE-2017-17426 - вызов функции malloc для объекта размером близким к SIZE_MAX может привести к возврату указателя на буфер недостаточного размера, вместо возврата NULL при нехватке памяти;
    • CVE-2017-16997 - некорректная обработка переменных окружения RPATH и RUNPATH, содержащих $ORIGIN, может привести к загрузке в привилегированные исполняемые файлы (SUID или AT_SECURE) произвольных библиотек из текущей директории;
    • CVE-2018-6485 - вызов функций posix_memalign и memalign со значением размера объекта близким к SIZE_MAX может привести к возврату указателя на буфер недостаточного размера, вместо возврата NULL.


  1. Главная ссылка к новости (https://sourceware.org/ml/libc...)
  2. OpenNews: Уязвимость в Glibc, позволяющая поднять привилегии в системе
  3. OpenNews: Уязвимость в Glibc ld.so, позволяющая поднять свои привилегии в системе
  4. OpenNews: Переполнение буфера в функции glob из состава Glibc
  5. OpenNews: Выпуск системной библиотеки Glibc 2.26
  6. OpenNews: Выпуск стандартной Си-библиотеки Musl 1.1.17 с устранением уязвимости
Лицензия: CC-BY
Тип: Программы
Ключевые слова: glibc, libc, compile
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 12:34, 02/02/2018 [ответить] [смотреть все]     [к модератору]
  • –3 +/
    pacman -Q binutils binutils 2 29 1-2 pacman -Ss glibc core glibc 2 26-11 base ... весь текст скрыт [показать]
     
     
  • 2.3, Аноним, 12:42, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    > core/glibc 2.26-11
    > 2.26-11
    > 11

    Уверены, что они не пофикшены уже?

     
     
  • 3.4, Andrey Mitrofanov, 12:47, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Он уверен, что https security archlinux org package lib32-glibc мы вот так вот... весь текст скрыт [показать]
     
  • 2.6, trolleybus, 13:05, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Зато в Альт Линуксе есть c ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, Michael Shigorin e2k_v4, 15:06, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Таки да https packages altlinux org ru Sisyphus srpms glibc changelog ... весь текст скрыт [показать]
     
     
  • 4.44, slump64, 17:57, 02/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Лучше б свой сайт починили [https://i.imgur.com/33hKp0d.png] 🤦
     
     
  • 5.45, Michael Shigorin, 18:00, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Передал разработчику сайта, но может зависеть от локальных настроек, сами понима... весь текст скрыт [показать]
     
     
  • 6.46, slump64, 18:02, 02/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    А может зависеть от пары строк CSS а то и (не дай бог) PHP
     
  • 6.47, slump64, 18:04, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    передайте ещё что шрифт нужно использовать не как все arial, helvetica, sans-ser... весь текст скрыт [показать]
     
  • 4.49, Аноним, 18:23, 02/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Вам оффтоп: https://geektimes.ru/post/297819/
     
     
  • 5.52, Michael Shigorin, 18:35, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Да все в курсе, просто в РБТ не лучшие времена по части комплекта разработчиков ... весь текст скрыт [показать]
     
  • 3.32, Аноним, 16:38, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –3 +/
    А что, альт таки портируют на RISC-V Или таки оправдают самые смелые ожидания в... весь текст скрыт [показать]
     
  • 1.2, Аноним, 12:41, 02/02/2018 [ответить] [смотреть все]     [к модератору]  
  • +3 +/
    Джвадцать лет ждал ... весь текст скрыт [показать]
     
  • 1.5, Аноним, 12:58, 02/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +6 +/
    > Объявлена устаревшей возможность использования в статически скомпилированных приложениях вызова dlopen. Поддержка таких приложений будет прекращена в следующем выпуске. Для подобных программ следует применять динамическое связывание;

    Разве статически скомпилированная программа не может хотеть динамически подгрузить какой-либо плагин? Странноватое решение как по мне

     
     
  • 2.7, Аноним, 13:11, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • –2 +/
    Странно, я был уверен, что это и раньше не работало.
     
  • 2.9, Аноним, 13:16, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Согласен, напуркуа было выпиливает, непонятно
     
     
  • 3.35, Аноним, 16:50, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Наверное потому что для динамической загрузки надо вызывать динамический линковщ... весь текст скрыт [показать]
     
     
  • 4.94, пох, 23:31, 04/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    динамически-то зачем ну да, последние лет десять немодно собирать статически li... весь текст скрыт [показать]
     
  • 2.13, Andrey Mitrofanov, 13:47, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –3 +/
    У тебя русская языка на родная что ли Написано glibc не хочет поддерживать , т... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.18, EHLO, 14:50, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Поясни, как программа сможет использовать Сомневаюсь, что и ты за musl топишь ... весь текст скрыт [показать]
     
     
  • 4.24, Andrey Mitrofanov, 15:06, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    open , read и далее по месту Захочет, чего в этой библиотеке нет, -- своё на... весь текст скрыт [показать]
     
     
  • 5.38, пох, 16:59, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +2 +/
    угу, ничто не мешает програмиззду без конца чинить то, что сломано без всякой ... весь текст скрыт [показать]
     
     
  • 6.40, Andrey Mitrofanov, 17:07, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Ну-да, прогресс не остановить TM и маргиналы, некорфилы, динозавры и все 3 пр... весь текст скрыт [показать]
     
  • 1.10, Ivan_83, 13:33, 02/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +2 +/
    "memfd_create и mlock2" - странно, раньше это было shm*(), которое в линуксе по факту было просто файлом на tmpfs, в остальном вроде всё так же.

    copy_file_range - так это sendfile() или splice().



     
     
  • 2.15, Andrey Mitrofanov, 13:57, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Не также У shm_ есть имя файла , у нового -- нет Те можно закрыть, открыть п... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, Ivan_83, 15:40, 02/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    int memfd_create(const char *name, unsigned int flags);
    так и тут имя файла.
     
     
  • 4.30, Andrey Mitrofanov, 16:30, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    От меня-то чего надо Ну есть, но не используется и вообще не один и тот файл С... весь текст скрыт [показать]
     
  • 1.19, Аноним, 14:51, 02/02/2018 [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Интересно, даст ли новая глибц той же скорости, что есть у Clear Linux?
     
     
  • 2.21, Andrey Mitrofanov, 15:02, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    У твоего возлюбленного скорость не от glibc, а от icc ... весь текст скрыт [показать] [показать ветку]
     
  • 2.22, leap42, 15:03, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Конечно даст Но в другие дистры это счастье году в 2019 попадёт, а в Clear уже ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.25, Michael Shigorin e2k_v4, 15:09, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Я Вас умоляю, в http altlinux org regular завезут на следующей неделе Можно ... весь текст скрыт [показать]
     
  • 3.50, pavlinux, 18:28, 02/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Что и лучшие не закрытые дыры тоже ... весь текст скрыт [показать]
     
  • 1.39, Аноним, 17:05, 02/02/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Не думал, что в чисто софтверной компании есть должность генеральный конструкт... весь текст скрыт [показать]
     
     
  • 2.42, Ононем, 17:34, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –3 +/
    Расейская специфика Дмитрий Левин -- это случайно не он про компьютеры в нач 0... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.43, romke, 17:47, 02/02/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Книга была А. Левин - Самоучитель работы на компьютере.
     
     
  • 4.81, Аноним, 08:03, 04/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Александр Левин мне чем-то напоминает Федорчука Оба писатели Вот только Федорч... весь текст скрыт [показать]
     
  • 1.53, pavlinux, 18:45, 02/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    > CVE-2018-6485 - вызов функций posix_memalign

    А вот не работает, даже на 2.19

     
  • 1.55, Аноним, 19:08, 02/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    10 уязвимостей закрыли, 20 сделали
     
     
  • 2.66, Аноним, 23:48, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +1 +/
    > 10 уязвимостей закрыли, 20 сделали

    Повод сделать следующую версию

     
  • 1.62, Аноним, 23:40, 02/02/2018 [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Объясните в двух словах, чем risc-v лучше существующего уже давно operisc?
     
     
  • 2.65, Аноним, 23:47, 02/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    OpenRISC устарело на стадии разработки RISC-V имеет поддержку 64-bit и много др... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.69, Аноним, 16:53, 03/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Кстати, уже скоро 19 00 MSK должен быть интересный доклад про RISC-V на FOSDEM... весь текст скрыт [показать]
     
  • 3.72, Аноним, 18:25, 03/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Вообще-то у OpenRISC тоже 64-битная версия есть А так оба пока существуют в вид... весь текст скрыт [показать]
     
  • 2.67, iZEN, 08:17, 03/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –4 +/
    Так вот же написали Привязка к ядру Linux и его системному ПО - враг не подойдё... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.74, Аноним, 18:28, 03/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Что тебе не понятно Что OpenRISC, что RISC-V в твоей бзде если и будут то весьм... весь текст скрыт [показать]
     
     
  • 4.75, iZEN, 19:39, 03/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Как вы не поймёте, что драйвер под железку пишет производитель железки, а не раз... весь текст скрыт [показать]
     
     
  • 5.80, Michael Shigorin, 01:17, 04/02/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • –1 +/
    Это Вы никак не поймёте Попробуйте не трындеть, а собрать _и_ запустить Узна... весь текст скрыт [показать]
     
  • 2.68, Andrey Mitrofanov, 11:48, 03/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Не лучше ... весь текст скрыт [показать] [показать ветку]
     
     ....нить скрыта, показать (8)

  • 1.76, AnoNe01eX, 19:52, 03/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Да не, нормально. :-)

    В принципе, glibc-2.27 может быть/готова (нужное подчеркнуть :-) ) к использованию на платформе hurd/i386 с микроядром mach. В этом плане тоже была проделана большая работа, но в новости почему-то об этом ни слова. :-\

    P.S. В комментах intl/plural.y по-прежнему написано что ему нужен bison >= 2.0. :-)

    А так, - молодцы конечно. :-)

     
  • 1.77, Аноним, 22:36, 03/02/2018 [ответить] [смотреть все]     [к модератору]  
  • +/
    Я что-то совсем не понял, как в libc могут быть уязвимости повышения привилегий ... весь текст скрыт [показать]
     
     
  • 2.78, Andrey Mitrofanov, 22:46, 03/02/2018 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Смирись, тебе не понять Ты ж не прочитал, что написано строчкой ниже слов повы... весь текст скрыт [показать] [показать ветку]
     
  • 1.95, Аноним, 23:46, 13/02/2018 [ответить] [смотреть все]    [к модератору]  
  • +/
    Как, как? Вы сказали musl?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor