The OpenNET Project / Index page

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

Обновление libpng 1.6.27 с устранением уязвимости

30.12.2016 10:33

В очередной серии обновлений библиотеки libpng 1.6.27, 1.5.28, 1.4.20, 1.2.57 и 1.0.67 устранена уязвимость, которая может привести к разыменованию нулевого указателя (в современных системах приводит к краху приложения), при определённых манипуляциях с PNG-изображениями. Примечательно, что вызывающая уязвимость ошибка присутствует в коде libpng более 20 лет, с 26 июня 1995 года.

Проблема вызвана разыменованием нулевого указателя и проявляется при использовании в программах функции png_set_text_2(), позволяющей манипулировать содержащимися в метаданных текстовыми блоками. Подобная функция не используется в firefox, imagemagick, graphicsmagick, pngcrush и просмотрщиках изображений, и применяется только в некоторых графических редакторах. Более того, для эксплуатации уязвимости приложение должно загрузить блок текста в структуру PNG, затем удалить весь текст, после чего добавить другой блок текста в ту же самую структуру, что делает атаку маловероятной.

  1. Главная ссылка к новости (http://openwall.com/lists/oss-...)
  2. OpenNews: Приложения, использующие libpng, подвержены уязвимости
  3. OpenNews: В libpng устранена опасная уязвимость
  4. OpenNews: Релиз libpng 1.6.0 с поддержкой упрощённого API
  5. OpenNews: Уязвимость в библиотеке обработки шрифтов Libgraphite
  6. OpenNews: Серия уязвимостей в Libarchive
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45786-libpng
Ключевые слова: libpng
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (71) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:54, 30/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Какой смысл пять версий либы поддерживать?
     
     
  • 2.4, turbo2001 (ok), 11:13, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Популярность старых версий и несовместимость API
     
     
  • 3.9, paulus (ok), 11:36, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Популярность старых версий и несовместимость API

    спасибо за ликбез.

     
  • 2.51, Аноним (-), 22:45, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Мне кажется что поддерживают две, а для остальных выпустили обновление по особому случаю.
     
  • 2.77, pavlinux (ok), 20:51, 04/01/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Купил iPhone 6, вышел iPhone 7, всех младше надо банить, нефиг на старье работать.  
     
     
  • 3.78, Аноним (-), 03:28, 06/01/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Погодите пару лет и посмотрите как у Вас сначала аккуртненько не шлют обновления, а потом половина приложений не работает, а потом и во все откажет флеш память.
     

  • 1.2, Аноним (-), 11:10, 30/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –12 +/
    Вот тебе и безопасный си...
     
     
  • 2.5, Michael Shigorin (ok), 11:16, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +16 +/
    > Вот тебе и безопасный си...

    Опасная бритва -- это опасная бритва, если Вам её кто-то впаривал как безопасную -- с ним и разбирайтесь.

     
     
  • 3.7, Аноним (-), 11:18, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Нужно просто, чтобы был человек, который идеально обращается с опасной бритвой. И чтобы с бритвой работали только через него. Примерно как JVM безопасно работает с памятью, а все остальные только через него.
     
     
  • 4.10, Michael Shigorin (ok), 11:39, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Нужно просто, чтобы был человек, который идеально обращается с опасной бритвой.

    Это путь сперва специализации, а затем деградации -- ну, когда надо писать в руководствах к стиралкам, что кошек в них стирать низзя, чтоб деграданты не засудили.

     
     
  • 5.14, Аноним (-), 12:07, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Специализация - это цивилизация. Отсутствие специализации было во времена жизни в пещерах.
     
     
  • 6.16, Куяврег (?), 12:57, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    нужно заметить что специализация и универсализация одновременно существуют. ну как анализ и синтез. и утверждать, что развитие зависит только от специализации, подобно как развитие зависит только от анализа - неверно
     
     
  • 7.19, Аноним (-), 13:10, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Шигорин чутка позабыл о том, что весь UNIX построен на принципе специализации: пусть каждая программа делает только одну вещь, но делает это хорошо. То же самое можно сказать и о работе с памятью. Надежнее доверить это дело JVM.
     
     
  • 8.22, Andrey Mitrofanov (?), 13:17, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не весь ... текст свёрнут, показать
     
     
  • 9.23, Аноним (-), 13:19, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Согласен, 99 999 100 ... текст свёрнут, показать
     
     
  • 10.24, Andrey Mitrofanov (?), 13:46, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На каникулах возьми TAOUP и проштудируй на предмет помянутой выше универсализаци... текст свёрнут, показать
     
     
  • 11.25, Аноним (-), 14:08, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    так я и включил его в 0 001 Или вы сложение еще не проходили ... текст свёрнут, показать
     
  • 8.30, Michael Shigorin (ok), 14:59, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +7 +/
    и тут же А я и не знал, что JVM -- это такой менеджер памяти, B и только ... текст свёрнут, показать
     
     
  • 9.35, С того же адреса (?), 15:31, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Рассматривай JVM как coreutils Отдельные компоненты JVM как и coreutils вполн... текст свёрнут, показать
     
     
  • 10.36, Michael Shigorin (ok), 15:53, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    А какой B именно B из них отвечает в JVM только за работу с памятью PS re 3... текст свёрнут, показать
     
     
  • 11.37, Аноним (-), 15:57, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тот, который отвечает только за работу с памятью А какой ты ожидал ответ Назв... текст свёрнут, показать
     
  • 7.48, Аноним (-), 22:08, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да… ты это современным работодателям на территории exUSSR расскажи… а то ж они не знают, желая всё как один себе универсальных солдат за мизер денег.
     
     
  • 8.54, Crazy Alex (ok), 01:18, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Где exUSSR и где цивилизация Те, кто с Западом плотно работают - до тех доходит... текст свёрнут, показать
     
     
  • 9.55, Michael Shigorin (ok), 02:31, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    вот те и знают, что там за цивилизация заикнулся, что денег впритык на жил... текст свёрнут, показать
     
     
  • 10.64, Crazy Alex (ok), 17:57, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что за богатая фантазия Но вообще - сюрприз - твой доход определяется твоей пол... текст свёрнут, показать
     
  • 10.69, Аноним (-), 01:26, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нет, конечно, намного правильнее когда некоторые очень нужные и полезные люди фо... большой текст свёрнут, показать
     
  • 6.67, Аноним (-), 23:40, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Специализация - это цивилизация. Отсутствие специализации было во времена жизни в пещерах.

    А Valve почему-то нрвятся T-shaped people. Наверное специализация должна быть как-то так. А то не круто когда человек вроде бы хороший програмер но понятия не имеет как настроить почтарь. Да, видал такого - этот чудак цитировать нормально не мог и переписка с ним сильно клинила рабочие процессы остальным.

     
  • 6.68, iZEN (ok), 00:39, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Специализация - это цивилизация. Отсутствие специализации было во времена жизни в пещерах.

    Любой человек должен уметь менять пелёнки, планировать вторжения, резать свиней, конструировать здания, управлять кораблём, писать сонеты, вести бухгалтерию, возводить стены, вправлять кости, облегчать смерть, исполнять приказы, отдавать приказы, сотрудничать, действовать самостоятельно, решать уравнения, анализировать новые проблемы, вносить удобрения, программировать, вкусно готовить, хорошо сражаться, умирать с достоинством. Специализация — удел насекомых.

    Роберт Хайнлайн, «Достаточно времени для любви, или Жизни Лазаруса Лонга»

     
  • 5.26, Илья (??), 14:18, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Это путь сперва специализации, а затем деградации

    Ну не скажи. Бизнес-логику очень сложно мешать с низкоуровневыми вызовами. Да и не нужно.

     
     
  • 6.33, Michael Shigorin (ok), 15:28, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Это путь сперва специализации, а затем деградации
    > Ну не скажи. Бизнес-логику очень сложно мешать с низкоуровневыми вызовами.

    Сперва да, а затем "у нас БУЗИНЕС, шо вы со своей безопасностью впёрлись!" (до поры).

     
     
  • 7.70, Аноним (-), 01:39, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Сперва да, а затем "у нас БУЗИНЕС, шо вы со своей безопасностью
    > впёрлись!" (до поры).

    Бывает и другой полюс, как в том рассказе про хакера и столовую. Когда все ресурсы брошены на заякоривание солонок на супернадежные цепи. На остальное ресурсов не остается или остается мало. С понятным результатом. Безопасность - хорошо. Но если перебдеть то переклин на безопасности может застопорить вообще все работы. Потому что жить вредно и опасно. От этого умирают, гарантия 100%.

     
  • 5.29, Comdiv (ok), 14:58, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > чтоб деграданты не засудили.

    Засуживают как раз не деграданты, а злоумышленники, находящие уязвимости в юридической защите компании-производителя. Ну а к сути специализации этот пример вообще не имеет отношения.

     
  • 4.52, ы (?), 23:48, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ознакомься с основами явы, потом уже рот раскрывай.
     
  • 2.6, Отражение луны (ok), 11:17, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Безопасный язык программирования? Что дальше? Глютенфри микроволновка?
     
  • 2.12, Аноним (-), 11:51, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот тебе и безопасная Java...
    Вот тебе и безопасный C#...
    Вот тебе и безопасный Python...

    Бот, уйди.

     
     
  • 3.13, Michael Shigorin (ok), 12:00, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Бот, уйди.

    Это вряд ли бот -- скорее человек, который купился на тыканье в проблемы (вполне реальные) языков с ручным управлением памятью и рекламу (обычно лукавую) языков с автоматическим управлением памятью.

    А ведь это несколько классов проблем, которые размениваются на другие классы проблем -- и не отменяют третьих, что порой и подводит уверовавших в "это же безопасный язык"...

     
     
  • 4.32, Comdiv (ok), 15:02, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > рекламу (обычно лукавую) языков с автоматическим управлением памятью.

    Можете чуть конкретней рассказать про лукавую рекламу? Где её видели, когда и как оценивали объём отностительно нелукавой рекламы?

     
     
  • 5.34, Michael Shigorin (ok), 15:29, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> рекламу (обычно лукавую) языков с автоматическим управлением памятью.
    > Можете чуть конкретней рассказать про лукавую рекламу?

    Например, когда играют на предположениях и "логичных" выводах; когда рассказывают о решаемых проблемах, но умалчивают о создаваемых взамен.

    > Где её видели, когда и как оценивали объём отностительно нелукавой рекламы?

    Много где, и здесь нередко; на глазок, благо пристрелямши.

     
  • 2.27, Аноним (-), 14:22, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пример небольшого ошибочного кода:

    int x;
    printf("Введите первое число: ");
    scanf("%d", &x);
    int y;
    printf("Введите второе число: ");
    scanf("%d", &y);
    printf("Сумма двух чисел: %d\n", x + y);

    Здесь 3 серьёзные ошибки. Кто-нибудь сможет найти все 3? Две, думаю, найдёт большинство знающих Си.

     
     
  • 3.28, Crazy Alex (ok), 14:52, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отсутствие обработки ошибок scanf (в частности, кривого ввода), интовое переполнение при сложении и UB при слишком большом введенном числе. Причём последнее не лечится.
     
     
  • 4.39, Аноним (-), 17:15, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Слишком большое введённое число - это частный случай обработки ошибок (ERANGE):
    https://www.securecoding.cert.org/confluence/display/c/INT05-C.+Do+not+use+inp

    Лечить здесь нечего, нужно просто проинформировать человека о превышении допустимых границ значений. В качестве альтернативы можно написать собственный scanf и использовать библиотеку для работы с длинными числами. Тоже несложно реализуется.

     
     
  • 5.44, Crazy Alex (ok), 19:50, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да. Что это я, в самом деле. Но тогда не представляю, какая там третья ошибка.
     
     
  • 6.46, Crazy Alex (ok), 20:11, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Да. Что это я, в самом деле. Но тогда не представляю, какая
    > там третья ошибка.

    Решил таки проверить - а вот таки есть подвох, не зря мне мерещилось.
    Вот это:

    r = scanf("%d", &x);
    printf("r=%d\n", r);

    радостно печатает единичку при  вводе чего-то аски длинного вроде 11111111111111111111111111 (что означает, что один элемент был успешно распарсен), при этом в x попадает -1.

    Если делать как положено:

    errno = 0;
    r = scanf("%d", &x);
    err = errno;
    printf("r=%d, errno=%d\n", r, err);

    то ERANGE ловится отлично.

     
     
  • 7.58, Аноним (-), 09:34, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Насчёт трёх ошибок Вы правильно определили. Да, их всего там было 3. Пропущено две обработки ошибок и нет проверки на переполнение. Подразумевалось, что ввод слишком большого числа - это частный случай обработки ошибок, поэтому отдельной ошибкой его считать бессмысленно.
     
  • 7.60, Аноним (-), 09:44, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > errno = 0;
    > r = scanf("%d", &x);

    Кстати, устанавливать errno в данном случае в 0 было абсолютно бессмысленно, т.к. он выставляется только при возвращении функцией значения -1. Достаточно проверять возвращаемое значение.

     
     
  • 8.65, Crazy Alex (ok), 18:08, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    include stdio h include errno h int main void -- int x, r, err -- pr... текст свёрнут, показать
     
     
  • 9.66, Аноним (-), 19:08, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Да, действительно, прошу прощения, не прочёл документацию до конца, этой функцие... текст свёрнут, показать
     
  • 3.31, Crazy Alex (ok), 14:59, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Но вообще все давно в курсе, что scanf - не идеал ни разу, и обычно лучше применять отдельное строки и strtoX()
     
     
  • 4.40, Аноним (-), 17:29, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Не идеал, если требуется распарсить строку согласно форматированию, либо если вв... большой текст свёрнут, показать
     
     
  • 5.45, Crazy Alex (ok), 20:01, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Разумеется - читаем в буфер, токенизируем (а то и полноценный разбор), потому преобразования. Ситуации, когда это не нужно - экзотика, в общем-то.

    Насчёт errno - вообще чушь, простите. Устанавливайте его в 0 непосредственно до вызова функции, проверйте сразу после - и всё отловите.

     
     
  • 6.59, Аноним (-), 09:41, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Насчёт errno - вообще чушь, простите. Устанавливайте его в 0 непосредственно до
    > вызова функции, проверйте сразу после - и всё отловите.

    Вот в этом то и вся суть. Об этой особенности мало кто знает. Подобные ситуации и ведут за собой код с ошибками. Поэтому считаю, что необходимо популяризовать подобные примеры ошибочного кода с объяснениями. Т.к. новость про уязвимость в библиотеке на языке Си, с большой вероятностью сюда могут заходить люди знающие язык Си на достаточно хорошем уровне. Возможно, кто-то узнает для себя что-либо полезное.

     
     
  • 7.61, Michael Shigorin (ok), 14:40, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > считаю, что необходимо популяризовать подобные примеры ошибочного кода с объяснениями

    Может, попробовать в рамках http://rosettacode.org ?  Примеры там уже есть, остаётся предложить рубрику контрпримеров.

    PS: пришлось добавить пробел, автолинкер захватил лишнего.

    PPS: надо же, читаю тут http://odnako.su/hi-tech/pc-hardware/-483565-obzor-i-sravnitelnoe-testirovani и вижу на перекликающуюся тему:

    ---
    Также можно использовать примеры из коллекции SAMATE американского института NIST.
    ---

     
     
  • 8.62, Аноним (-), 15:34, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Я лишь подаю идеи, моего энтузиазма и свободного времени хватает пока только на ... текст свёрнут, показать
     
  • 8.63, Аноним (-), 17:41, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Интересные советы там даются по написанию кода под Эльбрус Из них можно сделать... текст свёрнут, показать
     
  • 2.43, Аноним (-), 19:13, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Вот тебе и безопасный си...

    Ну, понимаешь, "либы" на бидоне спросом не пользуются. Хотя-бы потому что кроме как из бидона ниоткуда и не вызываются.

    А так вон в вебне ломают и без всяких сей. WormPress даже обозвали характерно. За это самое.

     
     
  • 3.47, Аноним (-), 21:05, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Казалось бы, причем тут бидоны, но кто о чем, а подгорающий о своем, о неоси... большой текст свёрнут, показать
     
     
  • 4.53, Crazy Alex (ok), 00:54, 31/12/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Предлагаешь на любой чих таскать за собой питон и бороться с его версиями?
     
  • 4.71, Аноним (-), 01:43, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Казалось бы, причем тут бидоны, но ... кто о чем, а подгорающий
    > о своем, о неосиленном^W наболевшем.

    Судя по вашему коменту - вам виднее.

    > И откуда вы такие, ыкспертные знатоки всего и вся, беретесь только?
    > [CODE]#include <Python.h>

    И все бы это замечательно, но это - не сишная либа. А если уж HTTP сервер из сей хочется - так есть lwan, без горбатой питонятины с ее версиепроблемами и прочими радостями. И быстрый как понос к тому же.

     
     
  • 5.73, Аноним (-), 04:47, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    >>> "либы" на бидоне спросом не пользуются. Хотя-бы потому что кроме как из бидона ниоткуда и не вызываются.
    > И все бы это замечательно, но это - не сишная либа.

    То либа на бидоне кроме как из бидона ниоткуда не вызывается, то это вдруг уже не сишная либа.  
    > А если уж HTTP сервер из сей хочется - так есть lwan,

    В общем, зачетный юлеж.


     
     
  • 6.74, Аноним (-), 14:38, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я не знаю как еще понятнее тебе объяснить что сишники такой либой пользоваться... большой текст свёрнут, показать
     
     
  • 7.75, Аноним (-), 16:25, 01/01/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> То либа на бидоне кроме как из бидона ниоткуда не вызывается, то
    >> это вдруг уже не сишная либа.
    > Я не знаю как еще понятнее тебе объяснить что сишники такой "либой"
    > пользоваться не будут.

    Видишь ли, о великий знаток всего и вся, "не будут" и "не смогут" - две большие разницы.
    https://docs.python.org/3/extending/embedding.html

    >> В общем, зачетный юлеж.
    > Так не юли. Твои кривые эрзацы типа-либ мало кому нужны.

    Классно ты срулил с темы. Хотя тебя за язык вроде никто не тянул. Не нес бы, как обычно, с умным видом очередной бред и глядишь, не пришлось бы в очередной раз изворачиваться и переводить стрелки.

     

  • 1.8, Аноним (-), 11:34, 30/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    какая то странная "уязвимость", больше похоже на "баг"
     
  • 1.11, Ящ (ok), 11:41, 30/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Круто. Как нашли баг?
     
     
  • 2.17, Куяврег (?), 12:59, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Миллионы пар попенсорц-глаз 20 лет искали уязвимость.

    нужно было прятать код - это точно решает все проблемы

     
  • 2.20, Аноним (-), 13:11, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    21

    > The current public release, libpng 1.6.27, fixes a 21-year-old null- pointer dereference (see warning below) and includes some minor build tweaks.

     
  • 2.21, anonimous (?), 13:14, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +7 +/
    А libpng, кстати, и этой вашей проприетарной pvs-studio проверяли, и как-то упустили сию уязвимость.
     

  • 1.18, Аноним (-), 13:08, 30/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Когда ждать deb'ы для Trusty 14.04 LTS? (поддержка же вроде бы до 2019 года должна быть)
    https://launchpad.net/libpng/+packages
     
  • 1.38, iZEN (ok), 17:10, 30/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    На FreeBSD вчера обновили - http://www.freshports.org/graphics/png/
     
     
  • 2.49, Я. Р. Ош (?), 22:42, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • +/
    И че? В генту тоже вчера.
     
     
  • 3.50, iZEN (ok), 22:45, 30/12/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > И че? В генту тоже вчера.

    А где посмотреть список последних обновлений?


     

  • 1.56, Черный Властелин (?), 03:40, 31/12/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не поверишь, eix-diff
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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