
已修补的 libvpx 代码库,解决 CVE-2023-5217,支持消毒器并具有跨平台构建配置,用于安全的 VP8/VP9 编码。
README - 31 января 2019
Добро пожаловать в SDK кодеков WebM VP8/VP9!
КОМПИЛЯЦИЯ ПРИЛОЖЕНИЙ/БИБЛИОТЕК: Используемая система сборки аналогична autotools. Сборка обычно состоит из "настройки" с желаемыми опциями сборки, а затем использования GNU make для сборки приложения.
* Все цели x86 требуют установки ассемблера Yasm[1][2].
* Все сборки для Windows требуют установки Cygwin[3].
* Сборка документации требует Doxygen[4]. Если у вас нет
этого пакета, опция install-docs будет отключена.
* Загрузка данных для модульных тестов требует curl[5] и sha1sum.
sha1sum предоставляется через GNU coreutils, установленные по умолчанию на
многих *nix платформах, а также в MinGW и Cygwin. Если coreutils недоступен,
совместимую версию sha1sum можно собрать из
исходников[6]. Эти требования необязательны, если вы не запускаете модульные
тесты.
[1]: http://www.tortall.net/projects/yasm
[2]: Для Visual Studio базовый двоичный файл yasm (не vsyasm) должен находиться в
PATH для Visual Studio. Для VS2017 достаточно переименовать
yasm-<version>-<arch>.exe в yasm.exe и поместить его в:
Program Files (x86)/Microsoft Visual Studio/2017/<level>/Common7/Tools/
[3]: http://www.cygwin.com
[4]: http://www.doxygen.org
[5]: http://curl.haxx.se
[6]: http://www.microbrew.org/tools/md5sha1sum/
2. Сборка вне дерева исходников Сборки вне дерева исходников являются поддерживаемым методом сборки приложения. При сборке вне дерева исходников дерево исходного кода хранится отдельно от объектных файлов, создаваемых во время компиляции. Например:
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. Параметры конфигурации Скрипт 'configure' поддерживает ряд опций. Опцию --help можно использовать для получения списка поддерживаемых опций: $ ../libvpx/configure --help
Анализаторы компилятора Компиляторы добавили санитайзеры, которые инструментируют двоичные файлы информацией о вычислении адресов, использовании памяти, потоках, неопределенном поведении и других распространенных ошибках. Чтобы упростить сборку libvpx с некоторыми из этих функций, используйте tools/set_analyzer_env.sh перед запуском configure. Он установит компилятор и необходимые флаги для сборки, а также переменные среды, читаемые анализатором при тестировании двоичных файлов. $ source ../libvpx/tools/set_analyzer_env.sh address
Кросс-разработка Для кросс-разработки наиболее заметной опцией является --target. Самый актуальный список поддерживаемых целевых платформ можно найти внизу вывода --help скрипта configure. На момент написания список доступных целей:
arm64-android-gcc
arm64-darwin-gcc
arm64-linux-gcc
arm64-win64-gcc
arm64-win64-vs15
armv7-android-gcc
armv7-darwin-gcc
armv7-linux-rvct
armv7-linux-gcc
armv7-none-rvct
armv7-win32-gcc
armv7-win32-vs14
armv7-win32-vs15
armv7s-darwin-gcc
armv8-linux-gcc
mips32-linux-gcc
mips64-linux-gcc
ppc64le-linux-gcc
sparc-solaris-gcc
x86-android-gcc
x86-darwin8-gcc
x86-darwin8-icc
x86-darwin9-gcc
x86-darwin9-icc
x86-darwin10-gcc
x86-darwin11-gcc
x86-darwin12-gcc
x86-darwin13-gcc
x86-darwin14-gcc
x86-darwin15-gcc
x86-darwin16-gcc
x86-darwin17-gcc
x86-iphonesimulator-gcc
x86-linux-gcc
x86-linux-icc
x86-os2-gcc
x86-solaris-gcc
x86-win32-gcc
x86-win32-vs14
x86-win32-vs15
x86_64-android-gcc
x86_64-darwin9-gcc
x86_64-darwin10-gcc
x86_64-darwin11-gcc
x86_64-darwin12-gcc
x86_64-darwin13-gcc
x86_64-darwin14-gcc
x86_64-darwin15-gcc
x86_64-darwin16-gcc
x86_64-darwin17-gcc
x86_64-iphonesimulator-gcc
x86_64-linux-gcc
x86_64-linux-icc
x86_64-solaris-gcc
x86_64-win64-gcc
x86_64-win64-vs14
x86_64-win64-vs15
generic-gnu
Цель generic-gnu в сочетании с переменной среды CROSS может использоваться для кросс-компиляции архитектур, которые явно не перечислены, если инструментарий является кросс-GNU (gcc/binutils) инструментарием. Другие POSIX-инструментарии, вероятно, также будут работать. Например, для сборки с использованием инструментария mipsel-linux-uclibc можно использовать следующую команду (обратите внимание на синтаксис POSIX SH, адаптируйте под свою оболочку по необходимости):
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
Кроме того, выполняемые файлы, которые будут вызваны, можно переопределить, указав переменные среды: CC, AR, LD, AS, STRIP, NM. Дополнительные флаги можно передать этим исполняемым файлам с помощью CFLAGS, LDFLAGS и ASFLAGS.
ТЕСТОВЫЕ ВЕКТОРЫ VP8/VP9: Тестовые векторы можно загрузить и проверить с помощью системы сборки после запуска configure. Чтобы указать альтернативный каталог, можно использовать переменную среды LIBVPX_TEST_DATA_PATH.
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
СТИЛЬ КОДА: Стиль кодирования, используемый в этом проекте, обеспечивается с помощью clang-format, используя конфигурацию, содержащуюся в файле .clang-format в корне репозитория.
Перед отправкой изменений на рецензирование вы можете отформатировать свой код с помощью:
$ clang-format -i --style=file
$(git diff --name-only --diff-filter=ACMR '.[hc]' '.cc')
Проверьте файл .clang-format на предмет версии, использованной для его создания, если есть какие-либо различия между вашим локальным форматированием и системой рецензирования.
См. также: http://clang.llvm.org/docs/ClangFormat.html
ПОДДЕРЖКА Эта библиотека является проектом с открытым исходным кодом, поддерживаемым своим сообществом. Пожалуйста, отправляйте электронные письма на [email protected] для получения помощи.