powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переполнение буфера при записи
18 сообщений из 18, страница 1 из 1
Переполнение буфера при записи
    #40094242
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему выходит предупреждение о переполнении буфера при записи в "password":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
void password_generator(int length_password)
{
    password = new char[length_password];

    for (int i = 0; i < number_of_numeral; ++i) {
        password[i] = char(rand() % 10 + 48);
    }

    for (int i = number_of_numeral; i < number_of_numeral + number_of_big_chars; ++i) {
        password[i] = char(rand() % 26 + 65);
    }

    for (int i = number_of_numeral + number_of_big_chars; i < length_password; ++i) {
        password[i] = char(rand() % 26 + 97);
    }

    random_shuffle(password, password + length_password);
}
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094245
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты уверен что это условие всегда выполняется?
Код: plaintext
1.
number_of_numeral + number_of_big_chars <= length_password
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094246
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Да, спасибо.
Придумаю что-нибудь другое
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094247
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

хотя:
Код: plaintext
1.
2.
3.
4.
    number_of_small_chars = rand() % length_password;
    int balance_rand = length_password - number_of_small_chars;
    number_of_big_chars = rand() % balance_rand;
    number_of_numeral = length_password - number_of_small_chars - number_of_big_chars;
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094249
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

получается, что выполняется
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094252
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит компилятор это не понял.

Добавь
Код: plaintext
1.
ASSERT(number_of_numeral + number_of_big_chars <= length_password);



И отключи это предупреждение в этом коде.
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094267
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Благодарю.
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094351
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой тип у этих number_of_XXX?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094402
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется парочку циклов можно было бы визуально упростить. Тут идет обогащение одного символьного
массива последовательно слева направо.
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094406
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код не упрощать надо, а полностью переделывать, ибо бредовый. Не
гарантирует сложности от слова "совсем" ибо с вероятность 1/длина весь пароль
будет состоять из цифр.

PS: И самое главное: проверь, что для меню не задан шрифт.
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094487
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
тип переменных - int

Забавно, но работает
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094489
kasper_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
там в разных циклах случайно добавляются разные символы
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094492
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasper_
mayton,
там в разных циклах случайно добавляются разные символы

Так что? Нельзя упростить?
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094508
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasper_, навскидку:

- password = new char[length_password];
+ password = new char[length_password+1];

- for (int i = 0; i < number_of_numeral; ++i)
+ for (int i = 0; i < min(number_of_numeral, length_password); ++i)
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40094509
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kasper_Почему выходит предупреждение о переполнении буфера при записи в "password"

А у меня не выходит:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
#include <stdlib.h>
#include <new>

void password_generator(int length_password)
{
     int number_of_small_chars = rand() % length_password;
     int balance_rand = length_password - number_of_small_chars;
     int number_of_big_chars = rand() % balance_rand;
     int number_of_numeral = length_password - number_of_small_chars - 
number_of_big_chars;
     char* password = new char[length_password];

     for (int i = 0; i < number_of_numeral; ++i) {
         password[i] = char(rand() % 10 + 48);
     }

     for (int i = number_of_numeral; i < number_of_numeral + 
number_of_big_chars; ++i) {
         password[i] = char(rand() % 26 + 65);
     }

     for (int i = number_of_numeral + number_of_big_chars; i < length_password; 
++i) {
         password[i] = char(rand() % 26 + 97);
     }
}

int main()
{
	password_generator(10);
}


Компилируется с ключами -Wall -Wextra -Wpedantic без единого сообщения.
ЧЯДНТ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40095276
Dimitry Sibiryakov
Этот код не упрощать надо, а полностью переделывать, ибо бредовый. Не
гарантирует сложности от слова "совсем" ибо с вероятность 1/длина весь пароль
будет состоять из цифр.

PS: И самое главное: проверь, что для меню не задан шрифт.

вполне годные пароли выдаёт
если так беспокоит шанс 1:100500 триллионам, то можно и проверку прикрутить
(причём одноразовую, бо 2 раза такое не выпадет)
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40095277
а вот у тебя почему-то выдаёт 2+ цифры впереди постоянно
а в конце 2+ lower case

кстати, надо добавить srand(time(NULL));

мой генератор по примерно такому же алгоритму выдаёт полный рандом из: -_,.:;!#0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
...
Рейтинг: 0 / 0
Переполнение буфера при записи
    #40095303
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скруль растет подобно библиотеке Борхеса.

https://www.sql.ru/forum/1126611/tyapnichnyy-pwdgen

Автор посмотри тут.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Переполнение буфера при записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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