информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяСтрашный баг в WindowsГде водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Простое пробивание рабочего/провайдерского... 
 400 уязвимостей в процессорах Snapdragon 
 Яндекс неуклюже оправдался за установку... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
нашел в инете 01.04.05 23:35  Число просмотров: 1826
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 01.04.05 23:42  Количество правок: 2
<"чистая" ссылка>
ссылка - http://csislabs.palomar.edu/Student/Directx9.0/dx9sdk/Include/strsafe.h
Смотрим сырцы:
StringCchCopy является враппером для StringCopyWorkerA

StringCopyWorkerA в свою очередь написан вполне корректно и переполнения не получится если cchDest - это размер буфера КУДА ПРОИЗВОДИТСЯ ЗАПИСЬ. То бишь - размер pszDest. Функция как и предполалось полностью идентична strncpy за исключением гарантированного обнуления последнего символа строки.

В коментах StringCchCopy написано:
cchDest - size of destination buffer in characters.
length must be = (_tcslen(src) + 1) to hold all of the
source including the null terminator
То бишь имелось ввиду что для того чтобы строка была переписана полностью размер буфера pszDest должен быть (_tcslen(src) + 1). Ну и соответственно параметр cchDest, показывающий размер буфера таким будет. Но это значит что надо выделить память под pszDest столько а не просто передать такой cchDest.

А вот те кто писали МСДН написали уже так:
cchDest
[in] Size of the destination buffer, in characters. This value must equal the length of pszSrc plus 1 to account for the copied source string and the terminating null character. The maximum number of characters allowed is STRSAFE_MAX_CCH.
То есть случай как с запятой - казнить нельзя помиловать. Смысл перевран полнстью от небольшой перефразировки тех кто писал статью мсдн по комментам из сырцов. Напишите ктонить Биллу Гейтсу чтоб исправили, а то скоро все компутерно-популярные издания начнут пестреть заголовками что МС облажались (хотя в какой то степени оно так и есть Ж))

btw - сам факт наличия реализации функции в хедере тоже очень прикалывает Ж)
<programming> Поиск 








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


  Copyright © 2001-2020 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach