Изменение вызовов Форта из .htm файлов. Важно!

 
+
-
edit
 

Balancer

администратор
★★★★★
Ввиду того, что прямой вызов Форт-конструкций из .htm-файлов оказался дырой, через которую любой желающий мог запустить произвольный код, формат вызова сейчас изменён.

Вместо
bypass -h forth <форт - код >
теперь нужно писать:
bypass -h jbf_форт_слово параметры

При этом будет вызвано слово bypass_форт_слово.

Параметры, переданные ему, будут уже лежать на стеке в виде отдельных слов.

См. примеры в датапаке.

Квесты на профессию поправил, но не тестировал.
 
+
-
edit
 

Balancer

администратор
★★★★★
Да, всегда помните, что данное слово может вызвать любой доморощенный хакер. Так что вставляйте в них полный комплекс проверок.
 
+
-
edit
 

zabbix

разработчик OpenWorlds
а проверка на наличие таргета есть в коде обработки bypass?
гнасколько я знаю, в оффе есть только один bypass, который не требует валидного таргета - это bbs
Речи тайна Йоды магистра раскрыта - на Форте программист просто старый оказывается он.  
+
-
edit
 

Balancer

администратор
★★★★★
Пока нет, но добавить легко. Только что это даст в смысле безопасности?

...

Хотя да, понимаю. Добавлю попозже, код в датапаке от этого уже не изменится.

...

Сейчас никак не могу отловить баг - операторы сравнения работают только с числами до 127. Например, "128 128 = ." даёт 0 вместо -1. Откуда-то byte-тип вылезает, но откуда??...
 
+
-
edit
 

zabbix

разработчик OpenWorlds
знаковый похоже просто :)
Речи тайна Йоды магистра раскрыта - на Форте программист просто старый оказывается он.  
+
-
edit
 

Balancer

администратор
★★★★★
Ну да. Вот только найди два отличия. Первые три класса работают отлично, вторые два - только с числами до 127:
code java
  1.         public class great extends Word
  2.         {
  3.                 public void exec(JBData data)
  4.                 {
  5.                         data.st.set(data.st.pop_i() < data.st.top_i() ? -1 : 0);
  6.                 }
  7.         }
  8.  
  9.         public class less_eq extends Word
  10.         {
  11.                 public void exec(JBData data)
  12.                 {
  13.                         data.st.set(data.st.pop_i() >= data.st.top_i() ? -1 : 0);
  14.                 }
  15.         }
  16.  
  17.         public class great_eq extends Word
  18.         {
  19.                 public void exec(JBData data)
  20.                 {
  21.                         data.st.set(data.st.pop_i() <= data.st.top_i() ? -1 : 0);
  22.                 }
  23.         }
  24.  
  25.         public class eq extends Word
  26.         {
  27.                 public void exec(JBData data)
  28.                 {
  29.                         data.st.set(data.st.pop_i() == data.st.top_i() ? -1 : 0);
  30.                 }
  31.         }
  32.  
  33.         public class not_eq extends Word
  34.         {
  35.                 public void exec(JBData data)
  36.                 {
  37.                         data.st.set(data.st.pop_i() != data.st.top_i() ? -1 : 0);
  38.                 }
  39.         }


Может у меня уже просто глаз замылился?
 
+
-
edit
 

Balancer

администратор
★★★★★
Починил. Кажется, с приоритетами глюки :)
 
+
-
edit
 

Balancer

администратор
★★★★★
Слово forth для bypass-конструкций снова вернул. Но работает оно только при наличии уровня доступа GM_USE_FORTH. Используется для админских целей. То же открытие/закрытие дверей из контекстного меню реализовано на нём.
 
+
-
edit
 

masterXL

разработчик OpenWorlds
я кажется не все понял:
<a action="bypass -h jbf_main_word">
или
<a action="bypass -h forth main_word">
как правильно? у меня работает только первый вариант
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  
+
-
edit
 

masterXL

разработчик OpenWorlds
еще вопрос
<img src="icon.etc_same_item_in_game_01i"> в штм файле, лежащем в папке форта не показывает картинку. Дело в неправильном пути? Подскажите какой правильный. Хотелось бы с картинками сделать. ;)
Трудно быть богом... Не веришь? Спроси любого админа! можешь спросить у меня 175506816 ServerIP=193.41.172.19 Перенос доступен  
+
-
edit
 

Balancer

администратор
★★★★★
masterXL> как правильно? у меня работает только первый вариант

В Fortress, в связи с введением шифровки bypass, работают оба варианта.

В первом случае вызовется bypass_main_word, во втором - просто main_word
 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Balancer

администратор
★★★★★
masterXL> еще вопрос
masterXL> <img src="icon.etc_same_item_in_game_01i"> в штм файле, лежащем в папке форта не показывает картинку. Дело в неправильном пути? Подскажите какой правильный. Хотелось бы с картинками сделать. ;)

От Форта это не зависит. Путь указывается внутри клиента.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru