
Libreria C per parsing XML orientato al flusso con focus sull'analisi delle vulnerabilità e lo sfruttamento di CVE-2022-43680, abilitando fuzzing e test di sicurezza a livello binario.
Expat, Release 2.1.0
Questa è Expat, una libreria C per il parsing XML, scritta da James Clark. Expat è un parser XML orientato al flusso. Ciò significa che è possibile registrare gestori (handler) con il parser prima di avviare il parsing. Questi gestori 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 è possibile registrare gestori.
Gli utenti Windows dovrebbero utilizzare il pacchetto expat_win32bin, che include sia librerie precompilate che eseguibili, e il codice sorgente per sviluppatori.
Expat è software libero. È possibile 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.
Le versioni di Expat che hanno un numero di versione minore dispari (il numero centrale nella release sopra), sono versioni di sviluppo e devono essere considerate come software beta. Le release con numeri di versione minore pari sono destinate a essere software di livello produzione.
Se si sta compilando Expat da un checkout dal repository CVS, è necessario eseguire uno script che genera lo script configure utilizzando gli strumenti GNU autoconf e libtool. Per farlo, è necessario avere autoconf 2.58 o più recente. Eseguire lo script in questo modo:
./buildconf.sh
Una volta fatto ciò, seguire le stesse istruzioni della compilazione da una distribuzione sorgente.
Per compilare Expat da una distribuzione sorgente, eseguire prima lo script di shell di configurazione nella directory di distribuzione di livello superiore:
./configure
Ci sono molte opzioni che è possibile fornire a configure (che si possono 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à le cose per installare libexpat in /usr/local/lib, expat.h in /usr/local/include e xmlwf in /usr/local/bin. Se, ad esempio, si preferisce installare in /home/me/mystuff/lib, /home/me/mystuff/include e /home/me/mystuff/bin, si può comunicare a configure con:
./configure --prefix=/home/me/mystuff
Un'altra opzione interessante è abilitare il supporto per numeri interi a 64 bit per i numeri di riga e colonna e l'indice complessivo dei byte:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Tuttavia, una tale modifica sarebbe un cambiamento che rompe l'ABI e pertanto non è raccomandata 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à le cose nella loro posizione corretta. Dare un'occhiata al "Makefile" per apprendere ulteriori opzioni di "make". Notare che è necessario avere il permesso di scrittura nelle directory in cui verranno installate le cose.
Se si è interessati a compilare Expat per fornire informazioni sul documento nella codifica UTF-16 invece del default UTF-8, seguire queste istruzioni (dopo aver eseguito "make distclean"):
1. Per output UTF-16 come unsigned short (e stringhe di versione/errore
come char), eseguire:
./configure CPPFLAGS=-DXML_UNICODE
Per output UTF-16 come wchar_t (incluse stringhe di versione/errore),
eseguire:
./configure CFLAGS="-g -O2 -fshort-wchar" \
CPPFLAGS=-DXML_UNICODE_WCHAR_T
2. Modificare il MakeFile, cambiando:
LIBRARY = libexpat.la
in:
LIBRARY = libexpatw.la
(Notare la "w" aggiuntiva nel nome della libreria.)
3. Eseguire "make buildlib" (che compila solo la libreria).
Oppure, per saltare il passo 2, eseguire "make buildlib LIBRARY=libexpatw.la".
4. Eseguire "make installlib" (che installa solo la libreria).
Oppure, se il passo 2 è stato omesso, eseguire "make installlib LIBRARY=libexpatw.la".
L'uso di DESTDIR o INSTALL_ROOT è abilitato, con INSTALL_ROOT come valore predefinito per DESTDIR, e il resto del make file utilizza solo DESTDIR. Funziona come segue: $ make install DESTDIR=/path/to/image sovrascrive DESTDIR impostato nel makefile, mentre entrambi $ INSTALL_ROOT=/path/to/image make install $ make install INSTALL_ROOT=/path/to/image usano DESTDIR=$(INSTALL_ROOT), anche se DESTDIR è eventualmente definito nell' ambiente, perché la priorità nell'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.
Nota per gli utenti Solaris: Il comando "ar" si trova solitamente in "/usr/ccs/bin", che non è nel PATH predefinito. Sarà necessario aggiungerlo al proprio PATH per il comando "make", e probabilmente anche passare a GNU make (il "make" presente in /usr/ccs/bin sembra non funzionare correttamente -- apparentemente non comprende le direttive .PHONY). Se si utilizza ksh o bash, usare questo comando per compilare:
PATH=/usr/ccs/bin:$PATH make
Quando si utilizza Expat con un progetto che usa autoconf per la configurazione, si può usare la macro di probing in conftools/expat.m4 per determinare come includere Expat. Vedere i commenti all'inizio di quel file per maggiori informazioni.
Un manuale di riferimento è disponibile nel file doc/reference.html in questa distribuzione.
La homepage di questo progetto è http://www.libexpat.org/. Ci sono collegamenti lì per connettersi alla pagina delle segnalazioni di bug. Se è necessario segnalare un bug e non si ha accesso a un browser, si può anche inviare una segnalazione di bug via email a [email protected].
Le discussioni relative alla direzione dello sviluppo futuro di expat avvengono su [email protected]. Gli archivi di questa lista e di altre liste relative a Expat possono essere trovati su:
http://mail.libexpat.org/mailman/listinfo/