Автор |
Сообщение |
Сообщение создано: 10. 10. 2017 [10:38]
|
fido_max
Maxim Kochetkov
Contributor
Создатель темы
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
|
1. Создаем нового пользователя в QT-конфигураторе.
2. ID пишем русскими буквами.
3. Нажимаем кнопку сохранить, либо срабатывает автосохранение.
4. В свойствах нового пользователя меняем БД, в которую его сохранять, и сохраняем.
5. Закрываем скаду с сохранением.
6. Запускаем скаду.
7. При попытке логина этим пользователем получаем падение.
Вложенный файл
|
Сообщение создано: 10. 10. 2017 [16:43]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
У меня нет таких проблем.
Собственно добавил пользователя и установил пароль из дампа "AGLKS_core_2017-10-10_10.24.crash". Как результат:
- всё сохранилось;
- успешно аутентифицировался от нового пользователя;
- успешно аутентифицировался при запуске.
P.S. Отчёт о падении указывает на проблему при сравнении хешей, после функции crypt_r(), что может быть только если эта функция возвращает NULL, что сильно экзотично и я вообще не ожидал от неё такого.
P.P.S. Однако проверку на NULL добавил, хотя у меня сообщений об ошибке этой функции сейчас нет.
Ставлю статус как "Fixed", хотя у меня и нет этой проблемы.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 10. 10. 2017 [17:04]
|
fido_max
Maxim Kochetkov
Contributor
Создатель темы
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
|
В консоле такое еще остается:
Core dump process for back trace purchase to file AGLKS_core_2017-10-10_10.33.crash
106 ../sysdeps/x86_64/strlen.S: Нет такого файла или каталога.
Python Exception <class 'gdb.error'> No type named std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, float>>.:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Проблема есть, когда один и тот же пользователь с русскими буквами в двух БД: в основной без пароля, а в другой с паролем. Пароль может быть любым, а имя пользователя написано обязательно русскими буквами. Если ID пользователя написано латиницей, то падения не происходит.
[Сообщение редактировалось 1 раз(а), в последний раз 10.10.2017 в 17:05.]
|
Сообщение создано: 10. 10. 2017 [17:18]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"fido_max" wrote:
В консоле такое еще остается:
Core dump process for back trace purchase to file AGLKS_core_2017-10-10_10.33.crash
106 ../sysdeps/x86_64/strlen.S: Нет такого файла или каталога.
Python Exception <class 'gdb.error'> No type named std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, float>>.:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Это не существенно и внутренние дела gdb.
"fido_max" wrote:
Проблема есть, когда один и тот же пользователь с русскими буквами в двух БД: в основной без пароля, а в другой с паролем. Пароль может быть любым, а имя пользователя написано обязательно русскими буквами. Если ID пользователя написано латиницей, то падения не происходит.
Пусть он будет хоть в десяти, а грузится он по факту с первой, поэтому это не ключевой момент.
P.S. Пароль убрал — проблем нет.
P.P.S. Добавил пользователя с другого дампа — тоже никаких проблем.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 11. 10. 2017 [08:37]
|
fido_max
Maxim Kochetkov
Contributor
Создатель темы
Зарегистрирован(а) с: 28.10.2010
Сообщения: 129
|
Проблема остается.
./openscada_start: строка 128: 5490 Ошибка сегментирования (стек памяти сброшен на диск) $pCmd $@
Program rezult: 139
Core dump process for back trace purchase to file AGLKS_core_2017-10-11_08.33.crash
106 ../sysdeps/x86_64/strlen.S: Нет такого файла или каталога.
Python Exception <class 'gdb.error'> No type named std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, float>>.:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Воспроизвести можно даже проще.
1. Создаем пользователя русскими буквами. Ничего больше не настраиваем кроме ID при создании. Не сохраняем.
2. Пытаемся им залогинится - получаем падение.
На пользователя с латинскими буквами говорит ошибка аутентификации и не падает.
Проблема в русских буквах и отсутствии пароля
Вложенный файл
|
Сообщение создано: 11. 10. 2017 [08:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"fido_max" wrote:
Проблема остается.
Я ещё и не выгружал проверки-исправления!
"fido_max" wrote:
./openscada_start: строка 128: 5490 Ошибка сегментирования (стек памяти сброшен на диск) $pCmd $@
Program rezult: 139
Core dump process for back trace purchase to file AGLKS_core_2017-10-11_08.33.crash
106 ../sysdeps/x86_64/strlen.S: Нет такого файла или каталога.
Python Exception <class 'gdb.error'> No type named std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, float>>.:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Python Exception <class 'gdb.error'> value of type `crypt_data' requires 131232 bytes, which is more than max-value-size:
Воспроизвести можно даже проще.
1. Создаем пользователя русскими буквами. Ничего больше не настраиваем кроме ID при создании. Не сохраняем.
2. Пытаемся им залогинится - получаем падение.
Я сразу так делал и у меня ничего не падает.
Вот и увидел это сообщение от crypt_r(): АГЛКС > Безопасность: Error crypt_r(): Некорректный аргумент (22). После которого оно обычно и падало и которое из-за отсутствия установки пароля вообще, поскольку пустой это тоже установка пароля, в случае с хешем.
Добавил принудительную установку пустого пароля в конструкторе.
Learn, learn and learn better than work, work and work.
|
Сообщение создано: 11. 10. 2017 [17:24]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 3750
|
"roman" wrote:
Я ещё и не выгружал проверки-исправления!
Выгрузил.
Learn, learn and learn better than work, work and work.
|