diff options
author | galaxycrab <UgnineSirdis@ydb.tech> | 2022-10-31 13:50:00 +0300 |
---|---|---|
committer | galaxycrab <UgnineSirdis@ydb.tech> | 2022-10-31 13:50:00 +0300 |
commit | f7d9221df266d13b4a7036d90d4fe374c7b3e056 (patch) | |
tree | ab29ccd7db373b54b85d6a750ee21909523bcdfe /library/python/testing/yatest_common/yatest/common/runtime.py | |
parent | 1a8010a735a218f84480e8ef1e6ffd5a45033c94 (diff) | |
download | ydb-f7d9221df266d13b4a7036d90d4fe374c7b3e056.tar.gz |
Fix crash caused by writing nonutf-8 to issue message
В issue поле Message является публичным, поэтому легко записать в него всё что угодно. Хотя кострукторы TIssue делают эскейпинг строк. В S3 source был парсинг сжатых бинарных данных как json'а (юзер забыл указать в биндинге, что файл сжат с помощью gzip) и парсер (clickhouse) выдал в качестве ошибки кусочек этих данных, который затем пошёл в Message (напрямую, не через конструктор, который эскейпит их). В результате не-utf-8 строка была записана в протобуф и передана в акторном сообщении на другую ноду. Другая нода упала в верифайке на распаковке сообщения: протобуф проверяет, что поле типа string должно содержать строку в utf-8.
Сделал поле Message private и в методе SetMessage() вызвал эскейпинг строки, такой же, какой делается в конструкторе.
Diffstat (limited to 'library/python/testing/yatest_common/yatest/common/runtime.py')
0 files changed, 0 insertions, 0 deletions