chiark / gitweb /
Rewrite scanner logic
authorDaniel Martí <mvdan@mvdan.cc>
Mon, 14 Sep 2015 05:11:53 +0000 (22:11 -0700)
committerDaniel Martí <mvdan@mvdan.cc>
Mon, 14 Sep 2015 05:17:37 +0000 (22:17 -0700)
commit055759cf761c7d30595d8a3f43fc4ef4c0acdbf4
tree376c8f2e84d24c2f61f5b4cc34e1c71653139688
parent1a3816acfb550bb802f3562e078102e55c7fc18f
Rewrite scanner logic

Initially, the scanner used libmagic which used magic numbers in the file's
content to detect what kind of file it appears to be. Since that library isn't
available on all systems, we added support for two other libraries, mimetypes
amongst them.

The issue with mimetypes is that it only uses the file's extension, not its
actual content. So this ends in variable behaviour depending on what system
you're using fdroidserver on. For example, an executable binary without
extension would be ignored if mimetypes was being used.

We now drop all libraries - mimetypes too as it depends on the system's
mime.types file - and instead check extensions ourselves. On top of that, do
a simple binary content check to find binary executables that don't have an
extension.

The new in-house code without any dependencies doesn't add any new checks, so
no builds should break. The current checks still work:

 % fdroid scanner app.openconnect:1029
[...]
Found executable binary at assets/raw/armeabi/curl
Found executable binary at assets/raw/mips/curl
Found executable binary at assets/raw/x86/curl
Found JAR file at lib/XposedBridgeApi-54.jar
Found JAR file at libs/acra-4.5.0.jar
Found JAR file at libs/openconnect-wrapper.jar
Found JAR file at libs/stoken-wrapper.jar
Found shared library at libs/armeabi/libopenconnect.so
Found shared library at libs/armeabi/libstoken.so
Found shared library at libs/mips/libopenconnect.so
Found shared library at libs/mips/libstoken.so
Found shared library at libs/x86/libopenconnect.so
Found shared library at libs/x86/libstoken.so
.gitlab-ci.yml
docs/fdroid.texi
fdroidserver/common.py
fdroidserver/scanner.py
setup.py