
Biblioteca em C para analisar, editar e salvar metadados EXIF, com foco em abordar a CVE-2020-0198 no AOSP10.
libexif -------
libexif é uma biblioteca para analisar, editar e salvar dados EXIF. Ela foi projetada para substituir muitas implementações redundantes em utilitários de linha de comando e programas com GUI.
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 da 2.2) são suportadas. Muitas notas de fabricante (maker notes) de câmeras Canon, Casio, Epson, Fuji, Nikon, Olympus, Pentax e Sanyo também são suportadas.
libexif é escrito em C puro e não requer nenhuma biblioteca adicional. GNU gettext será usado para tradução de idiomas, se disponível.
libexif só consegue lidar com algumas notas de fabricante, e mesmo essas não muito bem. Mais trabalho precisa ser feito. Observe que libmnote foi mesclado com libexif - não é mais necessário.
Documentamos a API do libexif usando doxygen e disponibilizamos os resultados em http://libexif.sourceforge.net/api/
Os pequenos 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 libexif.
Para vincular libexif ao seu próprio pacote, recomendamos usar o utilitário pkgconfig (cf. http://www.freedesktop.org/wiki/Software/pkg-config/ Para sua conveniência, o libexif fornece tanto libexif-uninstalled.pc quanto instala libexif.pc.
Atualmente, conheço os seguintes frontends para libexif:
Se você gostaria de migrar seu programa para usar libexif ou adicionar suporte EXIF a ele, não hesite em contatar os autores.
Conheço as seguintes bibliotecas que usam ou foram inspiradas por libexif:
Realmente depende do seu ambiente o que fazer para compilar libexif. Compilar a partir do tarball de fontes 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 do libexif:
--disable-docs Para desabilitar a produção de qualquer documentação --enable-internal-docs Compilar documentação interna do código se Doxygen estiver disponível --enable-ship-binaries Para incluir DLLs do Windows em 'make dist'
Certas aplicações especializadas podem reduzir o tamanho do binário do 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. Aplicações que precisam acessar tags EXIF específicas e conhecidas e sabem de antemão o significado de seus dados não precisam dessas strings e podem economizar espaço considerável eliminando-as.
-DNO_VERBOSE_TAG_STRINGS Nomes e descrições de tags EXIF, mensagens de depuração, campos EXIF obrigatórios (desabilitando correção automática de tags) -DNO_VERBOSE_TAG_DATA Nomes de conteúdos de dados de tags enumerados
As traduções do libexif são feitas por voluntários trabalhando por conta própria, seja diretamente com o projeto libexif ou através de um de 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 idiomas coordenadas pelo Translation Project devem ser feitas através do seu site, mas todos os outros idiomas podem ser atualizados através do Launchpad (preferencialmente) ou enviando atualizações diretamente para a lista de e-mail dos desenvolvedores do libexif. Atualmente, os seguintes idiomas devem ser atualizados através do Translation Project: cs da de es fr it ja nl pl sk sv uk vi
Se você estiver interessado em traduzir libexif para um novo idioma, recomendamos que você se junte a um dos grupos de tradução acima e aproveite os sistemas que eles construíram para ajudá-lo. Uma declaração de tradução NÃO é necessária para libexif no Translation Project; ao fazer uma tradução, você concorda implicitamente em fornecê-la sob os mesmos termos de licença do resto do libexif (LGPL).
libexif foi originalmente escrito por Curtis Galloway [email protected]. Devido ao design original não suportar edição e salvamento, Lutz Mueller [email protected] reescreveu libexif do zero. Desde então, muitas outras pessoas contribuíram para libexif.
Alguns links que você pode querer conferir se estiver interessado em mais informações sobre EXIF.