The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Критическая уязвимость в GnuTLS. Разработчик OpenLDAP рекоме..., opennews (??), 05-Мрт-14, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


13. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от Аноним (-), 05-Мрт-14, 12:40 
Позорный 'goto'
Ответить | Правка | Наверх | Cообщить модератору

15. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  –1 +/
Сообщение от Аноним (-), 05-Мрт-14, 12:47 
> Позорный 'goto'

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

Ответить | Правка | Наверх | Cообщить модератору

17. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от Маленькая Серая Мышка (?), 05-Мрт-14, 12:57 
ИЧСХ, совсем недавно в яблочной продукции была ровно та же фигня, только там был лишний goto fail; и отсутствие скобок в теле if.
Ответить | Правка | Наверх | Cообщить модератору

19. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от Аноним (-), 05-Мрт-14, 12:59 
> ИЧСХ, совсем недавно в яблочной продукции была ровно та же фигня, только
> там был лишний goto fail; и отсутствие скобок в теле if.

ИЧСХ, "совсем недавно" мыли сотни багов, и с goto, и не с goto, и со скобками и без скоок.

Ответить | Правка | Наверх | Cообщить модератору

60. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от 123 (??), 05-Мрт-14, 15:18 
Я дофига. Goto тяжко отлаживать и в крупных проектах очень матерям. Хотя тот-же case куда опаснее в неумелых руках.
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

93. "Критическая уязвимость в GnuTLS, существенно влияющая на..."  +3 +/
Сообщение от arisu (ok), 05-Мрт-14, 18:54 
> Я дофига. Goto тяжко отлаживать и в крупных проектах очень матерям.

зачем же вы заставляете матерей отлаживать крупные проекты? наймите программистов уже.

Ответить | Правка | Наверх | Cообщить модератору

140. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от Аноним (-), 07-Мрт-14, 04:11 
> Я дофига. Goto тяжко отлаживать и в крупных проектах очень матерям. Хотя
> тот-же case куда опаснее в неумелых руках.

Вы даже ваш спич на форуме отладить не можете. Куда уж вам крупные проекты отлаживать.

Ответить | Правка | К родителю #60 | Наверх | Cообщить модератору

65. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от Аноним (-), 05-Мрт-14, 15:43 
нормальный программист легко обойдется без goto, на что не способен выросший на васике
Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

71. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +1 +/
Сообщение от Маленькая Серая Мышка (?), 05-Мрт-14, 16:32 
Машиной Тьюирнга он обойдется, сделанной из спичек и изоленты.
Ответить | Правка | Наверх | Cообщить модератору

141. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от Аноним (-), 07-Мрт-14, 04:12 
> Машиной Тьюирнга он обойдется, сделанной из спичек и изоленты.

Может программмить виртуальный процессор понимающий subleq, это даже интереснее, пожалуй.

Ответить | Правка | Наверх | Cообщить модератору

79. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +1 +/
Сообщение от www2 (??), 05-Мрт-14, 17:33 
> нормальный программист легко обойдется без goto, на что не способен выросший на
> васике

Сравните два варианта кода:

if (error1)
{
  free(ptr1);
  free(ptr2);
  free_structure(stru);
  return ERROR;
}

... /* Много кода */

if (error2)
{
  free(ptr1);
  free(ptr2);
  free_structure(stru);
  return ERROR;
}

Или

if (error1)
  goto error;

... /* Много кода */

if (error2)
  goto error;

error:
  free(ptr1);
  free(ptr2);
  free_structure(stru);
  return ERROR;

Теперь нужно добавить ещё одну структуру, которую нужно очищать при выходе. Какова вероятность, что добавив освобождение этой структуры в условный блок error1 вы не забудете про условный блок error2 в первом случае? И какова вероятность того, что вы забудете это сделать во втором случае и не обнаружите этого?

Нормальный программист обойдётся. Только выбор не всегда очевиден, как это представляется на первый взгляд.

Ответить | Правка | К родителю #65 | Наверх | Cообщить модератору

121. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  –1 +/
Сообщение от Михаил (??), 06-Мрт-14, 08:59 
нормальный в таком случае функцию error() сделает и будет ее вызывать.
Ответить | Правка | Наверх | Cообщить модератору

134. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +1 +/
Сообщение от тоже Анонимemail (ok), 06-Мрт-14, 20:54 
Это С, напоминаю. Чтобы обработать локальные ptr1, ptr2, ..., их нужно будет в эту функцию передать. В результате вместо этого кода в столбик получаем практически то же самое в списке параметров. Забыть добавить что-то в обоих случаях сразу, конечно, будет сложнее.
Но логика получается в значительной степени неестественная.
Другое дело, что никто не мешает вынести этот блок в конец метода и все перед ним заключить в условия if(!error_happened) после первой же возможности ошибки. А поскольку выделенную память все равно нужно освободить, то и функцию желательно привести к единому выходу, перед которым это освобождение будет естественным образом происходить. Goto здесь разве что экономит память, которую придется потратить на флаги ошибок. Ну, и несколько лишних проверок тех флагов потребуются. Острой необходимости в goto нет.
Вообще if(condition) goto mark; ... mark: совершенно равнозначно if(!condition) { ... }
Ответить | Правка | Наверх | Cообщить модератору

152. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +/
Сообщение от www2 (??), 07-Мрт-14, 18:26 
> нормальный в таком случае функцию error() сделает и будет ее вызывать.

Ага, на каждую функцию по функции error. error для error'а потом ещё написать.

Ответить | Правка | К родителю #121 | Наверх | Cообщить модератору

95. "Критическая уязвимость в GnuTLS, существенно влияющая на..."  +1 +/
Сообщение от arisu (ok), 05-Мрт-14, 18:55 
> нормальный программист легко обойдется без goto, на что не способен выросший на
> васике

это мы видели, да. вон, выше даже пример приведен, как «нормальные программисты обходятся без goto при помощи копипасты». зато гордятся, что «без goto».

Ответить | Правка | К родителю #65 | Наверх | Cообщить модератору

114. "Критическая уязвимость в GnuTLS, существенно влияющая на без..."  +2 +/
Сообщение от Ytch (ok), 06-Мрт-14, 00:16 
> нормальный программист легко обойдется без goto

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

Ответить | Правка | К родителю #65 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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