
Android Bluetooth 스택 (AOSP 10 r33) — CVE-2021-0435 수정 사항이 포함되어 있으며, Bluetooth 페어링의 원격 코드 실행 문제를 해결합니다.
그냥 AOSP를 빌드하세요. Fluoride는 기본적으로 포함되어 있습니다.
Ubuntu용 지침이며, Clang 3.5.0을 사용한 14.04와 Clang 3.8.0을 사용한 16.10에서 테스트되었습니다.
mkdir ~/fluoride
cd ~/fluoride
git clone https://android.googlesource.com/platform/system/bt
의존성 설치 (sudo 권한 필요):
cd ~/fluoride/bt
build/install_deps.sh
그런 다음 서드파티 의존성을 가져옵니다:
cd ~/fluoride/bt
mkdir third_party
cd third_party
git clone https://github.com/google/googletest.git
git clone https://android.googlesource.com/platform/external/aac
git clone https://android.googlesource.com/platform/external/libchrome
git clone https://android.googlesource.com/platform/external/libldac
git clone https://android.googlesource.com/platform/external/modp_b64
git clone https://android.googlesource.com/platform/external/tinyxml2
그리고 서드파티 의존성의 서드파티 의존성도 가져옵니다:
cd fluoride/bt/third_party/libchrome/base/third_party
mkdir valgrind
cd valgrind
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/valgrind.h?format=TEXT | base64 -d > valgrind.h
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/memcheck.h?format=TEXT | base64 -d > memcheck.h
참고: system/bt가 AOSP에서 체크아웃된 경우, 소스를 다운로드하는 대신 심볼릭 링크를 생성하세요.
cd system/bt
mkdir third_party
cd third_party
ln -s ../../../external/aac aac
ln -s ../../../external/libchrome libchrome
ln -s ../../../external/libldac libldac
ln -s ../../../external/modp_b64 modp_b64
ln -s ../../../external/tinyxml2 tinyxml2
ln -s ../../../external/googletest googletest
cd ~/fluoride/bt
gn gen out/Default
cd ~/fluoride/bt
ninja -C out/Default all
그러면 모든 대상(공유 라이브러리, 실행 파일, 테스트 등)이 빌드되어
out/Default에 배치됩니다. 개별 대상을 빌드하려면 "all" 대신 원하는
대상을 지정하세요(예: ninja -C out/Default net_test_osi).
cd ~/fluoride/bt/out/Default
LD_LIBRARY_PATH=./ ./bluetoothtbd -create-ipc-socket=fluoride
Chromium 프로젝트의 Eclipse 설정 지침을 "Optional: Building inside Eclipse" 섹션까지 따릅니다 (해당 섹션은 수행하지 마세요. 다른 방식으로 설정할 것입니다)
Eclipse 설정 생성:
cd system/bt
gn gen --ide=eclipse out/Default
Eclipse에서 File->Import->C/C++->C/C++ Project Settings를 선택하고 system/bt/out/Default 아래의 XML 위치를 선택합니다.
프로젝트를 마우스 오른쪽 버튼으로 클릭합니다. Preferences->C/C++ Build->Builder Settings로 이동합니다. "Use default build command"를 해제하고 대신 "ninja -C out/Default"를 사용합니다.
Behaviour 탭으로 이동하여 clean 명령을 "-t clean"으로 변경합니다.