URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 96105
[ Назад ]

Исходное сообщение
"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."

Отправлено opennews , 01-Июн-14 22:55 
В GnuTLS 3.3.3, 3.2.15 и 3.1.25 (http://www.gnutls.org/news.html), свободной библиотеке с реализацией протоколов SSL, TLS и DTLS и функций для работы с различными типами сертификатов, устранена опасная уязвимость (http://www.gnutls.org/security.html#GNUTLS-SA-2014-3) (CVE-2014-3466). Проблема  проявляется (https://bugzilla.redhat.com/show_bug.cgi?id=1101932) только при использовании библиотеки в клиентских системах  при попытке установки защищённого соединения с сервером, подконтрольным злоумышленнику.


Уязвимость вызвана  отсутствием (https://www.gitorious.org/gnutls/gnutls/commit/688ea6428a432...) корректной проверки размера идентификатора сеанса в функциях read_server_hello() и _gnutls_read_server_hello(), которые используются для обработки сообщения ServerHello в процессе установки защищённого соединения. Отправка сервером  пакета со слишком большим идентификатором может привести к повреждению областей памяти приложения. Не исключается возможность использования уязвимости для организации выполнения кода атакующего.


Также можно отметить выпуск (http://lists.gnu.org/archive/html/help-libtasn1/2014-05/msg0...) используемой в GnuTLS библиотеки  Libtasn1 3.6, в котором устранены три уязвимости (CVE-2014-3467 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3467), CVE-2014-3468 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3468), CVE-2014-3469 (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3469)). Уязвимости могут привести к краху приложения при обработке специально скомпонованных данных в формате ASN.1. Кроме того, компания Red Hat обратила внимание (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-3465) на уязвимость (CVE-2014-3465) в GnuTLS, которая может привести к разыменованию NULL-указателя и краху приложения при обработке x509-сертификата с некорректным OID-идентификатором. Проблема  была устранена 4 месяца назад в выпусках GnuTLS 3.1.20 и 3.2.10 без публикации отчёта об уязвимости.

URL: http://openwall.com/lists/oss-security/2014/05/30/2
Новость: http://www.opennet.me/opennews/art.shtml?num=39901


Содержание

Сообщения в этом обсуждении
"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 01-Июн-14 22:55 
> серьёзной уязвимости

нужно срочно менять весь штат погромиздов openssl и gnutls.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Анонимный , 01-Июн-14 22:57 
Нужно менять няшную сишечку на более безопасный язык.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 01-Июн-14 23:00 
тоже верно

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Адекват , 02-Июн-14 08:49 
> тоже верно

Хуерно, все такие не купаться прям иксперты - программисты ssl/tls у них бдылокодеры, СИ понимаешь плохой, сами только на опеннете могут онанировать, зато совершенно точно сказали в чем порблема.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 15:45 
я ващет ядро разрабатываю

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Sluggard , 02-Июн-14 20:47 
Пушечное, видимо.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 17:25 
АНБ опенчует.
Опять же, ведроиды рутовать можно.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 01-Июн-14 23:40 
Например такой как C# или Java, которые убивают процентов так 25 общей производительности программы ? Набыдлокодить можно на любом языке, главное уметь вовремя найти этот код и исправить его. Ваш аргумент не может быть причиной перехода с более-менее идеального языка на всякие там изделия оряклятины и мекрософта.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Анонимный , 01-Июн-14 23:49 
"А 1000 знаков в минуту можете? - Могу, но такая фигня получается..."

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 01-Июн-14 23:55 
Ну почему же обязательно C# или Java. OCaml например - хороший безопасный Си-заменитель. Там есть, конечно, некоторое количество функциональных фишечек, но пользоваться ими необязательно.

Кстати, по поводу производительности - вы плохо себе представляете среднестатистический код на Си, с которым и хороший компилятор мало что может сделать, кроме застрелиться от огорчения. Можно вытянуть на Си и поболее 25 процентов относительно .Net или JVM, но это хорошо умея, хорошо понимая, и аккуратно измеряя - что в природе почти не встречается.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 02-Июн-14 00:46 
Посмотрел синтаксис вашего OCaml и подумал пор себя "Уж лучше тогда уже пожертвовать производительностью. чем писать на перле"
О производительности я я сужу по работе программ в целом, как работает та или иная программа, которая выполняет одно и то-же действие или конкретный алгоритм на разных ЯП. Сравнения производительности различных ЯП можно найти в той-же сети :)

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 01:23 
Это вы смотрели в стандартное "OCaml - это такой лиспохаскель, сейчас мы вам расскажем про сладкие монадки", а я ведь заранее предупредил.

> лучше тогда уже пожертвовать производительностью. чем писать на перле

В 2014 году писать на перле и жертвовать производительностью - это одно и то же. А так-то с ним всё хорошо, даже вот и монадки есть, если кому надо - http://9ch.in/monads/

> Сравнения производительности различных ЯП можно найти в той-же сети

Так вот у OCaml с ней всё как раз очень хорошо. Разве что GC не параллелится по ядрам, ну так в Си его вообще нет.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 02-Июн-14 01:56 
Я не смотрел примеры программ на этом языке, но тут с невооруженного взгляда видно, что он из разряда языков, синтаксис у которых такой-же страшный, как у перла, возможно даже более прогрессивный чем перл в плане запутанности. Честно говоря даже не представляю, как должен будет перевернуться мир, чтобы он вытеснил Си, хоть в чем-то :)
>> Так вот у OCaml с ней всё как раз очень хорошо. Разве что GC не параллелится по ядрам, ну так в Си его вообще нет.

В языке, которым управляет только лишь программист и только от него зависит результат выполнения программы, этого и не нужно


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 02:20 
> Я не смотрел примеры программ на этом языке, но тут с невооруженного взгляда видно

Замечательная фраза. Сразу вспоминается Пастернак.

> из разряда языков, синтаксис у которых такой-же страшный, как у перла

У перла синтаксис Си-подобный, как известно.
Может быть у вас какие-то нестандартные понимания страшности?
Вы не любитель APL случайно?

> В языке, которым управляет только лишь программист

А вы посмотрите на досуге что там получается у того же банального gcc с -O3 и прочими -msse3 на выходе.
А потом посмотрите как это выполняется на современном out-of-order процессоре, с branch predictions и многоассоциативным кэшами.
Степень вашей уверенности в контроле программиста за ситуацией может сильно поменяться.

> и только от него зависит результат выполнения программы

Результат - он и в декларативных языках останется тем же, хотя порядок вычислений там вообще не определяется явно.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 02-Июн-14 02:32 
>> У перла синтаксис Си-подобный, как известно.
>> Может быть у вас какие-то нестандартные понимания страшности?

Вы случаем не забыли, как вообще выглядит синтаксис Си, может всё-таки посмотрите пример helloword на си и на перле, чтобы начать различать эти два языка ?
У меня, впрочем как и у всех людей вполне стандартные понимания того, как должен выглядеть синтаксис языка, на котором в последующем кто-то должен будет писать и судя по целевой аудитории OCaml, нестандартными взглядами обладают как раз те, кто на нем пишут свои программы. Лично мне было бы затруднительно на нем что-либо писать и тем более читать
>> А вы посмотрите на досуге что там получается у того же банального gcc с -O3 и прочими -msse3 на выходе.

Я стараюсь не использовать флаг -O3, так как он напрочь вычеркивает некоторые внутренние оптимизации в самой программе, считая их лишними
>> Результат - он и в декларативных языках останется тем же, хотя порядок вычислений там вообще не определяется явно.

Всё верно, каждый компилятор по-своему вычисляет порядок действий инструкций и по-своему описывает алгоритм их использования


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 02:51 
> чтобы начать различать эти два языка

А вы не собираетесь начать различать смысл слов "подобный" и "идентичный"?

> У меня, впрочем как и у всех людей

[citation needed] - с результатами опроса всех людей.

> стандартные понимания того, как должен выглядеть синтаксис языка

И как же он должен выглядеть? И не могут ли существовать разные синтаксисы?

> на котором в последующем кто-то должен будет писать

Пишет ли кто-то на чём-то кроме Си, по вашему мнению?

> Лично мне было бы затруднительно на нем что-либо писать и тем более читать

Тут сомнений нет, действительно. Если для вас у Си и перла сильно отличающийся синтаксис, малейшие отклонения от единственно знакомого для вас действительно могут представлять непреодолимые трудности.

> Я стараюсь не использовать флаг -O3, так как он напрочь вычеркивает некоторые внутренние оптимизации в самой программе, считая их лишними

И какой же вариант работает быстрее на том же i7 - ваш или gcc-шный?
И как удаётся gcc вычеркивать ваши оптимизации? Они ведь у вас ассемблерные, верно?
Или вы научились писать SIMD-инструкции прямо на Си?


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Perl_Jam , 02-Июн-14 03:08 
господа, может вы перестанете? если кто-то неумеет готовить си, ссзб, он и на бейсике налажает. хватит пенять на си, коль руки не из того места. согласен с оратором, в сях программер рулит тем, что он делает. полностью. а как и насколько квалифицировано - это уже другой вопрос.
что же касается gcc-специфичных оптимизаций, имхо вопрос оффтоп. и да, дамы и господа, упираясь в компиляцию кода gcc с оптимизациями вы забываете, чт огенерят трансляторы/компиллеры других языков
салют!

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 03:30 
> если кто-то неумеет готовить си, ссзб

Так практически никто и не умеет. И, к сожалению, ЗБ он не только СС, а и пользователям его творений.

> он и на бейсике налажает

Налажает, да вреда от того много не случится.

> в сях программер рулит тем, что он делает. полностью

И вам почитать про современные процессоры. И компиляторы.

>  упираясь в компиляцию кода gcc с оптимизациями вы забываете, чт огенерят трансляторы/компиллеры других языков

Нет, не забываем, с чего вы взяли?
Вероятно, вы имеете в виду что генерят они что-то очень медленное и плохое. Ну вот посмотрите, например, что генерит LuaJIT из такой вот высокоуровневой конструкции

>[оверквотинг удален]
>0bcaffd0  movaps xmm5, xmm7
>0bcaffd3  movaps xmm7, xmm1
>0bcaffd6  addsd xmm7, xmm5
>0bcaffda  ucomisd xmm7, xmm0
>0bcaffde  jnb 0x0bca0024        ->5
>0bcaffe4  movaps xmm5, xmm7
>0bcaffe7  mulsd xmm5, xmm5
>0bcaffeb  addsd xmm6, xmm5
>0bcaffef  jmp 0x0bcaffd0        ->LOOP
>---- TRACE 1 stop -> loop

Совсем неплохо, на мой скромный взгляд.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 03:31 
Оверквотингом было сочтено вот что:

> require "fun" ()
> -- calculate sum(x for x^2 in 1..n)
> n = 100
> print(reduce(operator.add, 0, map(function(x) return x^2 end, range(n))))


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 02-Июн-14 16:01 
>> А вы не собираетесь начать различать смысл слов "подобный" и "идентичный"?

А вы ?
>> И как же он должен выглядеть? И не могут ли существовать разные синтаксисы?

Вы когда-нибудь решали какие-либо задачки по программированию на олимпиадах ? вы не заметили одну особенность - в каждой задачке вам приведен пример на таких языках, как:
a) Алгоритмический
b) С
c) Basic
Синтаксис этих языков является наиболее понятным и знания этих языков по сути имеются у процентов так 99% программистов. Написав бы там простенький алгоритм на вашем OCaml, много ли кто смог его прочитать ?

