LINUX.ORG.RU

Ответ на: комментарий от clx

Ё-маё... Зачем, почему. Есть новость - наслаждайся!!! Что за мода до всего докапываться пошла?

anonymous
()

Пятый по счету багфикс релиз. Мдя...

StDog
()
Ответ на: комментарий от vtVitus

Частота обнаружения ошибок прямо пропорциональна популярности разработки.

"Линукс по-Тузиковски" том второй.

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

> "This is a candidate ..."
This is a candidate for inclusion in the CVE list :)))))))))
по ссылкам там сходи умник

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

А что говорить? Ява сасёт. ocaml - хорощая ОС, только языка
программирования под неё нет ;)

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

Когда последний раз находили ошибки безопасности в Python? :-P

SKYRiDER ★★★
()

Один из скриптовых языков под Java(и C) - правда самый бестолковый. Beanshell и то лучше. Хотя если кто-то хочет - пусть пользуется вместо JSP(хотя я бы не стал).

anonymous
()

Пардон, где там ВООБЩЕ дыры в безопасности? Пакет XMLRPC написан на PHP и частью языка не является, это модуль из PEAR, такой же модуль, как модули в Perl из CPAN.

anonymous
()

Хм, в 5.0.5 поломали совместимость. Куча приложений теперь встаёт колом
с ошибкой Fatal error: Only variables can be passed by reference in xxx.php.
До php-5.0.4 включительно такого не было. Это происходит когда в функции
параметр объявлен с передачей по ссылке, а в коде параметром передаётся
другая функция. Чо за бля такое? Раньше же хавала и не ругалась...

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

Вот ещё: перестала работать конструкция типа
$x = array_pop(explode(' ', 'a b'));
Раньше возвращала 'b'.

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

по поводу "поломали" см php.ini:

allow_call_time_pass_reference = On

прописываешь глобально, либо в .htaccess конкретного сайта:

php_flag allow_call_time_pass_reference on

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

Однако ж до 5.0.5 работала. Я не считаю, что это фигня. Это нормальное
"умолчальное" поведение. Такая "фигня", к примеру, сплошь и рядом
встречается в друпале:

$theme = array_pop(explode('.', arg(3), 2));
(system.module:25)

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

> allow_call_time_pass_reference = On

Какие мы умные! Это совсем другой случай. Он обрабатывает устаревшую
конструкцию передачи параметра по ссылке, когда ссылку явно указывают
при передаче, типа $a = myfunc(&$myvar). Здесь же иная проблема.

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

Пример для наглядности:

function myfunc(&$param) { return true;}
function another_func() { return true; }

До php-5.0.5 работала такая конструкция:
$a = myfunc(another_func());

В php-5.0.5 такой код обламывается с фатальной ошибкой.

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

Да, вы правы, это другой случай, посмотрел невнимательно.

Но те примеры, которые вы приводите -- это неправильный код. И то, что он работал в PHP < 5.0.5 не делает его правильным.

Уж простите за ссылку:

http://www.php.net/manual/en/language.references.pass.php

и цитату:

> The following things can be passed by reference: > * Variable, i.e. foo($a) > * New statement, i.e. foo(new foobar()) > * Reference, returned from a function

> $x = array_pop(explode(' ', 'a b'));

это неправильно, так как array_pop модифицирует аргумент.

и в другом примере ошибка:

> function myfunc(&$param) { return true;} > function another_func() { return true; } > $a = myfunc(another_func());

должно быть: &function another_func() { return true; }

согласен, что такие вещи лучше "вправлять" на релизах с другими номерами (PHP 5.1), но вы уж если перешли на 5, то и пишите правильно (с точки зрения документации). Кстати, кто следит за CVS, мог заметить, что там уже давно только так работает.

но факт, что обратная совместимость поломана. несогласные смотрят реплику derick-а: http://bugs.php.net/bug.php?id=33495&edit=1

neksa
()
Ответ на: комментарий от neksa

> но факт, что обратная совместимость поломана. несогласные смотрят реплику derick-а: http://bugs.php.net/bug.php?id=33495&edit=1

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

Причина в том, что при "неверном" использовании параметра по ссылке
возникала трудно уловимая, трудно объяснимая коррупция памяти и,
отчаявшись её решить, убрали саму возможность "неверного" использования.
Примерно как если бы стоматолог отчаявшись вылечить зуб, вырвал бы его
с корнем ;)

А теперь давайте посмотрим, чем плохо было иметь возможность посылать
по ссылке не переменную, а результат функции? А ничем. Это была фича!
Пересылка аргумента по ссылке имела всего два важных отличия от
пересылки по значению:

1) значение параметра не копировалось (оптимизация)
2) значение параметра могло быть изменено в функции и сохраняло новое значение

Что мы имели если пересылаемый по ссылке параметр был не переменной,
а значением из другой функции? Оптимизация тут по любому не проходила,
то есть она вообще не важна. Изменять значение тоже бессмыслено.
То есть функция работала в этом случае так, как если бы параметр
посылался по значению. То есть работала универсально и при этом
никому не мешала и ничего не нарушала в логике кода!

Поэтому я считаю, что убирать старое поведение по логике вещей не
нужно было ни в коем случае. Оно никому не мешало и упрощало работу
программиста.

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

> но вы уж если перешли на 5, то и пишите правильно

Самое противное заключается в том, что люди только-только стали
перебираться на php5, и тут на тебе такую плюху. Ведь куча приложний
перестала работать... Если не вернут назад, забью нах на такой язык и
пойду рубить чего-нибудь на рельсах ;)

annonymous ★★
()

Есть еще пара проблемных моментов с новым пхп --
в случае если у нас в такой вот ф-ции возвращается null:

function &getSomething() {
if ($this->a === true) {
return new SomeObject();
} else {
return null;
}
}

То мы получаем варнингом по консоли... Вместо простого и понятного кода приходится писать $nil = null; return $nil;
Ввели бы что ли анонимные переменные/объекты...

anonymous@linux.org.ru

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