swf-parser

Crates.ioswf-parser
lib.rsswf-parser
version0.14.0
sourcesrc
created_at2017-07-31 20:48:53.933121
updated_at2022-05-08 10:34:02.419773
descriptionSWF parser
homepagehttps://github.com/open-flash/swf-parser
repositoryhttps://github.com/open-flash/swf-parser
max_upload_size
id25892
size218,915
Charles Samborski (demurgos)

documentation

https://docs.rs/swf-parser

README

Open Flash logo

SWF Parser (Rust)

GitHub repository crates.io crate Rust checks status docs.rs/swf-parser

SWF parser implemented in Rust. Converts bytes to swf-types movies.

Usage

use swf_parser::parse_swf;
use swf_types::Movie;

fn main() {
  let swf_bytes: Vec<u8> = ::std::fs::read("movie.swf").expect("Failed to read movie");
  let movie: Movie = parse_swf(&swf_bytes).expect("Failed to parse SWF");
}

Features

SWF decompression is provided by the following features, enabled by default:

  • deflate: enable support for CompressionMethod::Deflate, using the inflate crate.
  • lzma: enable support for CompressionMethod::Lzma, using the lzma-rs crate.

Disabling these features will cause the SWF parsing functions to fail when passed the corresponding CompressionMethod.

Contributing

This repo uses Git submodules for its test samples:

# Clone with submodules
git clone --recurse-submodules git://github.com/open-flash/swf-parser.git
# Update submodules for an already-cloned repo
git submodule update --init --recursive --remote

This library is a standard Cargo project. You can test your changes with cargo test. The commands must be run from the rs directory.

Fuzzing

The Rust implementation supports fuzzing:

# Make sure that you have `cargo-fuzz`
cargo install cargo-fuzz
# Fuzz the `swf` parser
cargo fuzz run swf

Prefer non-master branches when sending a PR so your changes can be rebased if needed. All the commits must be made on top of master (fast-forward merge). CI must pass for changes to be accepted.

Commit count: 248

cargo fmt