Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

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

Уязвимость в Ruby, эксплуатируемая для удалённого выполнения кода в GitLab

26.10.2026 09:57 (MSK)

Опубликованы корректирующие выпуски языка программирования Ruby 3.3.13, 3.4.12 и 4.0.9, в которых устранена критическая уязвимость (CVE-2026-110264), приводящая к целочисленному переполнению при компиляции специально оформленных регулярных выражений. Уязвимость может использоваться для атаки на проекты, написанные на языке Ruby и использующие внешние данные в регулярных выражениях. Среди прочего, подтверждена возможность эксплуатации уязвимости для удалённого выполнения кода в платформе совместной разработки GitLab. Проблема дополнительно блокирована в обновлениях GitLab 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 и 18.11.13. Уязвимости присвоен уровень опасности 10 из 10.

Уязвимость присутствует в движке регулярных выражений Onigmo и приводит к переполнению внутренних идентификаторов при компиляции шаблона с большим числом повторов. Проблема проявляется только в приложениях, использующих внешние данные в регулярных выражениях, обрабатываемых через методы Regexp.new, Regexp.union и Regexp.compile или литералы вида "/#{input}/". Ограничение размера регулярного выражения или времени его обработки через метод Regexp.timeout не блокирует уязвимость, так как для атаки могут использоваться короткие шаблоны.

В GitLab уязвимость может быть эксплуатирована неаутентифицированным пользователем из-за подстановки в регулярное выражение внешних данных. Детали метода эксплуатации пока не раскрываются (по правилам GitLab информация становится доступна спустя 30 дней после публикации исправления), при этом в сети уже фиксируются попытки осуществления атак на пользователей GitLab. Косвенными признаками осуществления атаки может служить увеличение числа аварийных завершений интерпретатора Ruby и рост ошибок в логах, связанных с истечением таймаута на отрисовку страницы при обработке org-файлов.

