
Biblioteca em C para analisar, editar e salvar dados EXIF, corrigida para CVE-2020-0181 a fim de evitar estouro de buffer de heap na análise de tags EXIF.
libexif -------
A libexif é uma biblioteca para analisar, editar e salvar dados EXIF. Ela destina-se a substituir muitas implementações redundantes em utilitários de linha de comando e programas com GUIs.
A libexif suporta análise, edição e salvamento de dados EXIF. Além disso, possui suporte a gettext. Todas as tags EXIF descritas no padrão EXIF 2.1 (e a maioria das 2.2) são suportadas. Muitas notas de fabricante de câmeras Canon, Casio, Epson, Fuji, Nikon, Olympus, Pentax e Sanyo também são suportadas.
A libexif é escrita em C puro e não requer nenhuma biblioteca adicional. O GNU gettext será usado para tradução de idiomas, se disponível.
A libexif só consegue lidar com algumas notas de fabricante, e mesmo essas não muito bem. Mais trabalho precisa ser feito. Observe que o libmnote foi mesclado à libexif - ele não é mais necessário.
Documentamos a API da libexif usando doxygen e estamos disponibilizando os resultados em http://libexif.sourceforge.net/api/
Os programas de teste no diretório test ilustram como criar dados EXIF válidos do zero, como salvar dados EXIF e como carregar dados EXIF a partir de dados na memória. Há também alguns programas de exemplo simples disponíveis no diretório contrib/examples/. Não hesite em nos contatar em [email protected] se tiver alguma dúvida sobre como usar a libexif.
Para vincular a libexif ao seu próprio pacote, recomendamos usar o utilitário pkgconfig (cf. Para sua conveniência, a libexif fornece tanto o libexif-uninstalled.pc quanto instala o libexif.pc.
No momento, conheço os seguintes frontends para libexif:
Se você quiser migrar seu programa para usar libexif ou adicionar suporte a EXIF a ele, não hesite em contatar os autores.
Conheço as seguintes bibliotecas que usam ou foram inspiradas pela libexif:
Realmente depende do seu ambiente o que fazer para conseguir compilar a libexif. Construir a partir do pacote de código-fonte geralmente envolve os comandos:
./configure make sudo make install
Ao compilar a partir do código-fonte do CVS, algo como o seguinte será necessário:
gettextize mv po/Makevars.template po/Makevars aclocal -I auto-m4 -I m4m autoheader libtoolize --force automake --add-missing autoconf ./configure make
Ou, provavelmente apenas:
autoreconf -i ./configure make
Além dos argumentos padrão, o configure aceita vários específicos da libexif:
--disable-docs To disable producing any documentation --enable-internal-docs Build internal code docs if Doxygen available --enable-ship-binaries To include Windows DLLs in 'make dist'
Certos aplicativos especializados podem reduzir o tamanho do binário da libexif definindo uma ou ambas as macros a seguir na variável de ambiente CPPFLAGS no momento do configure. Cada uma remove certos tipos de strings de texto e constantes do binário. Aplicativos que precisam acessar tags EXIF específicas e conhecidas e sabem antecipadamente o significado de seus dados não precisam dessas strings e podem economizar espaço considerável ao eliminá-las.
-DNO_VERBOSE_TAG_STRINGS Names and descriptions of EXIF tags, debug messages, mandatory EXIF fields (disabling auto-tag-fixup) -DNO_VERBOSE_TAG_DATA Names of enumerated tag data contents
As traduções da libexif são feitas por voluntários trabalhando por conta própria, diretamente com o projeto libexif ou por meio de um dos dois sites de coordenação de tradução, o Translation Project http://translationproject.org/domain/libexif.html e o Launchpad https://translations.edge.launchpad.net/ubuntu/precise/+source/libexif/+pots/libexif-12. Quaisquer atualizações de traduções de idioma coordenadas pelo Translation Project devem ser feitas por meio do seu site, mas todos os outros idiomas podem ser atualizados pelo Launchpad (preferencialmente) ou enviando atualizações para a lista de e-mail dos desenvolvedores da libexif diretamente. No momento em que este texto foi escrito, os seguintes idiomas devem ser atualizados por meio do Translation Project: cs da de es fr it ja nl pl sk sv uk vi
Se você estiver interessado em traduzir a libexif para um novo idioma, recomendamos que se junte a um dos grupos de tradução acima e aproveite os sistemas que eles construíram para ajudá-lo. Um aviso de tradução NÃO é exigido para a libexif no Translation Project; ao fazer uma tradução, você concorda implicitamente em fornecê-la sob os mesmos termos de licença do restante da libexif (LGPL).
A libexif foi originalmente escrita por Curtis Galloway [email protected]. Como o design original não suportava edição e salvamento, Lutz Mueller [email protected] reescreveu a libexif do zero. Desde então, muitas outras pessoas contribuíram para a libexif.
Alguns links que você pode querer conferir se estiver interessado em mais informações sobre EXIF.