Баш Segfault по бесконечной рекурсии
Я только что заметил, что bash
я использую (4.2.25 (1)) не защищен от бесконечной рекурсии функции. В таком случае происходит Segfault (и bash
процесс завершается). Чтобы это проверить bash
, просто наберите:
$ bash $ f() { f; } $ f
(Запуск сначала подоболочки (первая строка) дает нам кандидата, с которым мы можем поэкспериментировать, не подвергая опасности оболочку терминала; без первой строки окно вашего терминала, вероятно, закроется так быстро, что вы не увидите ничего интересного.)
Я понимаю причину этого явления, я думаю; это, вероятно, переполнение стека, которое приводит к bash
попытке записи в области памяти, которые не назначены его процессу.
Что меня интересует, так это две вещи:
Разве не должно быть проверки,
bash
чтобы защитить его от таких ситуаций? Более приличное сообщение об ошибке, такое как «Переполнение стека в функции оболочки», безусловно, будет лучше, чем простое бесполезное Segfault.Может ли это быть проблемой безопасности? Перед тем, как этот метод записывает в части памяти, которые не назначены процессу (что приводит к Segfault), он может перезаписать другие части, которые не предназначены для использования в
bash
стеке -internal.
0 ответов на вопрос
Похожие вопросы
-
4
Какое программное обеспечение я должен использовать для шифрования моего жесткого диска?
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
3
Может ли существующее шифрование беспроводной сети реально защитить сеть?
-
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
2
Каковы проблемы безопасности компьютера, подключенного напрямую к модему?
-
2
Как я могу настроить свою беспроводную сеть для максимальной безопасности?
-
2
Как лучше всего защитить мой компьютер от вирусов и программ чтения с экрана?
-
2
Защита моей беспроводной сети
-
1
Как я могу повысить безопасность своего портала?