Помимо CVE-2026-110264 в движке регулярных выражений устранены ещё три уязвимости: CVE-2026-89078 (двойное освобождение памяти при невозможности парсинга шаблона после его изменения), CVE-2026-93577 и CVE-2026-97229 (целочисленные переполнения при расчёте размера компилируемого шаблона).

  1. Главная ссылка к новости (http://www.ruby-lang.org/en/ne...)
  2. OpenNews: Опубликован язык программирования Ruby 4.0
  3. OpenNews: Уязвимость в GitLab, допускающая удалённое выполнение кода (доступен эксплоит)
  4. OpenNews: Уязвимость в RubyGems.org, позволяющая подменить чужие пакеты
  5. OpenNews: Уязвимость в Ruby-SAML, позволяющая обойти аутентификацию в GitLab
  6. OpenNews: Уязвимость в библиотеке ruby-saml, приводящая к обходу аутентификации в GitLab
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66549-ruby
Ключевые слова: ruby, gitlab
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (105) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, FSA (ok), 10:58, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/–
    Забавно. Где-то была диаграмма популярности языков для веба. На первом месте был PHP с 70%. А на втором Ruby. Но когда нашли уязвимость в PHP - все стояли на ушах. А тут вообще всем пофигу :-D
     
     
  • 2.14, Аноним (14), 11:32, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +5 +/–
    А когда найдут дырень в расте, все скажут "да ладно, это вообще ерунда о которой даже думать не надо!"
     
     
  • 3.38, Смузихеб забывший пароль (?), 13:31, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    и вообще, это не дырень, так и задуманное отверстие безо всяких UB
     
     
  • 4.75, aname (ok), 17:27, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Безопастное!
     
  • 3.46, Анонимный аноним (?), 15:02, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Ты можешь увидеть разницу между интерпретатором и статическим скомпилированным бинарником?
     
  • 3.55, Гость (??), 15:35, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    дыры в расте будут без переполнений, качественные дыры, одобренные компилятором и прокладкой между стулом и клавиатурой.
     
  • 3.76, xPhoenix (ok), 17:28, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Когда найдут, тогда и поговорим.
     
  • 2.32, Аноним (32), 13:03, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/–
    да просто немного найдется проектов, которые позволяют выполнять регулярное выражение, полученное из пользовательского ввода
     
  • 2.45, опеншлёпивпродакшн (?), 14:41, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Самый популярный язык PHP, а не Python. И мы все это прекрасно понимаем.
     
  • 2.89, Аноним (89), 20:09, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Потому что в случае с PHP дырявыми оказались все сайты, а тут с условиями
     
  • 2.95, Ivan_83 (ok), 20:56, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Это всё потому что на одном итальянском ресурсе про IT давно обстебали рубистов по самое немогу, дальше уже стебать стрёмно - как в 101 раз добивать мёртвого :)
     
     
  • 3.101, Аноним (101), 21:04, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Это всё потому что на одном итальянском ресурсе про IT

    О, это великое итальянское IT!

    > давно обстебали рубистов по самое немогу, дальше уже стебать стрёмно

    Они поделились достижениями Италии в IT? Ну кроме изобретения лапше-кода?

     
     
  • 4.102, Ivan_83 (ok), 21:06, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Если вы не знаете про какой ресурс речь то разумнее было бы промолчать, для знающих о чём речь ваш наброс - сплошные лулзы.
     

  • 1.4, Аноним (4), 11:02, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    > if ((MemNumType)reg->num_null_check <= 0) return ONIGERR_TOO_MANY_NULL_CHECK;
    > if ((MemNumType)reg->num_repeat <= 0) return ONIGERR_TOO_MANY_RANGE_REPEAT;

    Бугуга! У этих гениев "количество попыток" - ЗНАКОВОЕ число.
    *лавров.jpeg*

    Ну а про то, что исправление файлике regcomp.c...
    "никогда такого не было и вот опять" (с)

    github.com/ruby/ruby/commit/63eda2681e24cdf9fbe45fdd8a3d8866f4f59878#diff-5185ea260e3b3fe88f7d8135f97e84c3c9e9f5827457e2252d5e378323dcdd2a

     
  • 1.5, Аноним (5), 11:08, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/–
    ONIGERR_TOO_MANY_NULL_CHECK  - по моему тут опечатка в коде
     
     
  • 2.7, Аноним (7), 11:16, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Борьба с master/slave продолжается.
     
  • 2.9, Аноним (9), 11:19, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +1 +/–
     
  • 2.17, Жироватт (ok), 11:47, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    NIGGER_NIGGA_NIGGA_TOO_MANY_NULL_CHECK
    Поправил
     
  • 2.50, Аноним (50), 15:23, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    R лишняя и пропущена H после O.
     
  • 2.62, Инопланетянин (?), 16:25, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > ONIGERR_TOO_MANY_NULL_CHECK  - по моему тут опечатка в коде

    Японцы же.

     

  • 1.6, Аноним (7), 11:13, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/–
    > GitLab для удалённого выполнения кода в Ruby.

    Поправил.

     
  • 1.8, Аноним (9), 11:18, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/–
    > двойное освобождение памяти
    > целочисленные переполнения

    и RCE 10 из 10 как вишенка на тортике сишного булщит бинго в безопасном руби))

    "С in CVE stands for C language" (c)

     
     
  • 2.10, Аноним (7), 11:24, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +2 +/–
     
     
  • 3.13, Аноним (13), 11:28, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • –4 +/–
     
  • 2.19, Аноним (19), 11:54, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Т.е. в том что динамический ЯП со сборщиком мусора дырявый виноват Си? А если в расте будет бага, это виноват С++ потому что LLVM написан на нем?
     
     
  • 3.25, Аноним (25), 12:09, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    > Т.е. в том что динамический ЯП со сборщиком мусора дырявый виноват Си?

    Кто же интересно дожен быть виноват, если исправления в onigmo.h, regcomp.c и regerror.c?
    В динамический ЯП со сборщиком мусора или в убогом недоязычке?

    > А если в расте будет бага, это виноват С++ потому что LLVM написан на нем?

    rustc написан на расте. Если бага будет там - то виноват раст.
    Если в LLVM - то с++.

     
     
  • 4.42, Аноним (42), 14:11, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    >Кто же интересно дожен быть виноват, если исправления в onigmo.h, regcomp.c и regerror.c?

    А если были бы исправления в файлах .rs?

     
  • 4.44, oneMetr (?), 14:30, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Прлшу простить за офтопик, не смог удержаться
    Вас заминусовали, фактически, за конструкцию
    switch (<где нужно поправить>) {
    case "*.h", ".c":
      return "C"
    case "*.rs":
      return "Rust"
    }

    Лучшее за сегодня! Ищем не там где потеряли...

     
     
  • 5.51, Аноним (51), 15:25, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > Прлшу простить за офтопик, не смог удержаться
    > Вас заминусовали, фактически, за конструкцию

    Я совершенно не обижаюсь, не все ж на сайте программисты.
    Думаю тут полно кодеров, админов, и другого обслуживающего персонала, типа уборщиков.

    Да и свитч в сишке страдает от Fall-through - в С23 пришлось чинить костылями (атрибут [[fallthrough]]).
    Но я сомневаюсь, что местные СИшники вообще стандарт читали 😁

     
     
  • 6.93, _ (??), 20:48, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ваши "программисты" последнюю лошадь в овраге доедают :)
    Замена их ИИ - факт свершившийся. Правда равно как и: "кодеров, админов, и другого" ...
    А вот уборщиков - хренЪ!, ЫЫ ещё долго не заменит. Вы ещё на их зарплату в овраге посидите ...
     
     
  • 7.94, Аноним (101), 20:56, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Ваши "программисты" последнюю лошадь в овраге доедают :)

    Казахи что ли?

    > Замена их ИИ - факт свершившийся. Правда равно как и: "кодеров, админов, и другого" ...

    Настолько свершившийся что HRюши ищут "девелоперов которые умеют работать с ИИ"))

    > А вот уборщиков - хренЪ!, ЫЫ ещё долго не заменит.

    Мой робот пылесос смотрит на твое сообщение скептически, хитро прищурив лидар.

    > Вы ещё на их зарплату в овраге посидите ...

    Ути бозе, как страшно!


     
  • 3.58, Аноним (58), 15:48, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Это даже интересно, как ты в расте добьешься cve из новости.
     
     
  • 4.59, Аноним (-), 15:53, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Это даже интересно, как ты в расте добьешься cve из новости.

    Если сильно постараться - думаю возможно.
    Например завернуть все в unsafe ибо "чего там коньпилятор мне указывает".

    Тут любят вспоминать Speykious и cve-rs
    Пришлось всего лишь найти баг в компиляторе и сделать кастомную реисплементацию mem::transmute и std::ptr::null()

     

  • 1.12, Аноним (13), 11:27, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    > int num_repeat;                /* OP_REPEAT/OP_REPEAT_NG id-counter */
    > int num_null_check;            /* OP_NULL_CHECK_START/END id counter */

    А кто-то может пояснить, почему счетчики сделаны int, а не unsigned int как это сделано несколькими строчками ниже?

    В чем был хитрый план? Прокидывать ошибки через отрицательные значения?

     
     
  • 2.16, Аноним (16), 11:42, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Да, в убогих недо-язычках из 70х нет нормального средства передачи ошибок.
    Поэтому приходится нарушать "применение типов" и лепить типы данных которые избыточны.

    В одной из недавних дыреней в libxml2 (после которой гугл выкинул ее их хрома), для размера рассчитываемого буфера использовали signed переменную.
    Чтобы функция могла вернуть ошибку -1.

    Ну а так как каст таких типов происходит неявно - то вот и читаем регулярно про очередную дыру.

     
     
  • 3.18, Аноним (7), 11:48, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    Го сейчас напряглось, идеоматически.
     
     
  • 4.23, Аноним (23), 12:04, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    > Го сейчас напряглось, идеоматически.

    У Го как бы есть тип error.
    И прям в официальном примере есть как его использоваться

    func Open(name string) (file *File, err error)
    f, err := os.Open("filename.ext")

     
     
  • 5.31, Аноним (5), 12:53, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    а что ж ты не упомянут if err != nil в следующей строке, которая всем мозолит глаза )
     
     
  • 6.41, Аноним (41), 13:40, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > а что ж ты не упомянут if err != nil в следующей строке, которая всем мозолит глаза )

    Эти все с вами в одной комнате?)
    Может кому-то и мозолит, зато тут есть отдельно f, а отдельно err.
    И не нужно запихивать в f -1 чтобы вернуть ошибку.

     
  • 6.53, Аноним (53), 15:30, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > if err != nil в следующей строке

    И чем это отличается от проверки результата на минус в обычных программах?

     
     
  • 7.61, Аноним (61), 16:11, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > И чем это отличается от проверки результата на минус в обычных программах?

    Как минимум тем что не нужен избыточный тип.
    В сишке в ошибке выше понадобился signed int, хоть по логике должен быть unsigned.

    Плюс в го ошибка это всего лишь интерфейс. Они может любую дополнительную информацию.

     
     
  • 8.116, Ivan_83 (ok), 22:56, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Я не понимаю с чего вы взяли что в С вам кто то что то должен Каждая программа ... текст свёрнут, показать
     
  • 5.37, Аноним (7), 13:25, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    В си тоже можно передать указатель, куда функция запишет код ошибки.
     
     
  • 6.49, Аноним (51), 15:20, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > В си тоже можно передать указатель, куда функция запишет код ошибки.

    Можно, а зачем? (с)

    То что не является частью языка мало кто будет делать.
    В языке должны быть удобные механизмы, а не "придумай свой велосипед".
    Но так как мы говорим про ЯП в котором булл добавили спустя 50 лет...

    Я не видел какой-то общепринятой техники-паттерна.
    Если у вас есть примеры, готов их рассмотреть.

     
     
  • 7.108, _ (??), 21:50, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    > Но так как мы говорим про ЯП в котором булл добавили спустя 50 лет...

    Причём - зря!
    Впрочем добавили туда много вовна, благодаря стараниям вот таких ******, а ведь был когда-то лучшим "портабельным ассемблером высокого уровня"(С), а теперь вот - булль ... покажешь мне такой тип данных на х86\ч64... "Ой!" да? :-)

     
     
  • 8.114, Ivan_83 (ok), 22:52, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Технически в процессорах есть флаги это таки bool Но на практике оно в основном... текст свёрнут, показать
     
  • 7.115, Ivan_83 (ok), 22:53, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Вы зачем то пытаетесь С натянуть на свой квадратно-гнездовой раст или другой подобный ЯП, мысль о том что оно и не должно вас почему то не посещает.
     
  • 3.20, Аноним (19), 11:55, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Да, в убогих недо-язычках из 70х нет нормального средства передачи ошибок.

    А нормальные это какие? Можешь показать пример?

     
     
  • 4.24, Аноним (5), 12:07, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
     
  • 5.27, Аноним (19), 12:27, 26/10/2026 Скрыто ботом-модератором     [к модератору]
  • +/–
     
  • 4.28, Аноним (-), 12:38, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Конечно.
    ADA (и ADA Spark).
    Из известных факапов - только Ариан5.
    И то по причине долбанутости менеджеров "давайте перенесем код без тестирования".

    Из "не языков", а сторонних инструментов - CompCert.
    Компилятор для СИ, сделанный для формальной верификации. Соответствует DAL A – DAL D.
    Из минусов - он не поддерживает стандарт полностью, как и всякие гну-расширения от васянов.
    Ну и не делает агрессивные оптимизации - так что код будет медленнее.

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

     
     
  • 5.35, Аноним (19), 13:21, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    И всё же, как обработка ошибок то там сделана?
     
     
  • 6.40, Аноним (41), 13:38, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Используются эксепшены.

    Но не такие как в других языках, о чем они явно пишут:
    Ada uses exceptions for error handling. Unlike many other languages, Ada speaks about raising, not throwing, an exception and handling, not catching, an exception.

    learn.adacore.com/courses/intro-to-ada/chapters/exceptions.html

     
     
  • 7.43, Аноним (43), 14:29, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    > Но не такие как в других языках, о чем они явно пишут

    Увидел только другую терминологию. В примерах тоже ключевые слова другие, а смысл тот же.

    В чём именно отличие кроме терминологии?

     
     
  • 8.56, Аноним (56), 15:37, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    В с можно throw нуть что угодно, в том числе динамический объект Ада в этом с... текст свёрнут, показать
     
     
  • 9.60, Аноним (60), 16:04, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    То есть исключения в Аде работают как в Яве checked exceptions ... текст свёрнут, показать
     
  • 9.69, Инопланетянин (?), 16:41, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Современный с двигается в сторону отказа от исключений же https en cpprefer... текст свёрнут, показать
     
     
  • 10.73, Аноним (73), 17:13, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Современный с двигается в сторону отказа от исключений же Нет expected Э... текст свёрнут, показать
     
     
  • 11.74, Инопланетянин (?), 17:17, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Исключений не отменяют, но с введением expected, все больше библиотек будут пере... текст свёрнут, показать
     
     
  • 12.78, Аноним (78), 17:41, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Это понятно почему выброс исключения в каком-нибудь одном потоке роняет всё при... текст свёрнут, показать
     
  • 6.52, Аноним (-), 15:28, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > И всё же, как обработка ошибок то там сделана?

    В ада Raising Exceptions/Handling Blocks.
    Более того есть встроенный в язык набор predefined exceptions - программисту не нужно велосипедить.

    ps неужели это так сложно загуглить

     
     
  • 7.54, Аноним (53), 15:32, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Всё прям как в Паскале.
     
     
  • 8.57, Аноним (-), 15:38, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ты когда-то слышал в либе на паскале нашли дырень и пол интернета в опасности, ... текст свёрнут, показать
     
  • 8.70, Инопланетянин (?), 16:43, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Не ври, в ванильном Паскале Вирта не было никаких исключений ... текст свёрнут, показать
     
  • 8.72, Аноним (73), 17:06, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Ада - дальнейшее развитие Паскаля... текст свёрнут, показать
     
     
  • 9.77, Инопланетянин (?), 17:28, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Дальнейшее развитие Паскаля - это Оберон ... текст свёрнут, показать
     
     
  • 10.79, Аноним (78), 17:43, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Оберон - не прямой потомок Паскаля, а через Модула-2 А Ада - прямой потомок ... текст свёрнут, показать
     
  • 7.105, Аноним (105), 21:33, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    И как это в ассемблере выглядит?
     
  • 3.64, Инопланетянин (?), 16:27, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Да, в убогих недо-язычках из 70х нет нормального средства передачи ошибок.

    Кто тебе мешает сделать enum Status для кодов ошибок, а в out-параметре передавать результат?

     
     
  • 4.68, Аноним (68), 16:39, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Кто тебе мешает сделать enum Status для кодов ошибок, а в out-параметре передавать результат?

    В теории - ничего,
    на практике - так почти никто не делает.
    Наверное ленятся)

    Кстати енумы в СИшке тоже кастpupoванные.
    Если у тебя есть например enum Status_1 и enum Status_2, то ты их можешь запросто сравнивать.
    Даже если первый статус это "не помер ли сервер", а второй "распарсилась ли строка".

     
     
  • 5.71, Инопланетянин (?), 16:53, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > В теории - ничего,
    > на практике - так почти никто не делает.
    > Наверное ленятся)

    Да-да, вообще никто

    int pthread_join(pthread_t thread, void **retval);

    от слова совсем https://www.sqlite.org/c3ref/open.html

    int sqlite3_open(
      const char *filename,   /* Database filename (UTF-8) */
      sqlite3 **ppDb          /* OUT: SQLite db handle */
    );

    > Кстати енумы в СИшке тоже кастpupoванные.

    Они не кастрированные - это инты. Каждый школьник это знает.

    Если надо уникальными значениями, то можно с помощью макроса сделать. Да и зачем тебе 100 кодов? Тебе по факту нужен -1. Никто не будет 100 кодов проверять.

     
     
  • 6.85, Аноним (85), 19:35, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Они не кастрированные - это инты. Каждый школьник это знает.

    Ну, т.е кастpupoванные инты.
    А если я хочу enum String? Ой, в СИшке и строк нету (а функции для обработки есть)).
    Про ассоциированные значения, методы и тд можно даже не мечтать.

    > Если надо уникальными значениями, то можно с помощью макроса сделать.

    Костыли.

    >  Да и зачем тебе 100 кодов? Тебе по факту нужен -1. Никто не будет 100 кодов проверять.

    Пф, отличная аргументация ограничения)

    Банально чтобы выдать человекочитаемую ошибку.
    Даже в errno больше сотни ошибок, а ты говоришь "никто проверять не будет".

     
     
  • 7.92, Инопланетянин (?), 20:44, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Банально чтобы выдать человекочитаемую ошибку.
    > Даже в errno больше сотни ошибок, а ты говоришь "никто проверять не
    > будет".

    errno - это считай один enum на все вызовы. Если говорить, про конкретный вызов, то у тебя вряд ли будет даже больше 5 кодов там. Это крайне редкая ситуация будет. К слову вот реальный пример из недавней новости https://www.brotli.org/decode.html#a87f

     
     
  • 8.99, Аноним (101), 21:01, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Да, но он не фиксированный 5 больше одного варианта из -1 в пять раз внезапн... текст свёрнут, показать
     
     
  • 9.106, Инопланетянин (?), 21:44, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Он наоборот фиксированный Не понял Не возвращай несуществующую ошибку Что бу... текст свёрнут, показать
     
  • 7.98, Ivan_83 (ok), 21:00, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    То что вы хотите всякую хрень которая в процессоре не предусмотрена, и от того в С её аналогов не втащили - это ваша личная трагедия.
     
  • 5.97, Ivan_83 (ok), 20:58, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Енумы нафик не упали, если честно. Это для грамарнаци из других языков интересно.
     
     
  • 6.100, Аноним (101), 21:02, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Енумы нафик не упали, если честно.

    Твое мнение если честно тоже.

    > Это для грамарнаци из других языков интересно.

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


     
     
  • 7.103, Ivan_83 (ok), 21:08, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Много назаменяли?
     
  • 4.96, Ivan_83 (ok), 20:58, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Так сидите в своей джаве и ловите просадку х100 на каждой ошибке.
     
     
  • 5.109, Инопланетянин (?), 21:58, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Так сидите в своей джаве и ловите просадку х100 на каждой ошибке.

    Причем тут джава? Так делает много кто. Вот, например, https://www.sqlite.org/rescode.html
    Про какую просадку ты говоришь?

     
     
  • 6.113, Ivan_83 (ok), 22:49, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Пардон, кажется я должен был выше по ветке написать :)

    Просадка это у джавистов когда они на каждый чих эксепены валят.

     
  • 3.66, Инопланетянин (?), 16:32, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    > Да, в убогих недо-язычках из 70х нет нормального средства передачи ошибок.

    https://en.wikipedia.org/wiki/Errno.h

     
  • 2.65, Инопланетянин (?), 16:30, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    1. Потому что размера хватает.
    2. Чтобы не возиться с проблемами unsinged в циклах.

    Мое мнение, код не читал.

     
  • 2.117, Ivan_83 (ok), 23:02, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Скорее всего потому что либо автор прикинул что там значения влезут в int и в целом ему пофиг какой там тип написать, либо потому что автор дятел который учился по старым книжкам где int на int~е int~ом погоняет.

    К сожалению мукулатуры где сплошные int до сих пор полно и это переиздают.

     

  • 1.15, Аноним (15), 11:41, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/–
    > Уязвимость в Ruby, эксплуатируемая для удалённого выполнения кода

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

     
     
  • 2.84, Аноним (84), 19:34, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Вот Раст например полностью и безоговорочно защищает решительно от всех существующих дыр в любых языках.
     

  • 1.21, Аноним (21), 11:57, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/–
    Кстати, а что там с актуальностью руби в бэкенде? Он таки смог пережить наплыв ноды и го в rest api или нет?
     
     
  • 2.22, Аноним (5), 12:04, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    большие проекты вроде живут, тот же гитлаб например. но новые думаю никто не начинает уже.
     
  • 2.36, Боевой Петух (?), 13:22, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Старые проекты никуда не делись, а что-то новое вряд ли будут писать на руби.
     
  • 2.39, Смузихеб забывший пароль (?), 13:38, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/–
    смотря какой критерий. То что было - то осталось. Но уже много лет никто в здравом уме не будет начинать новый проект бэка на руби
     
  • 2.83, Аноним (84), 19:32, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Главное что он даже сейчас совершенно не актуиален среди работатдателей.
     

  • 1.26, Аноним1234 (?), 12:24, 26/10/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/–
    Писали бы gitlab на ржавом - не было бы проблем.
     
     
  • 2.29, Аноним (-), 12:40, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Зачем?
    Если в условном ржавом взять такую же СИшную дырявую либу, то результат мог получиться таким же.
    Надеятся что ржа где-то на уровне выше отловит ошибку и брякнется, я бы не стал.

    Вывод должен быть скорее "либы используемые в важных проектах должны писаться с использованием надежных инструментов".
    И ржа далеко не единственный вариант.

     
     
  • 3.81, Аноним (84), 19:30, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Осторожно тут еретик. Он не верит в безопасную и благословенную силу раста.
     
     
  • 4.86, Аноним (85), 19:37, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    С чего ты взял?
    Просто я читал растбук и знаю, что гарантии раста заканчиваются на взаимодействии с дырявыми либами.
    Т.е по хорошему либа тоже должна быть на расте.

    Возможно после такого эпичного обcepa какой-то гугл решит заменить СИшную поделку на раст аналог.
    Как было с либхмл2

     
  • 2.30, пох.. (?), 12:50, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    конечно не было бы - нет кода, нет и проблем.

    Но, кстати, никогда не поздно начать переписывать!

     
  • 2.33, Anon789 (?), 13:07, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/–
    Тем временем uutils/coreutils...
     
     
  • 3.47, Аноним (53), 15:05, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    Доделают сразу после того, как создатели раста смогут допереписать FF?
     
     
  • 4.80, Аноним (80), 19:09, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/–
    они заняты переписыванием спецификации языка
     
  • 3.88, пох.. (?), 19:41, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/–
    > Тем временем uutils/coreutils...

    падажити, у нас еще два CVE в sudo-rs не закрытых. (что?! Что слышал. Нишмагли бизапастна. Апять. Сишники небось в штаны нагадили.)

     
     
  • 4.91, Аноним (91), 20:38, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/–
    О, а вот и пошел антикриз от дыpявых))

    Особенно забавно видеть подобные всkукаpeки в теме про сишную дырень 10 из 10.
    Да в sudo-rs есть
    CVE-2025-64517 - 4.4
    CVE-2025-46718 - 3.3
    CVE-2025-64170 - 3.8

    Как можно наблюдать то и тут СИшники обганяют растеров - смогли обгадиться гораздо сильнее.

    >  не закрытых.

    Ты уверен?
    Может ссылочкой поделишься?

     
     
  • 5.111, Ivan_83 (ok), 22:38, 26/10/2026 [^] [^^] [^^^] [ответить]  
  • +/–
    Занялись бы чем то полезным чтоли, а то только на CVE и фапаете.
     

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



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: