Under construction flash verification and automation library
Things to do and fix:
-
Implement all the check functions for every single tag. (I'm currently in the process of implementing tags 0-25, you can choose a later batch and start working on that if you want). Some ANTI-FEATURES(NOT for imageboard use):
- Optional mp3/jpg/png/wav/svg/flv verification through third party programs. Anti feature in some ways but it's useful for personal use.
- Optional recursive swf verification in DefineBinaryData tags.
-
Implement the decompression functions, implement use of
liblzma(added in commit 23a968dc09523cd21498705e687867343e2b7d9e for files, and in 90c8dd7c27315b8f23e805e98e5095b26df152e4(untested) for buffers) andzlib(added in commit 37af56b9d8f36820450c4080a08890636f9a2b32 for files, and in 32fc07f0ab491ccc7027ff77f34d4c8b1b366b00(untested) for buffers) in the meanwhile. (Working on it too, but it's lower in priority) -
Add some conditional macros for platforms to replace the slow and bulky standard conformant solutions with faster and more natural solutions (like signed compare and loads etc.) for the platforms that support those.
-
Find the official upper bound on swf versions. Adobe has not released spec for any swfs after 19, but there doesn't seem to be significant deviation in the tag stream. The current higher bound is 43 but that's arbitary based on the reported version from one of the swfs I have.
-
Thorough testing (It's testable on uncompressed swfs now! Use swfcheck for the testing.
And use swfpack for the decompression until the decompression algorithms are implemented.)
Build Tips:
-
If the target architecture is little endian and the environment has
uint32_t
anduint16_t
defined in stdint.h (Or if you have defined them yourself prior to including the library), define theSWFTAG_MATH_INLINE
LITTLE_ENDIAN_MACHINE
andUINTN_AVAILABLE
prior to inclusion to improve performance slightly. -
More callbacks are provided through the
EXTENDED_CALLBACKS
macro. Further, theEXTENDED_CALLBACKS_TYPE
macro can be used to select the type of the extended callbacks, with 0 corresponding to Mandatory callbacks and 1 corresponding to conditional callbacks controlled by thecallback_flags
field of the pdata structure. The recommended way of setting, resetting and getting the flags is to useset_callback_flag
andget_callback_flag
functions.
Links/Resources: