
Base de code libvpx corrigée traitant CVE-2023-5217 avec prise en charge du sanitizer et configurations de build multiplateformes pour un encodage VP8/VP9 sécurisé.
README - 31 janvier 2019
Bienvenue dans le SDK des codecs WebM VP8/VP9 !
COMPILATION DES APPLICATIONS/BIBLIOTHÈQUES : Le système de construction utilisé est similaire à autotools. La construction consiste généralement à « configurer » avec les options de construction souhaitées, puis à utiliser GNU make pour construire l'application.
* Toutes les cibles x86 nécessitent l'assembleur Yasm[1] installé[2].
* Toutes les constructions Windows nécessitent l'installation de Cygwin[3].
* La construction de la documentation nécessite Doxygen[4]. Si vous ne possédez pas
ce paquet, l'option install-docs sera désactivée.
* Le téléchargement des données pour les tests unitaires nécessite curl[5] et sha1sum.
sha1sum est fourni via les GNU coreutils, installé par défaut sur de nombreuses
plateformes *nix, ainsi que MinGW et Cygwin. Si coreutils n'est pas disponible,
une version compatible de sha1sum peut être construite à partir des sources[6].
Ces prérequis sont optionnels si vous n'exécutez pas les tests unitaires.
[1]: http://www.tortall.net/projects/yasm
[2]: Pour Visual Studio, le binaire yasm de base (pas vsyasm) doit se trouver dans le
PATH pour Visual Studio. Pour VS2017, il suffit de renommer
yasm-<version>-<arch>.exe en yasm.exe et de le placer dans :
Program Files (x86)/Microsoft Visual Studio/2017/<niveau>/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. Constructions hors arbre Les constructions hors arbre sont une méthode prise en charge pour construire l'application. Pour une construction hors arbre, l'arbre source est maintenu séparé des fichiers objets produits lors de la compilation. Par exemple :
$ mkdir build
$ cd build
$ ../libvpx/configure <options>
$ make
3. Options de configuration Le script 'configure' prend en charge un certain nombre d'options. L'option --help peut être utilisée pour obtenir la liste des options prises en charge : $ ../libvpx/configure --help
Analyseurs de compilation Les compilateurs ont ajouté des sanitizers qui instrumentent les binaires avec des informations sur le calcul d'adresse, l'utilisation de la mémoire, le multithreading, le comportement indéfini, et d'autres erreurs courantes. Pour simplifier la construction de libvpx avec certaines de ces fonctionnalités, utilisez tools/set_analyzer_env.sh avant d'exécuter configure. Il définira le compilateur et les indicateurs nécessaires pour la construction ainsi que les variables d'environnement lues par l'analyseur lors des tests des binaires. $ source ../libvpx/tools/set_analyzer_env.sh address
Développement croisé Pour le développement croisé, l'option la plus notable est l'option --target. La liste la plus à jour des cibles prises en charge se trouve en bas de la sortie --help du script configure. Au moment de l'écriture de ce document, la liste des cibles disponibles est :
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
La cible generic-gnu, en conjonction avec la variable d'environnement CROSS, peut être utilisée pour la compilation croisée d'architectures qui ne sont pas explicitement listées, si la chaîne d'outils est une chaîne d'outils GNU croisée (gcc/binutils). D'autres chaînes d'outils POSIX fonctionneront probablement aussi. Par exemple, pour construire avec la chaîne d'outils mipsel-linux-uclibc, la commande suivante pourrait être utilisée (noter la syntaxe POSIX SH, adaptez-la à votre shell si nécessaire) :
$ CROSS=mipsel-linux-uclibc- ../libvpx/configure
De plus, les exécutables à invoquer peuvent être remplacés en spécifiant les variables d'environnement : CC, AR, LD, AS, STRIP, NM. Des indicateurs supplémentaires peuvent être passés à ces exécutables avec CFLAGS, LDFLAGS et ASFLAGS.
VECTEURS DE TEST VP8/VP9 : Les vecteurs de test peuvent être téléchargés et vérifiés à l'aide du système de construction après avoir exécuté configure. Pour spécifier un répertoire alternatif, la variable d'environnement LIBVPX_TEST_DATA_PATH peut être utilisée.
$ ./configure --enable-unit-tests $ LIBVPX_TEST_DATA_PATH=../libvpx-test-data make testdata
STYLE DE CODE : Le style de codage utilisé par ce projet est appliqué avec clang-format en utilisant la configuration contenue dans le fichier .clang-format à la racine du dépôt.
Avant de pousser des modifications pour révision, vous pouvez formater votre code avec :
$ clang-format -i --style=file
$(git diff --name-only --diff-filter=ACMR '.[hc]' '.cc')
Vérifiez le fichier .clang-format pour la version utilisée pour le générer s'il y a une différence entre votre formatage local et le système de révision.
Voir aussi : http://clang.llvm.org/docs/ClangFormat.html
ASSISTANCE Cette bibliothèque est un projet open source soutenu par sa communauté. Veuillez envoyer un e-mail à [email protected] pour obtenir de l'aide.