>> Пишет ли кто-то на чём-то кроме Си, по вашему мнению?

Я, например, на ассемблере иногда

>> Тут сомнений нет, действительно. Если для вас у Си и перла сильно отличающийся синтаксис, малейшие отклонения от единственно знакомого для вас действительно могут представлять непреодолимые трудности.

Конечно же у Си и перла очень много всего общего, даже вот этот пример, взятый с лурка :
"`$=`;$_=\%!;($_)=/(.)/;$==++$|;($.,$/,$,,$\,$",$;,$^,$#,$~,$*,$:,@%)=(
$!=~/(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)/,$"),$=++;$.++;$.++;
$_++;$_++;($_,$\,$,)=($~.$"."$;$/$%[$?]$_$\$,$:$%[$?]",$"&$~,$#,);$,++
;$,++;$^|=$";`$_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=`"
Просто прекрасно демонстрирует схожесть с Си, может и в Си нынче можно не использовать типы данных и даже операторы в коде ?

>> И какой же вариант работает быстрее на том же i7 - ваш или gcc-шный?

Конечно же же мой, неужели какой-то там компилятор сгенерирует код лучше меня
>> И как удаётся gcc вычеркивать ваши оптимизации? Они ведь у вас ассемблерные, верно?

Вы хоть немного понимаете, как работают эти флаги оптимизации и каким именно образом они получают более оптимизированный код по сравнению с компиляцией без этих флагов ? Думаю вам документация расскажет по-лучше меня обо всем.
>> Или вы научились писать SIMD-инструкции прямо на Си?

Как говорится - опыт, всё приходит с опытом..


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 16:54 
>А вы ?

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

>когда-нибудь решали какие-либо задачки по программированию на олимпиадах ?

Разумеется, нет. В цирке тоже не выступал.

>a) Алгоритмический
>b) С
>c) Basic

