39 #define SWF_ZLIB_MIN_VERSION 0x06
40 #define SWF_LZMA_MIN_VERSION 0x0D
44 if (buffer_len >= 3 && buffer[1] ==
'W' && buffer[2] ==
'S') {
47 else if (buffer[0] ==
'C')
49 else if (buffer[0] ==
'Z')
75 uint32_t decompress_depth,
76 uint32_t compress_depth)
98 if (buffer_len <=
offset) {
103 uint32_t compressed_data_len = 0;
104 if (compress_depth > 0 && compress_depth <= buffer_len -
offset) {
105 compressed_data_len = compress_depth;
107 compressed_data_len = buffer_len -
offset;
125 uint32_t decompressed_data_limit =
128 uint32_t initial_buffer_len =
140 out_buffer->
buf[0] =
'F';
141 out_buffer->
buf[1] =
'W';
142 out_buffer->
buf[2] =
'S';
143 out_buffer->
buf[3] = swf_version;
144 memcpy(out_buffer->
buf + 4, buffer + 4, 4);
146 uint32_t decompressed_data_produced = 0;
155 decompressed_data_limit, &decompressed_data_produced);
168 uint8_t *compressed_data =
SCCalloc(1, compressed_data_len);
169 if (compressed_data == NULL) {
174 memcpy(compressed_data, buffer + 12, 5);
176 memset(compressed_data + 5, 0xFF, 8);
185 decompressed_data_limit, &decompressed_data_produced);