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 в інт закономірно видавала ексепшен.

December 2025

S M T W T F S
 123456
78910111213
14151617 181920
21222324252627
28293031   
Page generated Thursday, March 19th, 2026 02:31 pm
Powered by Dreamwidth Studios