zhiva: (Default)
[personal profile] zhivaTuesday, May 28th, 2019 02:07 pm
They are funny 'cause they are true!

Один Clever Guy закодив витягування локалізованих повідомлень про помилки АПІ по іменах ключів в локалізації, виду error_0x_1234_ErrorNameHere (код у шістнадцятковій системі). Для цього діла він написав регекс error_0x([\d\w]+)_ - регекс мав витягати код помилки як першу знайдену групу, далі воно конвертилося в інт, і виступало як ключ у мапі, в яку складалися локалізовані повідомлення помилок. Потім, коли треба було діставати локалізоване повідомлення, воно вже діставалося з цієї мапи по коду помилки.

Через кілька тижнів після того, як Clever Guy пішов з компанії, була додана нова АПІ помилка з ключем локалізації виду error_0x1234_Error_name_here. Апп почав падати на всіх АПІ помилках. Невірний пароль? креш. Токен застарів? креш. І так далі, і так далі.

А все через те, що клас \w - це цифри, букви та підкреслення. Його регекс видавав 1234_Error_name замість 1234. При складанні мапи локалізованих повідомлень спроба сконвертити 1234_Error_name в інт закономірно видавала ексепшен.

April 2025

S M T W T F S
  12345
6789101112
13141516171819
202122 23242526
27282930   
Page generated Sunday, July 6th, 2025 02:30 am
Powered by Dreamwidth Studios