Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

И такая ошибка была найдена в одной из бета-версий Netscape Navigator. При создании класса Т неявно



создается тип массив класса Гдля внутреннего пользования. Его имя начинается с <[>, и, поскольку нельзя

Создать класс, имя которого начинается с этого символа, все работает безошибочно. Но в той версии Netscape

Navigator удавалось загрузить класс с таким именем. Точнее, при этом выдавалась ошибка, но виртуальная

Машина устанавливала имя в своей внутренней таблице. В результате Java считала объект массивом, хотя он

Принадлежал совсем другому типу. Итог - замена SecurityManager и потенциальный захват системы,

Ошибка, связанная с приведением типов: interface Inter

{

Void f();

}

Class Secure implements Inter

{

Private void f();

}

Class Dummy extends Secure implements Inter

{

Public void f();

DummyO

{

Secure s = new SecureO;

Inter i = (Inter) s;

I.fO;

}

}

В этом коде вызов i.f() должен быть опознан как вызов защищенного метода класса Secure и запрещен.

Неверное поведение Netscape Navigator 2.02 привело к возможности вызова закрытой функции defineClassO,

Призванной исправить ошибки в верификаторе и механизме загрузки классов.

Небольшая модификация этой же ошибки:

Interface Inter

{

Void f();

}

Class Secure implements Inter

{

Private void f();

}

Class Dummy implements Inter

{

Public void f();





Дата публикования: 2014-11-04; Прочитано: 295 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...