diff --git a/libclamav/filetypes.c b/libclamav/filetypes.c
index 44abd6e815..c3d2e7c2fb 100644
--- a/libclamav/filetypes.c
+++ b/libclamav/filetypes.c
@@ -56,90 +56,91 @@ static const struct ftmap_s {
const char *name;
cli_file_t code;
} ftmap[] = {
- { "CL_TYPE_TEXT_ASCII", CL_TYPE_TEXT_ASCII },
- { "CL_TYPE_TEXT_UTF8", CL_TYPE_TEXT_UTF8 },
- { "CL_TYPE_TEXT_UTF16LE", CL_TYPE_TEXT_UTF16LE },
- { "CL_TYPE_TEXT_UTF16BE", CL_TYPE_TEXT_UTF16BE },
- { "CL_TYPE_BINARY_DATA", CL_TYPE_BINARY_DATA },
- { "CL_TYPE_IGNORED", CL_TYPE_IGNORED },
- { "CL_TYPE_ANY", CL_TYPE_ANY },
- { "CL_TYPE_MSEXE", CL_TYPE_MSEXE },
- { "CL_TYPE_ELF", CL_TYPE_ELF },
- { "CL_TYPE_MACHO", CL_TYPE_MACHO },
- { "CL_TYPE_MACHO_UNIBIN", CL_TYPE_MACHO_UNIBIN },
- { "CL_TYPE_POSIX_TAR", CL_TYPE_POSIX_TAR },
- { "CL_TYPE_OLD_TAR", CL_TYPE_OLD_TAR },
- { "CL_TYPE_CPIO_OLD", CL_TYPE_CPIO_OLD },
- { "CL_TYPE_CPIO_ODC", CL_TYPE_CPIO_ODC },
- { "CL_TYPE_CPIO_NEWC", CL_TYPE_CPIO_NEWC },
- { "CL_TYPE_CPIO_CRC", CL_TYPE_CPIO_CRC },
- { "CL_TYPE_GZ", CL_TYPE_GZ },
- { "CL_TYPE_ZIP", CL_TYPE_ZIP },
- { "CL_TYPE_BZ", CL_TYPE_BZ },
- { "CL_TYPE_RAR", CL_TYPE_RAR },
- { "CL_TYPE_ARJ", CL_TYPE_ARJ },
- { "CL_TYPE_MSSZDD", CL_TYPE_MSSZDD },
- { "CL_TYPE_MSOLE2", CL_TYPE_MSOLE2 },
- { "CL_TYPE_MSCAB", CL_TYPE_MSCAB },
- { "CL_TYPE_MSCHM", CL_TYPE_MSCHM },
- { "CL_TYPE_SIS", CL_TYPE_SIS },
- { "CL_TYPE_SCRENC", CL_TYPE_SCRENC },
- { "CL_TYPE_GRAPHICS", CL_TYPE_GRAPHICS },
- { "CL_TYPE_GIF", CL_TYPE_GIF },
- { "CL_TYPE_PNG", CL_TYPE_PNG },
- { "CL_TYPE_JPEG", CL_TYPE_JPEG },
- { "CL_TYPE_TIFF", CL_TYPE_TIFF },
- { "CL_TYPE_RIFF", CL_TYPE_RIFF },
- { "CL_TYPE_BINHEX", CL_TYPE_BINHEX },
- { "CL_TYPE_TNEF", CL_TYPE_TNEF },
- { "CL_TYPE_CRYPTFF", CL_TYPE_CRYPTFF },
- { "CL_TYPE_PDF", CL_TYPE_PDF },
- { "CL_TYPE_UUENCODED", CL_TYPE_UUENCODED },
- { "CL_TYPE_HTML_UTF16", CL_TYPE_HTML_UTF16 },
- { "CL_TYPE_SCRIPT", CL_TYPE_SCRIPT },
- { "CL_TYPE_RTF", CL_TYPE_RTF },
- { "CL_TYPE_HTML", CL_TYPE_HTML },
- { "CL_TYPE_MAIL", CL_TYPE_MAIL },
- { "CL_TYPE_SFX", CL_TYPE_SFX },
- { "CL_TYPE_ZIPSFX", CL_TYPE_ZIPSFX },
- { "CL_TYPE_RARSFX", CL_TYPE_RARSFX },
- { "CL_TYPE_CABSFX", CL_TYPE_CABSFX },
- { "CL_TYPE_ARJSFX", CL_TYPE_ARJSFX },
- { "CL_TYPE_NULSFT", CL_TYPE_NULSFT },
- { "CL_TYPE_AUTOIT", CL_TYPE_AUTOIT },
- { "CL_TYPE_ISHIELD_MSI", CL_TYPE_ISHIELD_MSI },
- { "CL_TYPE_7Z", CL_TYPE_7Z },
- { "CL_TYPE_7ZSFX", CL_TYPE_7ZSFX },
- { "CL_TYPE_SWF", CL_TYPE_SWF },
- { "CL_TYPE_ISO9660", CL_TYPE_ISO9660 },
- { "CL_TYPE_JAVA", CL_TYPE_JAVA },
- { "CL_TYPE_DMG", CL_TYPE_DMG },
- { "CL_TYPE_MBR", CL_TYPE_MBR },
- { "CL_TYPE_GPT", CL_TYPE_GPT },
- { "CL_TYPE_APM", CL_TYPE_APM },
- { "CL_TYPE_XAR", CL_TYPE_XAR },
- { "CL_TYPE_PART_ANY", CL_TYPE_PART_ANY },
- { "CL_TYPE_PART_HFSPLUS", CL_TYPE_PART_HFSPLUS },
- { "CL_TYPE_XZ", CL_TYPE_XZ },
- { "CL_TYPE_OOXML_WORD", CL_TYPE_OOXML_WORD },
- { "CL_TYPE_OOXML_PPT", CL_TYPE_OOXML_PPT },
- { "CL_TYPE_OOXML_XL", CL_TYPE_OOXML_XL },
- { "CL_TYPE_INTERNAL", CL_TYPE_INTERNAL },
- { "CL_TYPE_XDP", CL_TYPE_XDP },
- { "CL_TYPE_XML_WORD", CL_TYPE_XML_WORD },
- { "CL_TYPE_XML_XL", CL_TYPE_XML_XL },
- { "CL_TYPE_HWP3", CL_TYPE_HWP3 },
- { "CL_TYPE_XML_HWP", CL_TYPE_XML_HWP },
- { "CL_TYPE_HWPOLE2", CL_TYPE_HWPOLE2 },
- { "CL_TYPE_OOXML_HWP", CL_TYPE_OOXML_HWP },
- { "CL_TYPE_PS", CL_TYPE_PS },
- { "CL_TYPE_MHTML", CL_TYPE_MHTML },
- { "CL_TYPE_LNK", CL_TYPE_LNK },
- { "CL_TYPE_EGG", CL_TYPE_EGG },
- { "CL_TYPE_EGGSFX", CL_TYPE_EGGSFX },
- { "CL_TYPE_UDF", CL_TYPE_UDF },
- { "CL_TYPE_ONENOTE", CL_TYPE_ONENOTE },
- { NULL, CL_TYPE_IGNORED }
+ { "CL_TYPE_TEXT_ASCII", CL_TYPE_TEXT_ASCII },
+ { "CL_TYPE_TEXT_UTF8", CL_TYPE_TEXT_UTF8 },
+ { "CL_TYPE_TEXT_UTF16LE", CL_TYPE_TEXT_UTF16LE },
+ { "CL_TYPE_TEXT_UTF16BE", CL_TYPE_TEXT_UTF16BE },
+ { "CL_TYPE_BINARY_DATA", CL_TYPE_BINARY_DATA },
+ { "CL_TYPE_IGNORED", CL_TYPE_IGNORED },
+ { "CL_TYPE_ANY", CL_TYPE_ANY },
+ { "CL_TYPE_MSEXE", CL_TYPE_MSEXE },
+ { "CL_TYPE_ELF", CL_TYPE_ELF },
+ { "CL_TYPE_MACHO", CL_TYPE_MACHO },
+ { "CL_TYPE_MACHO_UNIBIN", CL_TYPE_MACHO_UNIBIN },
+ { "CL_TYPE_POSIX_TAR", CL_TYPE_POSIX_TAR },
+ { "CL_TYPE_OLD_TAR", CL_TYPE_OLD_TAR },
+ { "CL_TYPE_CPIO_OLD", CL_TYPE_CPIO_OLD },
+ { "CL_TYPE_CPIO_ODC", CL_TYPE_CPIO_ODC },
+ { "CL_TYPE_CPIO_NEWC", CL_TYPE_CPIO_NEWC },
+ { "CL_TYPE_CPIO_CRC", CL_TYPE_CPIO_CRC },
+ { "CL_TYPE_GZ", CL_TYPE_GZ },
+ { "CL_TYPE_ZIP", CL_TYPE_ZIP },
+ { "CL_TYPE_BZ", CL_TYPE_BZ },
+ { "CL_TYPE_RAR", CL_TYPE_RAR },
+ { "CL_TYPE_ARJ", CL_TYPE_ARJ },
+ { "CL_TYPE_MSSZDD", CL_TYPE_MSSZDD },
+ { "CL_TYPE_MSOLE2", CL_TYPE_MSOLE2 },
+ { "CL_TYPE_MSCAB", CL_TYPE_MSCAB },
+ { "CL_TYPE_MSCHM", CL_TYPE_MSCHM },
+ { "CL_TYPE_SIS", CL_TYPE_SIS },
+ { "CL_TYPE_SCRENC", CL_TYPE_SCRENC },
+ { "CL_TYPE_GRAPHICS", CL_TYPE_GRAPHICS },
+ { "CL_TYPE_GIF", CL_TYPE_GIF },
+ { "CL_TYPE_PNG", CL_TYPE_PNG },
+ { "CL_TYPE_JPEG", CL_TYPE_JPEG },
+ { "CL_TYPE_TIFF", CL_TYPE_TIFF },
+ { "CL_TYPE_RIFF", CL_TYPE_RIFF },
+ { "CL_TYPE_BINHEX", CL_TYPE_BINHEX },
+ { "CL_TYPE_TNEF", CL_TYPE_TNEF },
+ { "CL_TYPE_CRYPTFF", CL_TYPE_CRYPTFF },
+ { "CL_TYPE_PDF", CL_TYPE_PDF },
+ { "CL_TYPE_UUENCODED", CL_TYPE_UUENCODED },
+ { "CL_TYPE_HTML_UTF16", CL_TYPE_HTML_UTF16 },
+ { "CL_TYPE_SCRIPT", CL_TYPE_SCRIPT },
+ { "CL_TYPE_RTF", CL_TYPE_RTF },
+ { "CL_TYPE_HTML", CL_TYPE_HTML },
+ { "CL_TYPE_MAIL", CL_TYPE_MAIL },
+ { "CL_TYPE_SFX", CL_TYPE_SFX },
+ { "CL_TYPE_ZIPSFX", CL_TYPE_ZIPSFX },
+ { "CL_TYPE_RARSFX", CL_TYPE_RARSFX },
+ { "CL_TYPE_CABSFX", CL_TYPE_CABSFX },
+ { "CL_TYPE_ARJSFX", CL_TYPE_ARJSFX },
+ { "CL_TYPE_NULSFT", CL_TYPE_NULSFT },
+ { "CL_TYPE_AUTOIT", CL_TYPE_AUTOIT },
+ { "CL_TYPE_ISHIELD_MSI", CL_TYPE_ISHIELD_MSI },
+ { "CL_TYPE_7Z", CL_TYPE_7Z },
+ { "CL_TYPE_7ZSFX", CL_TYPE_7ZSFX },
+ { "CL_TYPE_SWF", CL_TYPE_SWF },
+ { "CL_TYPE_ISO9660", CL_TYPE_ISO9660 },
+ { "CL_TYPE_JAVA", CL_TYPE_JAVA },
+ { "CL_TYPE_DMG", CL_TYPE_DMG },
+ { "CL_TYPE_MBR", CL_TYPE_MBR },
+ { "CL_TYPE_GPT", CL_TYPE_GPT },
+ { "CL_TYPE_APM", CL_TYPE_APM },
+ { "CL_TYPE_XAR", CL_TYPE_XAR },
+ { "CL_TYPE_PART_ANY", CL_TYPE_PART_ANY },
+ { "CL_TYPE_PART_HFSPLUS", CL_TYPE_PART_HFSPLUS },
+ { "CL_TYPE_XZ", CL_TYPE_XZ },
+ { "CL_TYPE_OOXML_WORD", CL_TYPE_OOXML_WORD },
+ { "CL_TYPE_OOXML_PPT", CL_TYPE_OOXML_PPT },
+ { "CL_TYPE_OOXML_XL", CL_TYPE_OOXML_XL },
+ { "CL_TYPE_INTERNAL", CL_TYPE_INTERNAL },
+ { "CL_TYPE_XDP", CL_TYPE_XDP },
+ { "CL_TYPE_XML_WORD", CL_TYPE_XML_WORD },
+ { "CL_TYPE_XML_XL", CL_TYPE_XML_XL },
+ { "CL_TYPE_HWP3", CL_TYPE_HWP3 },
+ { "CL_TYPE_XML_HWP", CL_TYPE_XML_HWP },
+ { "CL_TYPE_HWPOLE2", CL_TYPE_HWPOLE2 },
+ { "CL_TYPE_OOXML_HWP", CL_TYPE_OOXML_HWP },
+ { "CL_TYPE_PS", CL_TYPE_PS },
+ { "CL_TYPE_MHTML", CL_TYPE_MHTML },
+ { "CL_TYPE_LNK", CL_TYPE_LNK },
+ { "CL_TYPE_EGG", CL_TYPE_EGG },
+ { "CL_TYPE_EGGSFX", CL_TYPE_EGGSFX },
+ { "CL_TYPE_UDF", CL_TYPE_UDF },
+ { "CL_TYPE_ONENOTE", CL_TYPE_ONENOTE },
+ { "CL_TYPE_PYTHON_COMPILED", CL_TYPE_PYTHON_COMPILED },
+ { NULL, CL_TYPE_IGNORED }
};
// clang-format on
diff --git a/libclamav/filetypes.h b/libclamav/filetypes.h
index b75a9e277c..3581541908 100644
--- a/libclamav/filetypes.h
+++ b/libclamav/filetypes.h
@@ -93,6 +93,7 @@ typedef enum cli_file {
CL_TYPE_PS,
CL_TYPE_EGG,
CL_TYPE_ONENOTE,
+ CL_TYPE_PYTHON_COMPILED,
/* Section for partition types */
CL_TYPE_PART_ANY, /* unknown partition type */
diff --git a/libclamav/filetypes_int.h b/libclamav/filetypes_int.h
index e3e7bd64f1..9d0f71b69e 100644
--- a/libclamav/filetypes_int.h
+++ b/libclamav/filetypes_int.h
@@ -205,5 +205,98 @@ static const char *ftypes_int[] = {
"1:*:377abcaf271c:7zip-SFX:CL_TYPE_ANY:CL_TYPE_7ZSFX:74",
"1:0:3c3f786d6c2076657273696f6e3d22312e3022{0-1024}70726f6769643d22576f72642e446f63756d656e74223f3e:Microsoft Word 2003 XML Document:CL_TYPE_ANY:CL_TYPE_XML_WORD:80",
"0:0:e4525c7b8cd8a74daeb15378d02996d3:Microsoft OneNote Document:CL_TYPE_ANY:CL_TYPE_ONENOTE:200",
+ "0:0:02099900:Python 1.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:03099900:Python 1.1/1.2 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:892e0d0a:Python 1.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:04170d0a:Python 1.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:994e0d0a:Python 1.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:fcc40d0a:Python 1.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:fdc40d0a:Python 1.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:87c60d0a:Python 2.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:88c60d0a:Python 2.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2aeb0d0a:Python 2.1 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2beb0d0a:Python 2.1 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2ded0d0a:Python 2.2 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2eed0d0a:Python 2.2 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:3bf20d0a:Python 2.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:3cf20d0a:Python 2.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:45f20d0a:Python 2.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:59f20d0a:Python 2.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:63f20d0a:Python 2.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:6df20d0a:Python 2.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:6ef20d0a:Python 2.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:77f20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:81f20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:8bf20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:8cf20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:95f20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:9ff20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:a9f20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:b3f20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:b4f20d0a:Python 2.5 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:c7f20d0a:Python 2.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:d1f20d0a:Python 2.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:d2f20d0a:Python 2.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:dbf20d0a:Python 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:e5f20d0a:Python 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:eff20d0a:Python 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:f9f20d0a:Python 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:03f30d0a:Python 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:04f30d0a:Python 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:0af30d0a:PyPy 2.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:b80b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:c20b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:cc0b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:d60b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:e00b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:ea0b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:f40b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:f50b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:ff0b0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:090c0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:130c0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:1d0c0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:1f0c0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:270c0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:3b0c0d0a:Python 3.0 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:450c0d0a:Python 3.1 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:4f0c0d0a:Python 3.1 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:580c0d0a:Python 3.2 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:620c0d0a:Python 3.2 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:6c0c0d0a:Python 3.2 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:760c0d0a:Python 3.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:800c0d0a:Python 3.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:8a0c0d0a:Python 3.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:940c0d0a:Python 3.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:9e0c0d0a:Python 3.3 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:b20c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:bc0c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:c60c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:d00c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:da0c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:e40c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:ee0c0d0a:Python 3.4 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:f80c0d0a:Python 3.5.1- byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:020d0d0a:Python 3.5.1- byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:0c0d0d0a:Python 3.5.1- byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:160d0d0a:Python 3.5.1- byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:170d0d0a:Python 3.5.2+ byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:200d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:210d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2a0d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2b0d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2c0d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2d0d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:2f0d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:300d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:310d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:320d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:330d0d0a:Python 3.6 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:3e0d0d0a:Python 3.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:3f0d0d0a:Python 3.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:f00d0d0a:PyPy 3.7 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:00010d0a:PyPy 3.8 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "0:0:50010d0a:PyPy 3.9 byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
+ "1:0:??0d0d0a:Python 3.7 or newer byte-compiled (.pyc):CL_TYPE_ANY:CL_TYPE_PYTHON_COMPILED:200",
NULL};
#endif
diff --git a/libclamav/scanners.c b/libclamav/scanners.c
index 8110110499..1e129afd33 100644
--- a/libclamav/scanners.c
+++ b/libclamav/scanners.c
@@ -4986,6 +4986,7 @@ cl_error_t cli_magic_scan(cli_ctx *ctx, cli_file_t type)
perf_nested_stop(ctx, PERFT_MACHO, PERFT_SCAN);
break;
+ case CL_TYPE_PYTHON_COMPILED:
case CL_TYPE_BINARY_DATA:
ret = cli_scan_fmap(ctx, CL_TYPE_OTHER, false, NULL, AC_SCAN_VIR, NULL, NULL);
break;
diff --git a/libclamav_rust/src/sys.rs b/libclamav_rust/src/sys.rs
index ccac0bb1de..6400b911ba 100644
--- a/libclamav_rust/src/sys.rs
+++ b/libclamav_rust/src/sys.rs
@@ -379,35 +379,36 @@ pub const cli_file_CL_TYPE_OOXML_HWP: cli_file = 551;
pub const cli_file_CL_TYPE_PS: cli_file = 552;
pub const cli_file_CL_TYPE_EGG: cli_file = 553;
pub const cli_file_CL_TYPE_ONENOTE: cli_file = 554;
-pub const cli_file_CL_TYPE_PART_ANY: cli_file = 555;
-pub const cli_file_CL_TYPE_PART_HFSPLUS: cli_file = 556;
-pub const cli_file_CL_TYPE_MBR: cli_file = 557;
-pub const cli_file_CL_TYPE_HTML: cli_file = 558;
-pub const cli_file_CL_TYPE_MAIL: cli_file = 559;
-pub const cli_file_CL_TYPE_SFX: cli_file = 560;
-pub const cli_file_CL_TYPE_ZIPSFX: cli_file = 561;
-pub const cli_file_CL_TYPE_RARSFX: cli_file = 562;
-pub const cli_file_CL_TYPE_7ZSFX: cli_file = 563;
-pub const cli_file_CL_TYPE_CABSFX: cli_file = 564;
-pub const cli_file_CL_TYPE_ARJSFX: cli_file = 565;
-pub const cli_file_CL_TYPE_EGGSFX: cli_file = 566;
-pub const cli_file_CL_TYPE_NULSFT: cli_file = 567;
-pub const cli_file_CL_TYPE_AUTOIT: cli_file = 568;
-pub const cli_file_CL_TYPE_ISHIELD_MSI: cli_file = 569;
-pub const cli_file_CL_TYPE_ISO9660: cli_file = 570;
-pub const cli_file_CL_TYPE_DMG: cli_file = 571;
-pub const cli_file_CL_TYPE_GPT: cli_file = 572;
-pub const cli_file_CL_TYPE_APM: cli_file = 573;
-pub const cli_file_CL_TYPE_XDP: cli_file = 574;
-pub const cli_file_CL_TYPE_XML_WORD: cli_file = 575;
-pub const cli_file_CL_TYPE_XML_XL: cli_file = 576;
-pub const cli_file_CL_TYPE_XML_HWP: cli_file = 577;
-pub const cli_file_CL_TYPE_HWPOLE2: cli_file = 578;
-pub const cli_file_CL_TYPE_MHTML: cli_file = 579;
-pub const cli_file_CL_TYPE_LNK: cli_file = 580;
-pub const cli_file_CL_TYPE_UDF: cli_file = 581;
-pub const cli_file_CL_TYPE_OTHER: cli_file = 582;
-pub const cli_file_CL_TYPE_IGNORED: cli_file = 583;
+pub const cli_file_CL_TYPE_PYTHON_COMPILED: cli_file = 555;
+pub const cli_file_CL_TYPE_PART_ANY: cli_file = 556;
+pub const cli_file_CL_TYPE_PART_HFSPLUS: cli_file = 557;
+pub const cli_file_CL_TYPE_MBR: cli_file = 558;
+pub const cli_file_CL_TYPE_HTML: cli_file = 559;
+pub const cli_file_CL_TYPE_MAIL: cli_file = 560;
+pub const cli_file_CL_TYPE_SFX: cli_file = 561;
+pub const cli_file_CL_TYPE_ZIPSFX: cli_file = 562;
+pub const cli_file_CL_TYPE_RARSFX: cli_file = 563;
+pub const cli_file_CL_TYPE_7ZSFX: cli_file = 564;
+pub const cli_file_CL_TYPE_CABSFX: cli_file = 565;
+pub const cli_file_CL_TYPE_ARJSFX: cli_file = 566;
+pub const cli_file_CL_TYPE_EGGSFX: cli_file = 567;
+pub const cli_file_CL_TYPE_NULSFT: cli_file = 568;
+pub const cli_file_CL_TYPE_AUTOIT: cli_file = 569;
+pub const cli_file_CL_TYPE_ISHIELD_MSI: cli_file = 570;
+pub const cli_file_CL_TYPE_ISO9660: cli_file = 571;
+pub const cli_file_CL_TYPE_DMG: cli_file = 572;
+pub const cli_file_CL_TYPE_GPT: cli_file = 573;
+pub const cli_file_CL_TYPE_APM: cli_file = 574;
+pub const cli_file_CL_TYPE_XDP: cli_file = 575;
+pub const cli_file_CL_TYPE_XML_WORD: cli_file = 576;
+pub const cli_file_CL_TYPE_XML_XL: cli_file = 577;
+pub const cli_file_CL_TYPE_XML_HWP: cli_file = 578;
+pub const cli_file_CL_TYPE_HWPOLE2: cli_file = 579;
+pub const cli_file_CL_TYPE_MHTML: cli_file = 580;
+pub const cli_file_CL_TYPE_LNK: cli_file = 581;
+pub const cli_file_CL_TYPE_UDF: cli_file = 582;
+pub const cli_file_CL_TYPE_OTHER: cli_file = 583;
+pub const cli_file_CL_TYPE_IGNORED: cli_file = 584;
pub type cli_file = ::std::os::raw::c_uint;
pub use self::cli_file as cli_file_t;
#[repr(C)]
diff --git a/libclamav_rust/src/util.rs b/libclamav_rust/src/util.rs
index 47f2d8b4b3..fd15c3fe36 100644
--- a/libclamav_rust/src/util.rs
+++ b/libclamav_rust/src/util.rs
@@ -55,7 +55,7 @@ pub fn file_from_fd_or_handle(fd: i32) -> File {
/// exceeds the lifetime of the output string.
///
/// ptr must be a valid pointer to a C string.
-pub unsafe fn str_from_ptr(ptr: *const i8) -> Result