Safe or Unsafe - this is the question
От: AlexLion  
Дата: 21.05.06 21:40
Оценка:
Всем привет!

Ситуация тривиальная — есть наша функция, скажем BuildAndInvokeQuery. Эта функция принимает некоторое кол-во параметров и формирует из них строку, которотую отдает другой функции, скажем InvokeQuery.
Т.е все происходит где-то так:

int BuildAndInvokeQuery( ... )
{
  char szQueryParam[ ХХХ ] = {0};

  // здесь идет формирование szQueryParam

  return InvokeQuery( szQueryParam );
}


Думаю сталкивались не раз. Что касается формирования szQueryParam — тут есть несколько вариантов:
1. Функции типа strcat, strcpy, sprintf и т.д. Т.е. размер буффера не учитывается
2. Функции типа strncat, strncpy, snprintf и т.д. Т.е. размер буффера уже учитывается

Вопрос в том — какой бы вы вариант выбрали ( используете ) и почему.





Внимание!!! Убедительная просьба дотнетчикам не предлагать дотнет. Это тема отдельного обсуждения. Так же убедительная просьба не предлагать использование классов типа CString или string. Все это я знаю, часть этого использую, но интересует именно данная ситуация.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.