
Libreria C per il parsing di XML, specificamente patchata per CVE-2022-23990, che fornisce un'implementazione di riferimento per l'analisi delle vulnerabilità e pratiche di codifica sicura.
Questo è Expat, una libreria C per il parsing XML, iniziata da James Clark nel 1997. Expat è un parser XML orientato al flusso. Ciò significa che registri degli handler con il parser prima di iniziare il parsing. Questi handler vengono chiamati quando il parser scopre le strutture associate nel documento in fase di parsing. Un tag di apertura è un esempio del tipo di strutture per le quali puoi registrare handler.
Gli utenti Windows dovrebbero usare il
pacchetto expat_win32,
che include sia librerie precompilate che eseguibili, e codice sorgente per
sviluppatori.
Expat è software libero.
Puoi copiarlo, distribuirlo e modificarlo secondo i termini della Licenza
contenuta nel file
COPYING
distribuito con questo pacchetto.
Questa licenza è la stessa della licenza MIT/X Consortium.
Se stai compilando Expat da un checkout dal repository Git, devi eseguire uno script che genera lo script configure utilizzando gli strumenti GNU autoconf e libtool. Per fare ciò, devi avere autoconf 2.58 o più recente. Esegui lo script in questo modo:
./buildconf.sh
Una volta fatto ciò, segui le stesse istruzioni della compilazione da una distribuzione sorgente.
Per compilare Expat da una distribuzione sorgente, devi prima eseguire lo script shell di configurazione nella directory di distribuzione di primo livello:
./configure
Ci sono molte opzioni che puoi fornire a configure (che puoi scoprire
eseguendo configure con l'opzione --help). Ma quella di maggior
interesse è quella che imposta la directory di installazione.
Di default, lo script configure imposterà le cose per installare
libexpat in /usr/local/lib, expat.h in /usr/local/include, e
xmlwf in /usr/local/bin. Se, per esempio, preferisci installare
in /home/me/mystuff/lib, /home/me/mystuff/include, e
/home/me/mystuff/bin, puoi comunicarlo a configure con:
./configure --prefix=/home/me/mystuff
Un'altra opzione interessante è abilitare il supporto per interi a 64 bit per i numeri di riga e colonna e l'indice byte complessivo:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Tuttavia, una tale modifica sarebbe una modifica sostanziale all'ABI e pertanto non è consigliata per un uso generale — ad esempio come parte di una distribuzione Linux — ma piuttosto per compilazioni con requisiti speciali.
Dopo aver eseguito lo script configure, il comando make compilerà
le cose e make install le installerà nella loro posizione corretta.
Dai un'occhiata al Makefile per conoscere opzioni aggiuntive
di make. Nota che devi avere permessi di scrittura nelle
directory in cui verranno installate le cose.
Se sei interessato a compilare Expat per fornire informazioni del documento
in codifica UTF-16 piuttosto che il default UTF-8, segui queste istruzioni
(dopo aver eseguito make distclean).
Nota che configuriamo con --without-xmlwf poiché xmlwf non supporta
ancora questa modalità di compilazione:
Modifica in massa i file Makefile.am per usare libexpatw.la come nome della libreria:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Esegui automake per riscrivere i file Makefile.in:
automake
Per output UTF-16 come unsigned short (e stringhe di versione/errore come char),
esegui:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Per output UTF-16 come wchar_t (incluse stringhe di versione/errore), esegui:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Nota: La seconda opzione richiede che libc sia compilato con -fshort-wchar.
Esegui make (che esclude xmlwf).
Esegui make install (di nuovo, esclude xmlwf).
L'uso di DESTDIR è supportato. Funziona come segue:
make install DESTDIR=/path/to/image
sovrascrive il DESTDIR impostato nel makefile, perché la priorità di
impostazione delle variabili è
Nota: Questo vale solo per la libreria Expat stessa, la compilazione di versioni UTF-16 di xmlwf e dei test non è attualmente supportata.
Quando usi Expat con un progetto che utilizza autoconf per la configurazione,
puoi usare la macro di probing in conftools/expat.m4 per determinare come
includere Expat. Vedi i commenti all'inizio di quel file per maggiori
informazioni.
Un manuale di riferimento è disponibile nel file doc/reference.html in questa
distribuzione.