
Biblioteca em C para analisar, editar e salvar dados EXIF, com foco em abordar a CVE-2020-0452 no AOSP10. Fornece API para extração e manipulação de metadados.
libexif -------
libexif é uma biblioteca para analisar, editar e salvar dados EXIF. Ela tem a intenção de substituir muitas implementações redundantes em utilitários de linha de comando e programas com GUIs.
libexif suporta análise, edição e salvamento de dados EXIF. Além disso, tem suporte a gettext. Todas as tags EXIF descritas no padrão EXIF 2.1 (e a maioria das da 2.2) são suportadas. Muitas 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 maker notes, e mesmo essas não muito bem. Mais trabalho precisa ser feito. Observe que libmnote foi incorporado ao libexif - ele 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 em 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 você tiver alguma dúvida sobre como usar o libexif.
Para vincular o libexif ao seu próprio pacote, recomendamos usar o utilitário pkgconfig (cf. Para sua conveniência, o libexif fornece libexif-uninstalled.pc e instala libexif.pc.
No momento, conheço os seguintes frontends para o libexif:
Se você gostaria de migrar seu programa para usar o 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 pelo libexif:
O que fazer para compilar o libexif realmente depende do seu ambiente. A compilação a partir do tar ball de origem 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 geração de qualquer documentação --enable-internal-docs Compilar a documentação interna do código se o Doxygen estiver disponível --enable-ship-binaries Para incluir DLLs do Windows em 'make dist'
Certos aplicativos especializados 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 da configuração. 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 um espaço considerável ao eliminá-las.
-DNO_VERBOSE_TAG_STRINGS Nomes e descrições das tags EXIF, mensagens de depuração, campos EXIF obrigatórios (desabilitando a correção automática de tags) -DNO_VERBOSE_TAG_DATA Nomes dos conteúdos enumerados dos dados das tags
As traduções do libexif são feitas por voluntários que trabalham por conta própria, diretamente com o projeto libexif ou por meio 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 nas traduções de idiomas coordenadas pelo Translation Project devem ser feitas por meio do site deles, mas todos os outros idiomas podem ser atualizados pelo Launchpad (preferido) ou enviando as atualizações diretamente para a lista de discussão dos desenvolvedores do libexif. Até o momento em que este texto foi escrito, os seguintes idiomas devem ser atualizados pelo Translation Project: cs da de es fr it ja nl pl sk sv uk vi
Se você tem interesse em traduzir o libexif para um novo idioma, recomendamos que você entre em um dos grupos de tradução acima e aproveite os sistemas que eles construíram para ajudá-lo. Uma declaração de isenção de responsabilidade de tradução NÃO é necessária para o libexif no Translation Project; ao fazer uma tradução, você concorda implicitamente em fornecê-la sob os mesmos termos de licença do restante do libexif (LGPL).
libexif foi originalmente escrito por Curtis Galloway [email protected]. Como o design original não suportava edição e salvamento, Lutz Mueller [email protected] reescreveu o libexif do zero. Desde então, muitas outras pessoas contribuíram para o libexif.
Alguns links que você pode querer conferir se tiver interesse em mais informações sobre EXIF.