
Libreria C per il parsing di XML, corretta per CVE-2022-25235, che fornisce parsing orientato allo stream con registrazione di handler e opzioni di configurazione della build.
Questo è Expat, una libreria C per l'analisi XML, iniziata da James Clark nel 1997. Expat è un parser XML orientato al flusso (stream). Ciò significa che si registrano dei gestori (handler) con il parser prima di avviare l'analisi. Questi gestori vengono chiamati quando il parser scopre le strutture associate nel documento che viene analizzato. Un tag di apertura è un esempio del tipo di strutture per cui puoi registrare dei gestori.
Gli utenti Windows dovrebbero usare il
pacchetto expat_win32,
che include sia librerie ed eseguibili precompilati, sia il 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 a partire da un checkout del repository Git, devi eseguire uno script che genera lo script configure utilizzando gli strumenti GNU autoconf e libtool. Per farlo, devi avere autoconf 2.58 o successivo. Esegui lo script in questo modo:
./buildconf.sh
Una volta fatto, segui le stesse istruzioni della compilazione da una distribuzione sorgente.
Per compilare Expat da una distribuzione sorgente, esegui prima lo script di configurazione shell nella directory principale della distribuzione:
./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, ad 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 a interi a 64 bit per i numeri di riga e colonna e per l'indice complessivo dei byte:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Tuttavia, una tale modifica costituirebbe un cambiamento di rottura dell'ABI e non è quindi consigliata per uso generale — ad esempio come parte di una distribuzione Linux — ma piuttosto per build con requisiti speciali.
Dopo aver eseguito lo script configure, il comando make compilerà
le cose e make install installerà il tutto nella posizione corretta.
Dai un'occhiata al Makefile per conoscere ulteriori opzioni make.
Nota che devi avere il permesso di scrittura nelle directory in cui
verrà installato.
Se sei interessato a compilare Expat per fornire informazioni sui documenti
nella codifica UTF-16 invece del default UTF-8, segui queste istruzioni
(dopo aver eseguito make distclean).
Ti preghiamo di notare che configuriamo con --without-xmlwf poiché xmlwf
non supporta ancora questa modalità di compilazione:
Applica una patch massiva ai file Makefile.am per utilizzare 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: Quest'ultimo richiede la libc compilata con -fshort-wchar.
Esegui make (che esclude xmlwf).
Esegui make install (ancora, esclude xmlwf).
L'uso di DESTDIR è supportato. Funziona nel seguente modo:
make install DESTDIR=/path/to/image
sovrascrive il DESTDIR impostato nel makefile, perché la priorità
nell'assegnazione 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 utilizzare 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.