LINUX.ORG.RU
ФорумTalks

Оператор why, как оружие в руках злоумышленников...


0

0

	Привет, всем.

	Люди, вы представляете каким ужастным оружием в руках злонамеренного человека
может служить обычный оператор 'why'? Представим следующий код на си:

	for(i = 0; i < n; i++)
	{
		...
		why n;
		...
	}

	Процессор дойдя до обработки кода этого оператора может просто повесить
всю систему, пытаясь понять "ПОЧЕМУ n?". При этом программу не обязательно запускать 
под root'ом!!! Следует оговориться, для тех процессоров, которые не имеют команды 
why на железном уровне и не включена программная ее эмуляция, ситуация не опасная - 
компилятор просто заменит why на nop.
Ответ на: комментарий от anonymous

Чуть что, так сразу курить. Да меня, между прочим, и без всякого компота вставляет. :-)

Lego_12239 ★★
() автор топика
Ответ на: комментарий от anonymous

... да и вообще, при чем тут это?.. Надо как-то проблему решать...

Lego_12239 ★★
() автор топика
Ответ на: комментарий от W98

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

Алгоритм, согласно manual'ам производителей, следующий:

1. процессор, встречая оператор why ЧТО_НИБУДЬ, пытается понять ПОЧЕМУ ИМЕННО ЧТО_НИБУДЬ.

2. если он понимает зачем это здесь и для чего, то программа исполняется дальше; если нет, то выход.

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

Я сейчас точно не вспомню в каких процессорах была ошибка и не известно будет ли их отзывать производитель. Вот такие дела.

Lego_12239 ★★
() автор топика
Ответ на: комментарий от anonymous

jasen pen' sushesrvuet , takge kak jmp $ , goto i ne tol'ko ,



KTO ZDES' ?!

j262 ★★
()
Ответ на: комментарий от anonymous

>В сусе gcc скомпилен без поддержки оператора why

Смеялсо
:-)

kitov ★★★
()
Ответ на: комментарий от anonymous

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

Lego_12239 ★★
() автор топика
Ответ на: комментарий от anonymous

> В сусе gcc скомпилен без поддержки оператора why

в фортунки!!!

lg ★★
()
Ответ на: комментарий от pashka_r

Сомневаюсь... Если отключают why, то на кой тогда whynot? Либо операторы семейства why есть, либо нет. Деления на кусочки здесь не бывает.

Lego_12239 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.