Какие-то убогие у вас олимпиады. Вы б лучше в ICFP поучаствовали, оно и веселей. Заодно б узнали хотя бы ML- и Lisp-подобные синаксисы, для общего развития. Не знаю что такое "алгоритмический", но у C и Basic синаксис схожий.

>Синтаксис этих языков является наиболее понятным и знания этих языков по сути имеются у процентов так 99% программистов

Ну да, Си-подобный. Такой же у перл, PHP, и чего только не.
И что?

>Написав бы там простенький алгоритм на вашем OCaml, много ли кто смог его прочитать ?

Да кто угодно смог бы. Вы главное в функциональные дебри не лезьте, пишите как на Си, и всё будет хорошо и понятно.

let rev_inplace ar =
    let i = ref 0 in
    let j = ref (Array.length ar - 1) in
    (* terminate when the upper and lower indices meet *)
    while !i < !j do
      (* swap the two elements *)
      let tmp = ar.(!i) in
      ar.(!i) <- ar.(!j);
      ar.(!j) <- tmp;
      (* bump the indices *)
      incr i;
      decr j
    done

Всей разницы - разыменование ссылки, которые вместо указателей, не * а !, и скобочки лишние не нужны. И стрелочка для присваивания.

>этот пример, взятый с лурка

Вы понимаете что если вы не сможете примерно такое же написать на Си, то вы его не знаете?

>Конечно же же мой, неужели какой-то там компилятор сгенерирует код лучше меня

Пример в студию?

>Вы хоть немного понимаете, как работают эти флаги оптимизации и каким именно образом они получают более оптимизированный код по сравнению с компиляцией без этих флагов ?

Так вы код оптимизируете выставлением флагов компиляции? Но код при этом генерируете сами? Но -О3 при этом не используете?
Я запутался.

>>> Или вы научились писать SIMD-инструкции прямо на Си?
>Как говорится - опыт, всё приходит с опытом..

Рассказывайте, рассказывайте.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 02-Июн-14 18:04 
>> А мы различаем. Поэтому употребили термин "Си-подобный", а не какой-либо иной.
>> Если вы незнакомы с иными синтаксическими семействами, то, разумеется, мельчайшие несовпадения будут вам бросаться в глаза.

Если бы различали, язык бы не повернулся назвать перл - Си подобным языком.
Я предпочитаю изучать только те языки, которые по своему синтаксису более походят на язык программирования, а не на смесь конструкций из разных скриптовых языков, издали напоминающих perl
>> Разумеется, нет. В цирке тоже не выступал.

А не похоже!
>> Какие-то убогие у вас олимпиады. Вы б лучше в ICFP поучаствовали, оно и веселей. Заодно б узнали хотя бы ML- и Lisp-подобные синаксисы, для общего развития. Не знаю что такое "алгоритмический", но у C и Basic синаксис схожий.

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

>> Ну да, Си-подобный. Такой же у перл, PHP, и чего только не.
>> И что?

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

>> Да кто угодно смог бы. Вы главное в функциональные дебри не лезьте, пишите как на Си, и всё будет хорошо и понятно.

Да ну,конечно же все "обычных" программистов ? Увидев бы подобный пример где-нибудь на олимпиаде, у меня бы появилось острое желание настучать по рукам тому, кто написал этот  нелогичный кусок символов, логику которого видимо дано понять только "самым одаренным"

>> Вы понимаете что если вы не сможете примерно такое же написать на Си, то вы его не знаете?

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

>> Пример в студию?

Давно там, вас ждут

>> Так вы код оптимизируете выставлением флагов компиляции? Но код при этом генерируете сами? Но -О3 при этом не используете?

Я сам себе компилятор. конвертирую код на Си в чистейший машинный код и да, как вы уже догадались, у меня на клавиатуре всего две кнопки - 1 и 0.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 18:39 
> язык бы не повернулся назвать перл - Си подобным языком

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

> стандартные ЯП

Без комментариев.

> Увидеть точно такой-же пример на Си можно ?

