информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Линуксовый ботнет, распространяющийся... 
 Конец поддержки Internet Explorer 
 Рекордное число уязвимостей в 2021 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
На самом деле вариантов не много 25.05.05 16:06  Число просмотров: 2018
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Вопрос абсолютно дуратский, но ответить на него можно и без кода... и даже самому без форума.
Есть только три варианта из-за которого на ф-ии printf можно получить Access violation
1. Не валидный параметр, переданный ф-ии. Например printf( 0, 0 );
2. Проблемы с линковкой. Например, программа может сыпаться в самых неожиданных местах если линковать dubug и release, multythread и singlthread библиотеки.
3. "Сбой по памяти" - тоже проявляется совсем не там, где он реально есть. Так что, если в программе есть работа с указателями, то вполне возможно - ошибка совсем не в printf();
Это очень легко детектировать поставив в произвольных местах штук 100 printf("hello!\n"); Если ошибка в этом месте изчезла - значит "память" (почти шутка).

> Программирую в Microsoft Visual C++ .NET. Прииспользовании
> printf получаю ошибку
> Access violation reading location
> 0x00000004

> подскажите плз, что делать???
<programming>
Не знаю что делать с ошибкой 23.05.05 22:09  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Программирую в Microsoft Visual C++ .NET. Прииспользовании printf получаю ошибку
Access violation reading location 0x00000004
подскажите плз, что делать???
Парен, я printf() не пользуюсь и то знаю, что ей переменные... 01.07.05 13:57  
Автор: d87 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Парен, я printf() не пользуюсь и то знаю, что ей переменные надо передавть &var, т.е. если
int x;
то printf(&x);
А ты точно уверен, что ничего не перепутал? 02.07.05 12:52  
Автор: amirul@home Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Парен, я printf() не пользуюсь и то знаю, что ей переменные
> надо передавть &var, т.е. если
> int x;
> то printf(&x);
А не слышал ли ты этот звон в контесте совсем другой фукнции? scanf например.

Проверять надо то, что ты предлагаешь перед тем, как предлагать
100% ты пытаешься обратиться по недопустимому адресу. 20.06.05 08:42  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
100% ты пытаешься обратиться по недопустимому адресу.
Скорее всего в качестве параметра printf'у передан указатель
на строку, в области памяти к которой закрыт доступ на чтение
На самом деле вариантов не много 25.05.05 16:06  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Вопрос абсолютно дуратский, но ответить на него можно и без кода... и даже самому без форума.
Есть только три варианта из-за которого на ф-ии printf можно получить Access violation
1. Не валидный параметр, переданный ф-ии. Например printf( 0, 0 );
2. Проблемы с линковкой. Например, программа может сыпаться в самых неожиданных местах если линковать dubug и release, multythread и singlthread библиотеки.
3. "Сбой по памяти" - тоже проявляется совсем не там, где он реально есть. Так что, если в программе есть работа с указателями, то вполне возможно - ошибка совсем не в printf();
Это очень легко детектировать поставив в произвольных местах штук 100 printf("hello!\n"); Если ошибка в этом месте изчезла - значит "память" (почти шутка).

> Программирую в Microsoft Visual C++ .NET. Прииспользовании
> printf получаю ошибку
> Access violation reading location
> 0x00000004

> подскажите плз, что делать???
тут все написано: 24.05.05 00:43  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
тут все написано: http://www.bugtraq.ru/forum/faq/general/smart-questions.html
ха ха ха... очень смешно 24.05.05 22:59  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> тут все написано:
> http://www.bugtraq.ru/forum/faq/general/smart-questions.htm

я ни как разобраться не могу, манав нет, а MSDN в сети рыть не вариант, инет ведь не казёный :(
проверки переменной, что в вывод передаю, пробовал тоже не проходят, та же ошибка.

если не сложно подскажите плз что сделать, или может что подробнее описать :)
Вообще то в VS.Net есть встроенный отладчик 25.05.05 13:35  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> если не сложно подскажите плз что сделать, или может что
> подробнее описать :)
Который перехватывает все exception-ы и останавливает отлаживаемую программу на строке, которая попыталась сделать чего то неправильное. Далее смотри stack trace и чего ты там выложил на стек

И кстати, что за обиды. Тебя попросили, прожевать чего ты там жуешь и внятно объяснить чего ты делаешь и чего ожидаешь.
Что делать: Вычислить фрагмент программы, где происходит... 25.05.05 09:37  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> если не сложно подскажите плз что сделать, или может что
> подробнее описать :)

Что делать: Вычислить фрагмент программы, где происходит ошибка (найти эту функцию/процедуру). Воспользовавшись отладочной печатью локализовать место вплоть до одного оператора. Выражение с этим оператором выложить здесь.
мне вот просто интересно... 25.05.05 00:07  
Автор: dl <Dmitry Leonov>
Отредактировано 25.05.05 00:10  Количество правок: 1
<"чистая" ссылка>
...как можно надеяться получить ответ на вопрос об ошибке в программе, не приводя ни строчки кода.

За неимением телепатических способностей могу лишь предположить, что в результате чего-то типа copy/paste из списка параметров scanf в printf попал какой-нибудь &i, так что функция и бросилась писать в район нулевых адресов.
действительно порой смешно... 24.05.05 23:44  
Автор: leo <Леонид Юрьев> Статус: Elderman
<"чистая" ссылка>
без обид, просто RTFM
спасибо отладчик я помучил и всё исправил 25.05.05 21:29  
Автор: hotice Статус: Незарегистрированный пользователь
<"чистая" ссылка>
а насчёт листинга это просто - я знаю что в листинге нет ошибки, а вот что где то я использовал не ту функцию что надо, это другой вопрос :) Обид вообще нет, просто если б я знал ЧТО и ГДЕ искать, вообще не задавал бы таких вопросов :)

всё равно всем спасибо ... на эту страничку меня уже 3 раз посылают, пора мне задуматься :)
Не поделу: 01.07.05 16:56  
Автор: void <Grebnev Valery> Статус: Elderman
Отредактировано 01.07.05 16:58  Количество правок: 1
<"чистая" ссылка>
> а насчёт листинга это просто - я знаю что в листинге нет
> ошибки, а вот что где то я использовал не ту функцию что
> надо, это другой вопрос :) Обид вообще нет, просто если б я
> знал ЧТО и ГДЕ искать, вообще не задавал бы таких вопросов
> :)
>
> всё равно всем спасибо ... на эту страничку меня уже 3 раз
> посылают, пора мне задуматься :)

Не поделу:

1) Зря обижаешься.
2) Не смотря на "смехотворность" вопроса, вопрос об уязвимостях кода, в котором используется printf - это один из первых вопросов, что задают на интервью (при поиске работы), или в письменных тестах (чтоб попасть на сие интервью).

По делу:

1) То, что ты проверил соответствие параметров тем, что указаны в строке форматирования - это несомненно.
2) Если ты формируешь строку форматирования в рантайм (не константа) - ты, конечно же, проверил, что это та строка, что тебе надо.
3) Если ты выводишь нуль-терминировнные стоки - ты, конечно же, гарантирвал себя, что указателивалидные а строкитерминированные В противном случае, ты, конечно же, используешь "безопасный" вывод строк, указывая в строке форматированиядлинустроки.
4) Если ты используешь UNICODE, то, конечно же, используешь или юникодные версии, или выполняешь соответствующие преобразования UNICODE-ANSI.

ПС. Извини, если что не так.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2022 Dmitry Leonov   Page build time: 1 s   Design: Vadim Derkach