Бібліотека jq 1.8.0: новий випуск для обробки JSON
Бібліотека jq 1.8.0: новий випуск для обробки JSON з покращеннями безпеки
1 червня, після майже півтора років розробки, відбувся випуск 1.8.0 бібліотеки та консольної утиліти jq, призначених для обробки даних у форматі JSON з використанням вбудованої надвисокорівневої функціональної мови програмування. Код проєкту написано мовою Сі та розповсюджується за ліцензією MIT. Для регулярних виразів опціонально може використовуватися бібліотека Oniguruma. Починаючи з цього випуску, шаблон нумерації версій змінено на X.Y.Z.
Виправлення вразливостей безпеки в jq
- CVE-2024-23337: виправлено цілочисельне переповнення у функціях jvp_array_write та jvp_object_rehash. Тепер максимальний розмір масивів та об’єктів встановлено у 536870912 (2^29) елементів.
- CVE-2024-53427: виправлено парсинг значень виду NaNчисло, наприклад NaN1, NaN10 тощо. Інші розширення JSON (подібні до NaN, Infinity) залишаються підтримуваними.
- CVE-2025-48060: виправлено переповнення буфера у функції jv_string_vfmt.
- Виправлено використання неініціалізованого значення у функції check_literal.
- Виправлено падіння у функціях strftime та strflocaltime.
- Виправлено необроблене цілочисельне переповнення у функції @base64d.
Оновлення консольної утиліти jq
- Виправлено поведінку ключа –indent 0, який раніше неявно вмикав режим –compact-output.
- Покращено повідомлення про помилки парсингу.
- Поліпшено обробку довгих значень змінної середовища JQ_COLORS, таких як truecolor.
- Виправлено поведінку –slurp –stream, коли вхідні дані не містять завершального символу нового рядка.
- Виправлено обробку пробілів при розборі чисел.
- Максимальну глибину парсингу JSON збільшено до 10000.
- Покращено кольорове форматування виводу.
- Інші незначні зміни.
Зміни в мові jq
- Додано функції trim, ltrim, rtrim, trimstr(…), add(…), skip(…, …), toboolean та формат @urid, зворотний до @uri.
- Функції indices(…), index(…) та rindex(…) тепер як індекс використовують кодові позиції Юнікоду. Використовуйте utf8bytelength для отримання позиції байта.
- Поліпшено продуктивність і поведінку функції tonumber, пов’язану з обробкою пробільних символів на початку та в кінці. Для їх видалення рекомендується використовувати функцію trim.
- Покращено форматування часу у функціях strftime та strflocaltime.
- Поліпшено продуктивність функції bsearch(…), яку було переписано на Сі.
- Поліпшено продуктивність функцій unique та unique_by(…).
- Видалено функцію pow10. Замість неї використовуйте функцію exp10.
- Видалено приватний і недокументований фільтр _nwise.
- Виправлено пріоритет унарних та бінарних арифметичних операторів.
- Додано підтримку багаторядкових коментарів у стилі Tcl (рядок після # \ вважається коментарем).
- Виправлено помилки у foreach та reduce.
- Додано підтримку перенесення рядків CRLF у фільтрах.
- Поліпшено продуктивність повторення рядків.
- Інші незначні зміни.
Також покращено документацію та тестування; виправлено помилки збірки. Крім того, у новому випуску бібліотеки jq для обробки JSON додано інші незначні зміни та оптимізації, які роблять роботу з нею ще більш зручною та ефективною.
Докладнішу інформацію можна знайти на офіційній сторінці релізу та на офіційному сайті jq.