Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка форматирования длинных строк с помощью wsprintf / 19 сообщений из 19, страница 1 из 1
10.04.2014, 11:24
    #38610892
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
Здравствуйте.

У меня есть такой код.

Код: plaintext
1.
2.
	wsprintfA(SqlBuffer, "insert into tests ( text_reply , type, id_quest_fk, count_reply )\
						  values ( '%s' , %d , %d , %d )", pStrData, type, var_pk, count_reply );



В переменную pStrData передается строка длиной 3000 символов, но она урезаеться до 1024 символов. Что делать ?
какой функцией можно скрипить строку такой длины ?
...
Рейтинг: 0 / 0
10.04.2014, 11:49
    #38610955
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323,

Я полагаю кракерам и их пособникам не место в наших рядах :-)

Тебе следует использовать средства привязки параметров запроса, предоставляемые API твоей субд.
...
Рейтинг: 0 / 0
10.04.2014, 11:51
    #38610962
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
MasterZiv,

нет там таких API
...
Рейтинг: 0 / 0
10.04.2014, 11:56
    #38610971
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
http://msdn.microsoft.com/en-us/library/windows/desktop/ms647550(v=vs.85).aspx wsprintf function
...

lpOut [out]
Type: LPTSTR
The buffer that is to receive the formatted output. The maximum size of the buffer is 1,024 bytes.


Попробуй sprintf()
...
Рейтинг: 0 / 0
10.04.2014, 11:59
    #38610977
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
Dima TПопробуй sprintf()
издеваешься?
...
Рейтинг: 0 / 0
10.04.2014, 12:00
    #38610979
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
Изопропил,

а что в ней плохого ?
...
Рейтинг: 0 / 0
10.04.2014, 12:01
    #38610981
sherzod_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323,

Код: plsql
1.
alert table tests change text_reply varchar(3000);
...
Рейтинг: 0 / 0
10.04.2014, 12:02
    #38610985
smald
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323Здравствуйте.

У меня есть такой код.

Код: plaintext
1.
2.
	wsprintfA(SqlBuffer, "insert into tests ( text_reply , type, id_quest_fk, count_reply )\
						  values ( '%s' , %d , %d , %d )", pStrData, type, var_pk, count_reply );



В переменную pStrData передается строка длиной 3000 символов, но она урезаеться до 1024 символов. Что делать ?
какой функцией можно скрипить строку такой длины ?

В мануале wsprintf про 1024 указано.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
char* str1="insert into tests ( text_reply , type, id_quest_fk, count_reply )  values ( ";
size_t len=strlen(str1);
size_t  len2= strlen(pStrData);
memcpy(SqlBuffer, str1, len);  

memcpy(SqlBuffer+len,  pStrData, len2);

wsprintfA(SqlBuffer + len + len2,  "%d , %d , %d )",  type, var_pk, count_reply );
...
Рейтинг: 0 / 0
10.04.2014, 12:05
    #38610990
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
ИзопропилDima TПопробуй sprintf()
издеваешься?
нет. а чего с ним не так? Кроме как выход за пределы буфера самому отслеживать? это для wsprintf() тоже актуально.
...
Рейтинг: 0 / 0
10.04.2014, 12:05
    #38610993
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323Изопропил,

а что в ней плохого ?
отсутствие указания размера выходного буфера

PS
SQL injection рассмотрим отдельно
...
Рейтинг: 0 / 0
10.04.2014, 12:05
    #38610995
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
smald,

спасибо за решение=))
сделал с помощью ее sprintf_s. Нормально ?
...
Рейтинг: 0 / 0
10.04.2014, 13:44
    #38611183
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323MasterZiv,

нет там таких API

Да ладно!

Какая СУБД ?
...
Рейтинг: 0 / 0
10.04.2014, 13:46
    #38611188
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323
спасибо за решение=))


Ээээ...
Учти, что оно неправильное.
...
Рейтинг: 0 / 0
10.04.2014, 14:08
    #38611224
smald
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
MasterZiv
Ээээ...
Учти, что оно неправильное.

Укажите плз. где.
...
Рейтинг: 0 / 0
10.04.2014, 14:34
    #38611267
gera3323
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
MasterZiv,

СУБД MySQL Server 5.5
...
Рейтинг: 0 / 0
10.04.2014, 14:41
    #38611280
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
gera3323СУБД MySQL Server 5.5
Поддерживает параметризованные запросы. RTFM "C API Prepared Statements".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
10.04.2014, 15:06
    #38611340
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
smaldMasterZivЭэээ...
Учти, что оно неправильное.

Укажите плз. где.

Как минимум надо строку заключить в кавычки и добавить экранирование кавычек внутри строки.

Как максимум -- исключить SQLInjection.
...
Рейтинг: 0 / 0
10.04.2014, 15:20
    #38611371
luislom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
MasterZivsmaldпропущено...


Укажите плз. где.

Как минимум надо строку заключить в кавычки и добавить экранирование кавычек внутри строки.

Как максимум -- исключить SQLInjection.

Дык, про ковычки в поле запроса, контроль и экранирование символов,
контроль размера буферов-это само собой разумеется. Это не приводилось, потому-что
к теме топика имеет уже отношение не прямое. Приведённый выше код-
иллюстрация обхода ограничений wsprintfA и не более.
...
Рейтинг: 0 / 0
10.04.2014, 15:23
    #38611374
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка форматирования длинных строк с помощью wsprintf
luislomMasterZivпропущено...


Как минимум надо строку заключить в кавычки и добавить экранирование кавычек внутри строки.

Как максимум -- исключить SQLInjection.

Дык, про ковычки в поле запроса, контроль и экранирование символов,
контроль размера буферов-это само собой разумеется. Это не приводилось, потому-что
к теме топика имеет уже отношение не прямое. Приведённый выше код-
иллюстрация обхода ограничений wsprintfA и не более.

Я ж никаких претензий не предъявляю.
Просто товарища предупреждаю.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка форматирования длинных строк с помощью wsprintf / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]