
Libreria C per l'analisi di XML, corretta per CVE-2022-25315, che fornisce analisi XML orientata allo stream con handler per un'elaborazione efficiente dei documenti.
Questo è Expat, una libreria C per il parsing di XML, iniziata da James Clark nel 1997. Expat è un parser XML orientato al flusso. Questo significa che si registrano gestori con il parser prima di avviare il parsing. Questi gestori vengono chiamati quando il parser incontra le strutture associate nel documento analizzato. Un tag di apertura è un esempio del tipo di strutture per le quali si possono registrare gestori.
Gli utenti Windows dovrebbero usare il
pacchetto expat_win32,
che include sia librerie precompilate ed eseguibili, sia il codice sorgente per
gli 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 usando gli strumenti GNU autoconf e libtool. Per fare questo, devi avere autoconf 2.58 o successivo. Esegui lo script in questo modo:
./buildconf.sh
Una volta fatto questo, segui le stesse istruzioni previste per la compilazione da una distribuzione dei sorgenti.
Per compilare Expat da una distribuzione dei sorgenti, esegui prima lo script di shell di configurazione 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 maggiore interesse è quella che imposta la directory di installazione.
Di default, lo script configure imposterà il tutto 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 agli 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 comporterebbe una rottura dell'ABI (breaking change) e pertanto non è consigliata per l'uso generale — ad es. come parte di una distribuzione Linux — ma piuttosto per compilazioni con requisiti speciali.
Dopo aver eseguito lo script configure, il comando make compilerà
tutto e make install installerà il tutto nella posizione
appropriata. Dai un'occhiata al Makefile per conoscere le opzioni
aggiuntive di make. Nota che devi avere il permesso di scrittura
nelle directory in cui verrà installato il tutto.
Se sei interessato a compilare Expat per fornire informazioni
del documento nella codifica UTF-16 piuttosto che nella UTF-8 predefinita, segui
queste istruzioni (dopo aver eseguito make distclean).
Nota che configuriamo con --without-xmlwf poiché xmlwf non supporta
(ancora) questa modalità di compilazione:
Applica una patch di massa ai 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 l'output UTF-16 come unsigned short (e stringhe di versione/errore come char),
esegui:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Per l'output UTF-16 come wchar_t (incluse le stringhe di versione/errore), esegui:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Nota: quest'ultimo richiede anche una libc compilata con -fshort-wchar.
Esegui make (che esclude xmlwf).
Esegui make install (anche questo 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à nell'impostazione delle variabili è
Nota: questo si applica solo alla libreria Expat stessa; la compilazione delle versioni UTF-16 di xmlwf e dei test non è attualmente supportata.
Quando usi Expat con un progetto che usa autoconf per la configurazione,
puoi usare la macro di rilevamento 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.