
Bibliothèque C pour l'analyse XML, corrigée pour CVE-2022-23852, fournissant une analyse XML orientée flux avec des gestionnaires pour un traitement efficace des documents.
Ceci est Expat, une bibliothèque C pour analyser XML, créée par James Clark en 1997. Expat est un analyseur XML orienté flux. Cela signifie que vous enregistrez des gestionnaires auprès de l'analyseur avant de commencer 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 d'ouverture est un exemple du type de structures pour lesquelles vous pouvez enregistrer des gestionnaires.
Les utilisateurs de Windows devraient utiliser le
package expat_win32,
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 identique à la licence MIT/X Consortium.
Si vous construisez Expat à partir d'une extraction 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 ceci :
./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 devez d'abord exécuter le script shell de configuration dans le répertoire racine de la distribution :
./configure
De nombreuses options peuvent être fournies à configure (vous pouvez les 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 l'installation de 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 l'indiquer à 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 ainsi que l'index global des octets :
./configure CPPFLAGS=-DXML_LARGE_SIZE
Cependant, une telle modification serait un changement cassant pour l'ABI et n'est donc pas recommandée pour une utilisation générale — par exemple dans le cadre d'une distribution Linux — mais plutôt pour des constructions avec des besoins spéciaux.
Après avoir exécuté le script configure, la commande make construira les choses
et make install les installera dans 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 :
Patcher 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 en unsigned short (et les chaînes de version/erreur en char),
exécutez :
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Pour une sortie UTF-16 en wchar_t (y compris 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 prise en charge. 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 prise en charge.
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.