информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применениеСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Парен, я printf() не пользуюсь и то знаю, что ей переменные... 01.07.05 13:57  Число просмотров: 1991
Автор: d87 Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Парен, я printf() не пользуюсь и то знаю, что ей переменные надо передавть &var, т.е. если
int x;
то printf(&x);
<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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach