
Bibliothèque C pour l'analyse XML, spécifiquement corrigée pour CVE-2022-23990, fournissant une implémentation de référence pour l'analyse de vulnérabilités et les pratiques de codage sécurisé.
Ceci est Expat, une bibliothèque C pour analyser XML, démarrée par James Clark en 1997. Expat est un analyseur XML orienté flux. Cela signifie que vous enregistrez des gestionnaires (handlers) avec l'analyseur avant de démarrer l'analyse. Ces gestionnaires sont appelés lorsque l'analyseur découvre les structures associées dans le document en cours d'analyse. Une balise ouvrante est un exemple du type de structures pour lesquelles vous pouvez enregistrer des gestionnaires.
Les utilisateurs Windows devraient utiliser le
expat_win32 package,
qui inclut à la fois des bibliothèques précompilées et des exécutables, ainsi que le code source pour
les développeurs.
Expat est un logiciel libre.
Vous pouvez copier, distribuer et le modifier selon les termes de la Licence
contenue dans le fichier
COPYING
distribué avec ce paquet.
Cette licence est la même que la licence MIT/X Consortium.
Si vous construisez Expat à partir d'un checkout du dépôt Git, vous devez exécuter un script qui génère le script configure en utilisant les outils GNU autoconf et libtool. Pour ce faire, vous devez avoir autoconf 2.58 ou plus récent. Exécutez le script comme suit :
./buildconf.sh
Une fois cela fait, suivez les mêmes instructions que pour la construction à partir d'une distribution source.
Pour construire Expat à partir d'une distribution source, vous exécutez d'abord le script shell de configuration dans le répertoire de distribution de premier niveau :
./configure
Il existe de nombreuses options que vous pouvez fournir à configure (que vous
pouvez découvrir en exécutant configure avec l'option --help). Mais la
plus intéressante est celle qui définit le répertoire d'installation.
Par défaut, le script configure configurera les choses pour installer
libexpat dans /usr/local/lib, expat.h dans /usr/local/include, et
xmlwf dans /usr/local/bin. Si, par exemple, vous préférez installer
dans /home/me/mystuff/lib, /home/me/mystuff/include, et
/home/me/mystuff/bin, vous pouvez indiquer cela à configure avec :
./configure --prefix=/home/me/mystuff
Une autre option intéressante est d'activer le support des entiers 64 bits pour les numéros de ligne et de colonne et l'index global d'octets :
./configure CPPFLAGS=-DXML_LARGE_SIZE
Cependant, une telle modification serait un changement cassant de l'ABI et n'est donc pas recommandée pour un usage général — par exemple dans le cadre d'une distribution Linux — mais plutôt pour des constructions avec des exigences spéciales.
Après avoir exécuté le script configure, la commande make construira
les choses et make install installera les choses à leur emplacement
approprié. Jetez un œil au Makefile pour en savoir plus sur les options
supplémentaires de make. Notez que vous devez avoir la permission d'écriture
dans les répertoires où les choses seront installées.
Si vous êtes intéressé par la construction d'Expat pour fournir des informations
de document en encodage UTF-16 plutôt que l'UTF-8 par défaut, suivez ces
instructions (après avoir exécuté make distclean).
Veuillez noter que nous configurons avec --without-xmlwf car xmlwf ne
supporte pas encore ce mode de compilation :
Patchez en masse les fichiers Makefile.am pour utiliser libexpatw.la
comme nom de bibliothèque :
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Exécutez automake pour réécrire les fichiers Makefile.in :
automake
Pour une sortie UTF-16 sous forme de unsigned short (et les chaînes de version/erreur en char),
exécutez :
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Pour une sortie UTF-16 sous forme de wchar_t (incluant les chaînes de version/erreur), exécutez :
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Remarque : Ce dernier nécessite que libc soit compilé avec -fshort-wchar, également.
Exécutez make (qui exclut xmlwf).
Exécutez make install (encore une fois, exclut xmlwf).
L'utilisation de DESTDIR est supportée. Cela fonctionne comme suit :
make install DESTDIR=/path/to/image
remplace le DESTDIR défini dans le makefile, car la priorité de définition
des variables est
Remarque : Cela ne s'applique qu'à la bibliothèque Expat elle-même, la construction de versions UTF-16 de xmlwf et des tests n'est actuellement pas supportée.
Lorsque vous utilisez Expat avec un projet utilisant autoconf pour la configuration,
vous pouvez utiliser la macro de détection dans conftools/expat.m4 pour déterminer
comment inclure Expat. Consultez les commentaires en haut de ce fichier pour plus
d'informations.
Un manuel de référence est disponible dans le fichier doc/reference.html de cette
distribution.