Сколько угодно. http://www.ioccc.org


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 03-Июн-14 15:11 
>> Сколько угодно. http://www.ioccc.org

Простите, но вы точно правильно воспринимаете мои посты ?
Я вас попросил мне дать точно такой-же пример, как я вам дал на перле который исключает любые операторы и типы данных, а вы мне даете ссылку на коллекцию обфусцированных сорцов, которые я итак могу прочитать. Вот даже специально распарсил сорец под названием "birken"(http://www.ioccc.org/2013/birken/):


char*_ = "'""/*";
#include <stdio.h>


int E,L,O,R,G[42][21],h[2][42][21],g[3][8],c[42][42][2],f[42];
char d[42];
void v( int b,int a,int j) {
    printf("\33[%d;%df\33[4%d""m  ",a,b,j);
}
void u() {
    int T,e;
    for(T=0; T<42; T++)
    for(e=0; e<21; e++)
    if(h[0][T][e]-h[1][T][e]) {
        v(e+4+e,T+2,h[0][T][e]+1?h[0][T][e]:0);
        h[1][T][e]=h[0][T][e];
    }
    fflush(stdout);
}
void q(int l,int k,int p) {
    int T,e,a;
    L=0;
    O=1;
    while(O) {
        for(T=0; T<4&[ T++) {
            e= k+c[l] [T][0];
            h[0][L-1+c[l][T][1]][p?20-e:e]=-1;
        }
        for(T=0; T<4; T++) {
            e=k+c[l][T][0];
            a=L+c[l][T][1]+1;
            if(a==42 || h[0][a][p?20-e:e]+1) {
                O=0;
            }
        }
        for(T=0; T<4; T++) {
            e= k+c[l][T][0];
            h[0][L + c[l][T][1]][p?20-e: e]=g[1][f[p?19+l:l]];
        }
        L++;
        u();
    }
    for(T=0; T<42; T++) {
        for(e=0; e<21; e++)
        if(h[0][T][e]<0) break;
        for(a=0; a<21&&e==21; a++) {
            for(L=T; L; L--) {
                h[0][L][a]=h[0][L-1] [a];
            }
            h[0][0][a]=-1;
        }
    }
    u();
}
int main() {
    int T,e,t,r,i,s ,D,V,K;
    printf("\33[2J\33[?25l");
    for(T=0; T<8; T++)
    g[i=1][T]=7-T;
    R--;
    for(T=0; T<42; T++)
    for(e=0; e<21; e++)
    G[T][e]--;
    while(fgets(d,42,stdin)) {
        r=++
         R;
        for(T=0; T<17; T++) {
            e=d[T]-48;
            d[T]=0;
            if ((e&7)==e) {
                g[0][e] ++;
                G[R][T+2]=e;
            }
        }
    }
    for(T=0; T<8; T++)
    if(g[0][7-T]) {
        t=g[i][O];
        g[i][O++]=g[i][T];
        g[i][T]=t;
    }
    for(T=0; T<8; T++)  g[2][g[i][T]]=T;
    
    for(T=0; T<R+i; T++)
    for(e=0; e<21; e++)
    
    if(G[T][e]+i) G[T][e]=g[2][G[T][e]];
    for(T=0; T<19; T++)
      for(t=0; t<2; t++) {
        f[T+t+T]=(T["+%#,4" "5>GP9$5-,#C?NX"]-35)>>t*3&7;
        for(e=0; e<4; e++) {
            c[T][e][t]=("5'<$=$8)Ih$=h9i8'9" "t=)83)l4(99(g9>##>4(" [T+t+T]-35)>>e*2&3;
        }
    }
    for(T=0; T<15; T++) {
        s=T>9?21:(T&3)-3?15:36;
        for(e=0; e<s; e++)
        for(t=0; t<2; t++)
        c[T+19][e][t]="6*6,8*6.608.6264826668865::(+;0(6+6-6/8,61638065678469.;88))()3(6,8*6.608.6264826668865:+;4)-*6-6/616365,-6715690.5;,89,81+,(023096/:40(8-7751)2)65;695(855(+*8)+;4**+4(((6.608.6264826668865:+;4+4)0(8)6/61638065678469.;88)-4,4*8+4(((60(/6264826668865:+;4-616365676993-9:54+-14).;./347.+18*):1;-*0-975/)936.+:4*,80987(887(0(*)4.*""/4,4*8+4(((6264826668865:+;4/4-4+8-4)0(8)6365678469.;88)1/(6*6,6.60626466686:8)8-8*818.8582/9863(+;/""*6,6.60626466686:4(8)8-8*818.8582/9863(+;/,6.60626466686:8-818.8582/9864*4+4(0())+;/.60626466686:8/8380/7844,4-4*4+4(0())69+;/0626466686:818582/9864.4/4,4-4*4+4(0())+;"
[e+E+e+t]-40;
        E+=s+s;
    }
    for(T=0; T<45; T++) {
        if(T>i) {
            v(2,T,7);
            v(46,T,7);
        }
        v(2+T,44,7);
    }
    T=0;
    for(e=0; e<42; e++)
    for(t=0; t<21; t++)
     h[T][e][t]--;
    while(R+i) {
        s = D=0;
        if (r-R) {
            for(T=0; T<19; T++)
             if (G[R+i][T]+i) V=T/2;
            else if(G[R][T]+i) s++;
            if(s) {
                if(V>4) {
                    V=9-V;
                    D++;
                }
                V+=29;
                for(T=0; T<20; T++)
                q(c[V][T][0],c[V][T][i],D);
            }
        }
        for(T=0; T<19; T++)
        if((L=G[R][T])+i) {
            O=T-L;
            e=O>9;
            t=e?18-O :O;
            for(K=0; K<((t&3)-3? 16:37); K++)
                         {
                if(K) {
                    L=c[t+19][K-i][0];
                    O=c[t+19][K-i][i];
                }
                q(L,O,K && e);
            }
        }
        if(s)
        q(c[V][20][0], c[V][20][i], D);
        R--;
    }
    printf("\33[47;1f\33[?25h\33[40m");
    return 0;
}
Как появится время, обязательно изучу этот пример.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Elhana , 03-Июн-14 02:26 
На си так тоже можно:
long long n,u,m,b;main(e,r)char **r;{f\
or(;n++||(e=getchar()|32)>=0;b="ynwtsflrabg"[n%=11]-e?b:b*8+
n)for(r=b%64-25;e<47&&b;b/=8)for(n=19;n;n["1+DIY/.K430x9\
G(kC["]-42&255^b||(m+=n>15?n:n>9?m%u*~-u:~(int)r?n+
!(int)r*16:n*16,b=0))u=1ll<<6177%n--*4;printf("%llx\n",m);}

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Llvmn , 03-Июн-14 11:33 
Все эти примеры можно разобрать на составные части простым форматером текста и потом уже можно будет их спокойно прочитать. Товарищ пытался от вас добиться такого-же синтаксиса как в перле, состоящий из одних символов

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено ytnbtnbtn , 03-Июн-14 19:11 
>На си так тоже можно:

or(;n++||(e=getchar()|32)>=0;b="ynwtsflrabg"[n%=11]-e?b:b*8+

Это все ерунда. Проблема в том что на ц можно

for(i<9; i=0; i++)


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 03-Июн-14 20:23 
В Си можно всё!, но кое-что просто не нужно делать, например это :)

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 03-Июн-14 15:11 
>(.)(.).(.)(.)(.)(.)..(.)(.)(.)..(.)......(.)

Эммм...


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 18:22 
>И как удаётся gcc вычеркивать ваши оптимизации? Они ведь у вас ассемблерные, верно?

https://www.linux.org.ru/forum/development/10452829/page5
Тут конечно некислая доля наркомании, но идея понятна


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 18:40 
Спасибо, веселый тред.
А пальцем можно показать где gcc вычеркивает вручную сделанные ассемблерные оптимизации?

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Elhana , 03-Июн-14 02:48 
> А пальцем можно показать где gcc вычеркивает вручную сделанные ассемблерные оптимизации?

Просто есть большой шанс, что ваши вручную сделанные оптимизации на асме будут работать медленнее чем gcc-шные:
http://quetzalcoatal.blogspot.ru/2014/04/if-you-want-fast-co...


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 03-Июн-14 04:02 
Это я и пытался товарищу объяснить. Но безуспешно, разумеется.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено sorrymak , 02-Июн-14 08:50 
> OCaml например

Или Genie.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 16:55 
А он там вообще живой? Палочкой тыкали?

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 10:15 
> безопасный Си-заменитель

Как резиновая женщина?


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 09:39 
> убивают процентов так 25 общей производительности программы

И тут ты такой с пруфами.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено burjui , 03-Июн-14 14:29 
В случает Java пруфом является наличие VM. 25% там или нет, но невозможно заставить код в VM работать на той же скорости, что и идентичный по функциональности нативный код.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Mr. Cake , 02-Июн-14 11:25 
На самом деле C#, Java и вообще любой язык с промежуточным представлением и JIT-компилятором можно весьма ощутимо ускорить, если выкинуть жрущие те самые проценты производительности переходы в ядро (а это не только стек, но и состояние MMU, что _дорого_) и обратно на каждом syscall-е и переключении контекста потока. Ведь если есть изоляция на уровне "виртуальной машины" ничего не мешает эту "виртуальную машину" держать в пространстве ядра. Были даже какие-то экспериментальные ОС (в основном на шарпе, он, как ни странно, несколько лучше подходит для системного программирования за счёт того что стековые структуры и указатели там таки есть) реализующие эту идею.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Инкот , 01-Июн-14 23:57 
Например, Ада, Модула-2 - хорошие кандидаты для написания надёжного ПО

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 00:15 
Тогда уж на Coq или Agda, если о заведомой фантастике. Или на Charity, чтоб уж сразу.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 10:45 
> Тогда уж на Coq или Agda, если о заведомой фантастике. Или на
> Charity, чтоб уж сразу.

Как бездарно ты разбазариваешь свою эрудицию!


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 13:41 
Хотите записаться на платную консультацию?
Скажите прямо, кого нам стесняться.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Inome , 02-Июн-14 00:48 
Нэт! Си - стандарт программирования

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено sorrymak , 02-Июн-14 08:52 
Был. Когда-то.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 00:01 
>Нужно менять няшную сишечку на более безопасный язык.

Нет! Нужно менять подход к делу.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено lucentcode , 02-Июн-14 00:26 
Все люди склонны ошибаться. И никакое тестирование, а так-же различные методы анализа кода, не уберегут достаточно большой и сложный проект от ошибок. К сожалению, пока не изобрели ИИ, ошибки подобного рода будут всегда и в любом сложном ПО. Хотите большей надёжности - придётся жертвовать производительность.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Аноним , 02-Июн-14 03:35 
>Все люди склонны ошибаться. И никакое тестирование, а так-же различные методы анализа кода, не уберегут достаточно большой и сложный проект от ошибок. К сожалению, пока не изобрели ИИ, ошибки подобного рода будут всегда и в любом сложном ПО. Хотите большей надёжности - придётся жертвовать производительность.

Если ставить практическую задачу научиться строить безопасные системы на Си, то приходишь к ряду простых решении. Можно, к примеру, взять себе за правило написания функции или макросов доступа к данным переменных (или указателей структуры) с корректной проверкой границ доступа сразу после объявления структуры (то есть где-то после этапа проектирования но до начала реализации прикладной логики). Это не проблема того что люди склонны ошибаться, это личные проблемы хреновой организации процессов отдельного человека. Чтобы выработать подобные навыки - надо заниматься этими вопросами на деле, а не скрываться за созданием мусорного кода на всяких питонах и жабе.


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено еще 1 аноним , 02-Июн-14 09:06 
>>Нужно менять няшную сишечку на более безопасный язык.

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


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 01-Июн-14 23:57 
Так уже озаботились.
"Разработка OpenSSL, OpenSSH и NTP будет профинансирована Фондом поддержки ключевых открытых проектов" - http://www.opennet.me/opennews/art.shtml?num=39885

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Andrey Mitrofanov , 02-Июн-14 09:23 
> Так уже озаботились.

Там не _меняют. Там платят тем, что есть и _добавляют новых.

Чтоб поменяли, надо Майкрософту ещё больше денег дать (намёк Анониму#1), а уж они тогда...


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 11:24 
Ну нельзя ж так сразу людей выгонять.
Сначала аудит, а потом уж оргвыводы, по результатам аудита.

"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено Andrey Mitrofanov , 02-Июн-14 12:54 
> Ну нельзя ж так сразу людей выгонять.
> Сначала аудит, а потом уж оргвыводы, по результатам аудита.

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

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


"Обновление GnuTLS 3.3.3, 3.2.15 и 3.1.25 с устранением серьё..."
Отправлено rob pike , 02-Июн-14 13:40 
Ну так по-добровольчески попробовали уже - известно что получилось.
Теперь посмотрим что получится по-человечески, за деньги.