- 1
- 2
- 3
- 4
function H2I takes handle h returns integer
return h
return 0
endfunction
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+4
function H2I takes handle h returns integer
return h
return 0
endfunction
Return Bug. Интересно, кто-то ещё помнит?
Soul_re@ver 06.01.2022 16:27 # +5
Этим нехитрым способом преобразования хэндла в число пользовались многие годы, пока с его помощью не сумели выполнить произвольный код. После этого баг в спешном порядке починили и добавили нативные улучшения, к примеру, хэштаблицу, для эмуляции которой и использовался обычно RB.
Помимо RB существовал также Return Nothing Bug, который открыли незадолго до фикса всей этой херни.
Выглядел он так:
Если по какой-то причине функция не вернула значение, то использовалось последнее значение, которое вернула какая-либо функция. Недосягаемый return нужен, чтобы компилятор не ругался.
Баги с возвратом — не единственные в JASS. К примеру, локальные переменные, содержащие хэндлы, время жизни которых завершилось, всё ещё считались содержащими хэндл и не давали сборщику мусора его собрать. Поэтому можно было увидеть что-то типа
Ещё одной интересной возможностью была возможность обращаться и записывать произвольные файлы. Оригинально фича была создана для предзагрузки необходимых файлов для уменьшения лага на старте, поэтому основной директорией была директория игры. Но используя ".." можно было выйти за её пределы. Потом это пофиксили засунув в сэндбокс, уникальный для карты, и сделав баг, разрешающий запись, фичей.
HoBorogHuu_nemyx 06.01.2022 16:43 # +5
Кокококое TCO!
bormand 07.01.2022 11:44 # +1
bormand 07.01.2022 11:45 # 0
Т.е. dll'ок можно было подсыпать?
Soul_re@ver 07.01.2022 12:16 # 0
ISO 07.01.2022 12:18 # +4
Как будто на этом сайте это кого-то останавливало.
bormand 07.01.2022 15:42 # 0
Физически или всё-таки можно через какой-то баг слепить строку с не-аски? А текстовый режим -- не такая уж и проблема, если с 0x0A аккуратно работать (или не юзать).
guest6 07.01.2022 16:19 # 0
какая детская ошибка )))
bormand 07.01.2022 16:38 # 0
Это классика, это знать надо...
Да и в каталог с самой игрой тоже как-то не айс срать. У факторио для этого есть отдельные каталоги screenshot и script-output, к примеру.