3.1 KiB
3.1 KiB
Задание: аудит проекта elmAI на баги и уязвимости
Контекст
elmAI — Android-приложение + Python-сервер для диагностики авто через ELM327. Текущая версия: v0.70.0-dev, ветка dynamic-tests. Уже было найдено и исправлено ~15 багов, но гарантии что всё чисто — нет.
Что анализировать
Проверь код на:
- Гонки потоков (Android: несколько потоков работают с UI и BT одновременно)
- Утечки ресурсов (BluetoothSocket, SQLite-соединения, таймеры)
- NPE / краши (особенно при отсутствии Bluetooth, ELM, интернета)
- Логические ошибки (состояния кнопки-трансформера, порядок инициализации)
- Сервер: SQL-инъекции, валидация входных данных, таймауты, OOM
- Потерю данных (динамические тесты, история, офлайн-режим)
Какие файлы читать
Android (максимально критичные)
android/app/src/main/java/ru/elmer/client/ui/MainActivity.kt— главный файл, стейт-машина, UIandroid/app/src/main/java/ru/elmer/client/elm/ElmChecker.kt— BT-подключение, DTC, ЭБУandroid/app/src/main/java/ru/elmer/client/script/DynamicCollector.kt— сбор 12 PID 250мсandroid/app/src/main/java/ru/elmer/client/script/ScriptRunnerService.kt— фоновая диагностикаandroid/app/src/main/java/ru/elmer/client/server/ServerClient.kt— HTTP к серверуandroid/app/src/main/java/ru/elmer/client/db/SessionDb.kt— локальная БД
Сервер
api/routes.py— эндпоинты (script, upload, chat, ping)api/db.py— SQLite-схема и миграцииapi/scripts.py— скрипты L0/L1/L2/dynamicbrain/prompts.py— SYSTEM_PROMPT, DYNAMIC_PROMPTbrain/client.py— HTTP-клиент к LLM
Что УЖЕ исправлено (не трать время)
- Двойной вызов checkLlm/checkEcu
- setIndicator не в UI-потоке
- Кнопка СТОП не работала
- ECU не зеленел после сканирования
- Дублирование данных при отправке dynamic_samples
- elmChecker переиспользуется между операциями
- 12 PID захардкожены (не дёргаем сервер)
- Диагноз сохраняется в локальную БД
- Миграции ALTER TABLE для старых БД
- deploy.sh на master вместо fat-client
Куда сохранить результат
Создай файл doc/audit-2026-06-07.md с отчётом.
Формат:
## Найдено
### 🔴 Критичные
- описание бага, файл, строка, как исправить
### 🟡 Средние
...
### 🟢 Косметика
...