From 6719a1790cb4e615e7e7440070120ab953989e09 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 18 Sep 2019 21:19:13 +0100 Subject: [PATCH 01/38] Statically link releases --- CMakeLists.txt | 6 +++++ Makefile | 6 +++-- cmake/static_link.cmake | 31 ++----------------------- cmake/static_link_runtime.cmake | 40 +++++++++++++++++++++++++++++++++ cmake/unix.cmake | 2 +- 5 files changed, 53 insertions(+), 32 deletions(-) create mode 100644 cmake/static_link_runtime.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 96f5d2c62..3c5176487 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ option(AMD_RYZEN_HACK "hack for AMD Ryzen FPU bug (support FMA3 and FMA4 in FPU, option(NATIVE_BUILD "optimise for host system and FPU, may not be portable" ) option(EMBEDDED_CFG "optimise for older hardware or embedded systems") if (NOT MSVC) +option(STATIC_LINK "link statically against dependencies" OFF) option(STATIC_LINK_RUNTIME "link statically against compiler runtime, standard library and pthreads") endif() option(NON_PC_TARGET "non-pc target build: iphone, andriod, embedded non-i386 SBC, etc" ) @@ -34,6 +35,10 @@ include(cmake/add_import_library.cmake) include(cmake/add_log_tag.cmake) include(cmake/libatomic.cmake) +if (STATIC_LINK AND STATIC_LINK_RUNTIME) + message(FATAL "Cannot set both STATIC_LINK and STATIC_LINK_RUNTIME") +endif() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") # Basic definitions @@ -183,6 +188,7 @@ set(CMAKE_THREAD_PREFER_PTHREAD TRUE) set(THREADS_PREFER_PTHREAD_FLAG TRUE) find_package(Threads REQUIRED) +include(cmake/static_link_runtime.cmake) include(cmake/static_link.cmake) if(USE_NETNS) diff --git a/Makefile b/Makefile index f82077ddb..575be9f6a 100644 --- a/Makefile +++ b/Makefile @@ -65,8 +65,10 @@ TOOLCHAIN ?= AVX2 ?= OFF # non x86 target NON_PC_TARGET ?= OFF -# statically link +# statically link everything STATIC_LINK ?= OFF +# statically link dependencies +STATIC ?= OFF # enable network namespace isolation NETNS ?= OFF # enable shell hooks callbacks @@ -139,7 +141,7 @@ debug-configure: release-configure: clean mkdir -p '$(BUILD_ROOT)' - $(CONFIG_CMD) -DCMAKE_BUILD_TYPE=Release -DRELEASE_MOTTO="$(shell cat motto.txt)" -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)' + $(CONFIG_CMD) -DCMAKE_BUILD_TYPE=Release -DSTATIC_LINK=ON -DRELEASE_MOTTO="$(shell cat motto.txt)" -DCMAKE_C_FLAGS='$(CFLAGS)' -DCMAKE_CXX_FLAGS='$(CXXFLAGS)' debug: debug-configure $(MAKE) -C $(BUILD_ROOT) diff --git a/cmake/static_link.cmake b/cmake/static_link.cmake index 6e39fe9bf..91e528ee1 100644 --- a/cmake/static_link.cmake +++ b/cmake/static_link.cmake @@ -1,11 +1,4 @@ -if(NOT STATIC_LINK_RUNTIME) - return() -endif() - -# not supported on Solaris - system libraries are not available as archives -# LTO is supported only for native builds -if(SOLARIS) - link_libraries( -static-libstdc++ -static-libgcc ) +if(NOT STATIC_LINK) return() endif() @@ -16,25 +9,5 @@ else() endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - if(APPLE) - link_libraries( -flto) - else() - link_libraries( -static -static-libstdc++ -pthread -flto ) - endif() - - return() -endif() - -if(NOT CMAKE_CROSSCOMPILING) - # this is messing with release builds - add_compile_options(-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0) - set(CMAKE_AR "gcc-ar") - set(CMAKE_C_ARCHIVE_CREATE " qcs ") - set(CMAKE_C_ARCHIVE_FINISH "true") - set(CMAKE_CXX_ARCHIVE_CREATE " qcs ") - set(CMAKE_CXX_ARCHIVE_FINISH "true") - link_libraries( -flto -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive ) -else() - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ) - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") + link_libraries( -flto) endif() diff --git a/cmake/static_link_runtime.cmake b/cmake/static_link_runtime.cmake new file mode 100644 index 000000000..6e39fe9bf --- /dev/null +++ b/cmake/static_link_runtime.cmake @@ -0,0 +1,40 @@ +if(NOT STATIC_LINK_RUNTIME) + return() +endif() + +# not supported on Solaris - system libraries are not available as archives +# LTO is supported only for native builds +if(SOLARIS) + link_libraries( -static-libstdc++ -static-libgcc ) + return() +endif() + +if(NOT CMAKE_CROSSCOMPILING) + add_compile_options(-static -flto) +else() + add_compile_options(-static) +endif() + +if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") + if(APPLE) + link_libraries( -flto) + else() + link_libraries( -static -static-libstdc++ -pthread -flto ) + endif() + + return() +endif() + +if(NOT CMAKE_CROSSCOMPILING) + # this is messing with release builds + add_compile_options(-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0) + set(CMAKE_AR "gcc-ar") + set(CMAKE_C_ARCHIVE_CREATE " qcs ") + set(CMAKE_C_ARCHIVE_FINISH "true") + set(CMAKE_CXX_ARCHIVE_CREATE " qcs ") + set(CMAKE_CXX_ARCHIVE_FINISH "true") + link_libraries( -flto -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive ) +else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc -static -Wl,--whole-archive -lpthread -Wl,--no-whole-archive" ) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") +endif() diff --git a/cmake/unix.cmake b/cmake/unix.cmake index f894eaefa..e0f49ae11 100644 --- a/cmake/unix.cmake +++ b/cmake/unix.cmake @@ -8,7 +8,7 @@ include(CheckLibraryExists) add_definitions(-DUNIX) add_definitions(-DPOSIX) -if (STATIC_LINK_RUNTIME) +if (STATIC_LINK_RUNTIME OR STATIC_LINK) set(LIBUV_USE_STATIC ON) endif() From 1853b28590f4a8087af960350a034f4335553b89 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 19 Sep 2019 11:36:05 -0400 Subject: [PATCH 02/38] remove libutp and all such code related to utp --- CMakeLists.txt | 1 - cmake/unix.cmake | 2 +- libutp/CMakeLists.txt | 19 - libutp/LICENSE | 19 - libutp/Makefile | 48 - libutp/README.md | 68 - libutp/libutp_inet_ntop.cpp | 57 - libutp/libutp_inet_ntop.h | 63 - libutp/parse_log.py | 295 --- libutp/utp_api.cpp | 139 -- libutp/utp_callbacks.cpp | 208 -- libutp/utp_callbacks.h | 47 - libutp/utp_hash.cpp | 246 -- libutp/utp_hash.h | 209 -- libutp/utp_internal.cpp | 4067 --------------------------------- libutp/utp_internal.h | 161 -- libutp/utp_packedsockaddr.cpp | 166 -- libutp/utp_packedsockaddr.h | 60 - libutp/utp_templates.h | 195 -- libutp/utp_utils.cpp | 307 --- libutp/utp_utils.h | 27 - llarp/CMakeLists.txt | 7 +- llarp/link/factory.cpp | 9 - llarp/router/router.cpp | 2 +- llarp/utp/inbound_message.cpp | 27 - llarp/utp/inbound_message.hpp | 86 - llarp/utp/linklayer.cpp | 341 --- llarp/utp/linklayer.hpp | 105 - llarp/utp/session.cpp | 810 ------- llarp/utp/session.hpp | 301 --- llarp/utp/utp.cpp | 35 - llarp/utp/utp.hpp | 28 - test/link/test_llarp_link.cpp | 187 +- 33 files changed, 4 insertions(+), 8338 deletions(-) delete mode 100644 libutp/CMakeLists.txt delete mode 100644 libutp/LICENSE delete mode 100644 libutp/Makefile delete mode 100644 libutp/README.md delete mode 100644 libutp/libutp_inet_ntop.cpp delete mode 100644 libutp/libutp_inet_ntop.h delete mode 100644 libutp/parse_log.py delete mode 100644 libutp/utp_api.cpp delete mode 100644 libutp/utp_callbacks.cpp delete mode 100644 libutp/utp_callbacks.h delete mode 100644 libutp/utp_hash.cpp delete mode 100644 libutp/utp_hash.h delete mode 100644 libutp/utp_internal.cpp delete mode 100644 libutp/utp_internal.h delete mode 100644 libutp/utp_packedsockaddr.cpp delete mode 100644 libutp/utp_packedsockaddr.h delete mode 100644 libutp/utp_templates.h delete mode 100644 libutp/utp_utils.cpp delete mode 100644 libutp/utp_utils.h delete mode 100644 llarp/utp/inbound_message.cpp delete mode 100644 llarp/utp/inbound_message.hpp delete mode 100644 llarp/utp/linklayer.cpp delete mode 100644 llarp/utp/linklayer.hpp delete mode 100644 llarp/utp/session.cpp delete mode 100644 llarp/utp/session.hpp delete mode 100644 llarp/utp/utp.cpp delete mode 100644 llarp/utp/utp.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 96f5d2c62..afdc97c97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -239,7 +239,6 @@ endif() set(LIBS ${MALLOC_LIB} ${FS_LIB} ${LIBUV_LIBRARY}) add_subdirectory(crypto) -add_subdirectory(libutp) add_subdirectory(llarp) add_subdirectory(libabyss) diff --git a/cmake/unix.cmake b/cmake/unix.cmake index f894eaefa..ecc4a1ad5 100644 --- a/cmake/unix.cmake +++ b/cmake/unix.cmake @@ -73,7 +73,7 @@ else() endif() -set(EXE_LIBS ${STATIC_LIB} libutp) +set(EXE_LIBS ${STATIC_LIB}) if(RELEASE_MOTTO) add_definitions(-DLLARP_RELEASE_MOTTO="${RELEASE_MOTTO}") diff --git a/libutp/CMakeLists.txt b/libutp/CMakeLists.txt deleted file mode 100644 index e089e94ec..000000000 --- a/libutp/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -set(UTP_SRC - utp_callbacks.cpp - utp_utils.cpp - utp_internal.cpp - utp_api.cpp - utp_packedsockaddr.cpp - utp_hash.cpp -) - -if(WIN32) - list(APPEND UTP_SRC libutp_inet_ntop.cpp) -endif(WIN32) - -add_library(libutp STATIC ${UTP_SRC}) -if(WIN32) - target_link_libraries(libutp ws2_32) -endif(WIN32) -target_include_directories(libutp PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} ${CORE_INCLUDE}) -add_log_tag(libutp) diff --git a/libutp/LICENSE b/libutp/LICENSE deleted file mode 100644 index 7f6e16c5f..000000000 --- a/libutp/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2010-2013 BitTorrent, Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/libutp/Makefile b/libutp/Makefile deleted file mode 100644 index 818f3095a..000000000 --- a/libutp/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -OBJS = utp_internal.o utp_utils.o utp_hash.o utp_callbacks.o utp_api.o utp_packedsockaddr.o -CFLAGS = -Wall -DPOSIX -g -fno-exceptions $(OPT) -OPT ?= -O3 -CXXFLAGS = $(CFLAGS) -fPIC -fno-rtti -CC = gcc -CXX = g++ - -CXXFLAGS += -Wno-sign-compare -CXXFLAGS += -fpermissive - -# Uncomment to enable utp_get_stats(), and a few extra sanity checks -#CFLAGS += -D_DEBUG - -# Uncomment to enable debug logging -#CFLAGS += -DUTP_DEBUG_LOGGING - -# Dynamically determine if librt is available. If so, assume we need to link -# against it for clock_gettime(2). This is required for clean builds on OSX; -# see for more. This should -# probably be ported to CMake at some point, but is suitable for now. -lrt := $(shell echo 'int main() {}' | $(CC) -xc -o /dev/null - -lrt >/dev/null 2>&1; echo $$?) -ifeq ($(strip $(lrt)),0) - LDFLAGS += -lrt -endif - -all: libutp.so libutp.a ucat ucat-static - -libutp.so: $(OBJS) - $(CXX) $(CXXFLAGS) -o libutp.so -shared $(OBJS) - -libutp.a: $(OBJS) - ar rvs libutp.a $(OBJS) - -ucat: ucat.o libutp.so - $(CC) $(CFLAGS) -o ucat ucat.o -L. -lutp $(LDFLAGS) - -ucat-static: ucat.o libutp.a - $(CXX) $(CXXFLAGS) -o ucat-static ucat.o libutp.a $(LDFLAGS) - -clean: - rm -f *.o libutp.so libutp.a ucat ucat-static - -tags: $(shell ls *.cpp *.h) - rm -f tags - ctags *.cpp *.h - -anyway: clean all -.PHONY: clean all anyway diff --git a/libutp/README.md b/libutp/README.md deleted file mode 100644 index a8e20ecac..000000000 --- a/libutp/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# libutp - The uTorrent Transport Protocol library. -Copyright (c) 2010 BitTorrent, Inc. - -uTP is a TCP-like implementation of [LEDBAT][ledbat] documented as a BitTorrent -extension in [BEP-29][bep29]. uTP provides reliable, ordered delivery -while maintaining minimum extra delay. It is implemented on top of UDP to be -cross-platform and functional today. As a result, uTP is the primary transport -for uTorrent peer-to-peer connections. - -uTP is written in C++, but the external interface is strictly C (ANSI C89). - -## The Interface - -The uTP socket interface is a bit different from the Berkeley socket API to -avoid the need for our own select() implementation, and to make it easier to -write event-based code with minimal buffering. - -When you create a uTP socket, you register a set of callbacks. Most notably, the -on_read callback is a reactive callback which occurs when bytes arrive off the -network. The write side of the socket is proactive, and you call UTP_Write to -indicate the number of bytes you wish to write. As packets are created, the -on_write callback is called for each packet, so you can fill the buffers with -data. - -The libutp interface is not thread-safe. It was designed for use in a -single-threaded asyncronous context, although with proper synchronization -it may be used from a multi-threaded environment as well. - -See utp.h for more details and other API documentation. - -## Example - -See ucat.c. Build with: - - make ucat - -## Building - -uTP has been known to build on Windows with MSVC and on linux and OS X with gcc. -On Windows, use the MSVC project files (utp.sln, and friends). On other platforms, -building the shared library is as simple as: - - make - -To build one of the examples, which will statically link in everything it needs -from libutp: - - cd utp_test && make - -## Packaging and API - -The libutp API is considered unstable, and probably always will be. We encourage -you to test with the version of libutp you have, and be mindful when upgrading. -For this reason, it is probably also a good idea to bundle libutp with your -application. - -## License - -libutp is released under the [MIT][lic] license. - -## Related Work - -Research and analysis of congestion control mechanisms can be found [here.][survey] - -[ledbat]: http://datatracker.ietf.org/wg/ledbat/charter/ -[bep29]: http://www.bittorrent.org/beps/bep_0029.html -[lic]: http://www.opensource.org/licenses/mit-license.php -[survey]: http://datatracker.ietf.org/doc/draft-ietf-ledbat-survey/ diff --git a/libutp/libutp_inet_ntop.cpp b/libutp/libutp_inet_ntop.cpp deleted file mode 100644 index 1dec071af..000000000 --- a/libutp/libutp_inet_ntop.cpp +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include -#include -#include -#include "libutp_inet_ntop.h" - -// we already have our own definition of these -// -despair -#if _WIN32_WINNT < 0x600 -namespace -{ - extern "C" - { - const char * - inet_ntop(int af, const void *src, char *dst, size_t size); - int - inet_pton(int af, const char *src, void *dst); - } -} // namespace -#endif -//###################################################################### -const char * -libutp::inet_ntop(int af, const void *src, char *dest, size_t length) -{ - return ::inet_ntop(af, (void *)src, dest, length); -} - -//###################################################################### -int -libutp::inet_pton(int af, const char *src, void *dest) -{ - return ::inet_pton(af, src, dest); -} diff --git a/libutp/libutp_inet_ntop.h b/libutp/libutp_inet_ntop.h deleted file mode 100644 index e110245be..000000000 --- a/libutp/libutp_inet_ntop.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef LIBUTP_INET_NTOP_H -#define LIBUTP_INET_NTOP_H - -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -// About us linking the system inet_pton and inet_ntop symbols: -// 1) These symbols are usually defined on POSIX systems -// 2) They are not defined on Windows versions earlier than Vista -// Defined in: -// ut_utils/src/sockaddr.cpp -// libutp/win32_inet_ntop.obj -// - -#if defined(_WIN32_WINNT) -#if _WIN32_WINNT >= 0x600 // Win32, post-XP -#include // for inet_ntop, inet_pton -#define INET_NTOP inet_ntop -#define INET_PTON inet_pton -#else -#define INET_NTOP libutp::inet_ntop // Win32, pre-XP: Use ours -#define INET_PTON libutp::inet_pton -#endif -#else // not WIN32 -#include // for inet_ntop, inet_pton -#define INET_NTOP inet_ntop -#define INET_PTON inet_pton -#endif - -//###################################################################### -//###################################################################### -namespace libutp { - - -//###################################################################### -const char *inet_ntop(int af, const void *src, char *dest, size_t length); - -//###################################################################### -int inet_pton(int af, const char* src, void* dest); - - -} //namespace libutp - -#endif // LIBUTP_INET_NTOP_H \ No newline at end of file diff --git a/libutp/parse_log.py b/libutp/parse_log.py deleted file mode 100644 index b4be9abfb..000000000 --- a/libutp/parse_log.py +++ /dev/null @@ -1,295 +0,0 @@ -import os -import sys - -# usage: parse_log.py log-file [socket-index to focus on] - - -socket_filter = None -if len(sys.argv) >= 3: - socket_filter = sys.argv[2].strip() - -if socket_filter is None: - print "scanning for socket with the most packets" - file = open(sys.argv[1], 'rb') - - sockets = {} - - for l in file: - if not 'our_delay' in l: - continue - - try: - a = l.strip().split(" ") - socket_index = a[1][:-1] - except: - continue - - # msvc's runtime library doesn't prefix pointers - # with '0x' -# if socket_index[:2] != '0x': -# continue - - if socket_index in sockets: - sockets[socket_index] += 1 - else: - sockets[socket_index] = 1 - - items = sockets.items() - items.sort(lambda x, y: y[1] - x[1]) - - count = 0 - for i in items: - print '%s: %d' % (i[0], i[1]) - count += 1 - if count > 5: - break - - file.close() - socket_filter = items[0][0] - print '\nfocusing on socket %s' % socket_filter - -file = open(sys.argv[1], 'rb') -out_file = 'utp.out%s' % socket_filter -out = open(out_file, 'wb') - -delay_samples = 'dots lc rgb "blue"' -delay_base = 'steps lw 2 lc rgb "purple"' -target_delay = 'steps lw 2 lc rgb "red"' -off_target = 'dots lc rgb "blue"' -cwnd = 'steps lc rgb "green"' -window_size = 'steps lc rgb "sea-green"' -rtt = 'lines lc rgb "light-blue"' - -metrics = { - 'our_delay': ['our delay (ms)', 'x1y2', delay_samples], - 'upload_rate': ['send rate (B/s)', 'x1y1', 'lines'], - 'max_window': ['cwnd (B)', 'x1y1', cwnd], - 'target_delay': ['target delay (ms)', 'x1y2', target_delay], - 'cur_window': ['bytes in-flight (B)', 'x1y1', window_size], - 'cur_window_packets': ['number of packets in-flight', 'x1y2', 'steps'], - 'packet_size': ['current packet size (B)', 'x1y2', 'steps'], - 'rtt': ['rtt (ms)', 'x1y2', rtt], - 'off_target': ['off-target (ms)', 'x1y2', off_target], - 'delay_sum': ['delay sum (ms)', 'x1y2', 'steps'], - 'their_delay': ['their delay (ms)', 'x1y2', delay_samples], - 'get_microseconds': ['clock (us)', 'x1y1', 'steps'], - 'wnduser': ['advertised window size (B)', 'x1y1', 'steps'], - - 'delay_base': ['delay base (us)', 'x1y1', delay_base], - 'their_delay_base': ['their delay base (us)', 'x1y1', delay_base], - 'their_actual_delay': ['their actual delay (us)', 'x1y1', delay_samples], - 'actual_delay': ['actual_delay (us)', 'x1y1', delay_samples] -} - -histogram_quantization = 1 -socket_index = None - -columns = [] - -begin = None - -title = "-" -packet_loss = 0 -packet_timeout = 0 - -delay_histogram = {} -window_size = {'0': 0, '1': 0} - -# [35301484] 0x00ec1190: actual_delay:1021583 our_delay:102 their_delay:-1021345 off_target:297 max_window:2687 upload_rate:18942 delay_base:1021481154 delay_sum:-1021242 target_delay:400 acked_bytes:1441 cur_window:2882 scaled_gain:2.432 - -counter = 0 - -print "reading log file" - -for l in file: - if "UTP_Connect" in l: - title = l[:-2] - if socket_filter != None: - title += ' socket: %s' % socket_filter - else: - title += ' sum of all sockets' - continue - - try: - a = l.strip().split(" ") - t = a[0][1:-1] - socket_index = a[1][:-1] - except: - continue -# if socket_index[:2] != '0x': -# continue - - if socket_filter != None and socket_index != socket_filter: - continue - - counter += 1 - if (counter % 300 == 0): - print "\r%d " % counter, - - if "lost." in l: - packet_loss = packet_loss + 1 - continue - if "Packet timeout" in l: - packet_timeout = packet_timeout + 1 - continue - if "our_delay:" not in l: - continue - -# used for Logf timestamps -# t, m = t.split(".") -# t = time.strptime(t, "%H:%M:%S") -# t = list(t) -# t[0] += 107 -# t = tuple(t) -# m = float(m) -# m /= 1000.0 -# t = time.mktime(t) + m - -# used for tick count timestamps - t = int(t) - - if begin is None: - begin = t - t = t - begin - # print time. Convert from milliseconds to seconds - print >>out, '%f\t' % (float(t)/1000.), - - # if t > 200000: - # break - - fill_columns = not columns - for i in a[2:]: - try: - n, v = i.split(':') - except: - continue - v = float(v) - if n == "our_delay": - bucket = v / histogram_quantization - delay_histogram[bucket] = 1 + delay_histogram.get(bucket, 0) - if not n in metrics: - continue - if fill_columns: - columns.append(n) - if n == "max_window": - window_size[socket_index] = v - print >>out, '%f\t' % int( - reduce(lambda a, b: a+b, window_size.values())), - else: - print >>out, '%f\t' % v, - print >>out, float(packet_loss * 8000), float(packet_timeout * 8000) - packet_loss = 0 - packet_timeout = 0 - -out.close() - -out = open('%s.histogram' % out_file, 'wb') -for d, f in delay_histogram.iteritems(): - print >>out, float(d*histogram_quantization) + \ - histogram_quantization / 2, f -out.close() - - -plot = [ - { - 'data': ['upload_rate', 'max_window', 'cur_window', 'wnduser', 'cur_window_packets', 'packet_size', 'rtt'], - 'title': 'send-packet-size', - 'y1': 'Bytes', - 'y2': 'Time (ms)' - }, - { - 'data': ['our_delay', 'max_window', 'target_delay', 'cur_window', 'wnduser', 'cur_window_packets'], - 'title': 'uploading', - 'y1': 'Bytes', - 'y2': 'Time (ms)' - }, - { - 'data': ['our_delay', 'max_window', 'target_delay', 'cur_window', 'cur_window_packets'], - 'title': 'uploading_packets', - 'y1': 'Bytes', - 'y2': 'Time (ms)' - }, - { - 'data': ['get_microseconds'], - 'title': 'timer', - 'y1': 'Time microseconds', - 'y2': 'Time (ms)' - }, - { - 'data': ['their_delay', 'target_delay', 'rtt'], - 'title': 'their_delay', - 'y1': '', - 'y2': 'Time (ms)' - }, - { - 'data': ['their_actual_delay', 'their_delay_base'], - 'title': 'their_delay_base', - 'y1': 'Time (us)', - 'y2': '' - }, - { - 'data': ['our_delay', 'target_delay', 'rtt'], - 'title': 'our-delay', - 'y1': '', - 'y2': 'Time (ms)' - }, - { - 'data': ['actual_delay', 'delay_base'], - 'title': 'our_delay_base', - 'y1': 'Time (us)', - 'y2': '' - } -] - -out = open('utp.gnuplot', 'w+') - -files = '' - -#print >>out, 'set xtics 0, 20' -print >>out, "set term png size 1280,800" -print >>out, 'set output "%s.delays.png"' % out_file -print >>out, 'set xrange [0:250]' -print >>out, 'set xlabel "delay (ms)"' -print >>out, 'set boxwidth 1' -print >>out, 'set style fill solid' -print >>out, 'set ylabel "number of packets"' -print >>out, 'plot "%s.histogram" using 1:2 with boxes' % out_file - -print >>out, "set style data steps" -#print >>out, "set yrange [0:*]" -print >>out, "set y2range [*:*]" -files += out_file + '.delays.png ' -# set hidden3d -# set title "Peer bandwidth distribution" -# set xlabel "Ratio" - -for p in plot: - print >>out, 'set title "%s %s"' % (p['title'], title) - print >>out, 'set xlabel "time (s)"' - print >>out, 'set ylabel "%s"' % p['y1'] - print >>out, "set tics nomirror" - print >>out, 'set y2tics' - print >>out, 'set y2label "%s"' % p['y2'] - print >>out, 'set xrange [0:*]' - print >>out, "set key box" - print >>out, "set term png size 1280,800" - print >>out, 'set output "%s-%s.png"' % (out_file, p['title']) - files += '%s-%s.png ' % (out_file, p['title']) - - comma = '' - print >>out, "plot", - - for c in p['data']: - if not c in metrics: - continue - i = columns.index(c) - print >>out, '%s"%s" using 1:%d title "%s-%s" axes %s with %s' % ( - comma, out_file, i + 2, metrics[c][0], metrics[c][1], metrics[c][1], metrics[c][2]), - comma = ', ' - print >>out, '' - -out.close() - -os.system("gnuplot utp.gnuplot") - -os.system("open %s" % files) diff --git a/libutp/utp_api.cpp b/libutp/utp_api.cpp deleted file mode 100644 index 63aff189c..000000000 --- a/libutp/utp_api.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// vim:set ts=4 sw=4 ai: - -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include "utp_internal.h" -#include "utp_utils.h" - -extern "C" { - -const char * utp_callback_names[] = { - "UTP_ON_FIREWALL", - "UTP_ON_ACCEPT", - "UTP_ON_CONNECT", - "UTP_ON_ERROR", - "UTP_ON_READ", - "UTP_ON_OVERHEAD_STATISTICS", - "UTP_ON_STATE_CHANGE", - "UTP_GET_READ_BUFFER_SIZE", - "UTP_ON_DELAY_SAMPLE", - "UTP_GET_UDP_MTU", - "UTP_GET_UDP_OVERHEAD", - "UTP_GET_MILLISECONDS", - "UTP_GET_MICROSECONDS", - "UTP_GET_RANDOM", - "UTP_LOG", - "UTP_SENDTO", -}; - -const char * utp_error_code_names[] = { - "UTP_ECONNREFUSED", - "UTP_ECONNRESET", - "UTP_ETIMEDOUT", -}; - -const char *utp_state_names[] = { - NULL, - "UTP_STATE_CONNECT", - "UTP_STATE_WRITABLE", - "UTP_STATE_EOF", - "UTP_STATE_DESTROYING", -}; - -struct_utp_context::struct_utp_context() - : userdata(NULL) - , current_ms(0) - , last_utp_socket(NULL) - , log_normal(false) - , log_mtu(false) - , log_debug(false) -{ - memset(&context_stats, 0, sizeof(context_stats)); - memset(callbacks, 0, sizeof(callbacks)); - target_delay = CCONTROL_TARGET; - utp_sockets = new UTPSocketHT; - - callbacks[UTP_GET_UDP_MTU] = &utp_default_get_udp_mtu; - callbacks[UTP_GET_UDP_OVERHEAD] = &utp_default_get_udp_overhead; - callbacks[UTP_GET_MILLISECONDS] = &utp_default_get_milliseconds; - callbacks[UTP_GET_MICROSECONDS] = &utp_default_get_microseconds; - callbacks[UTP_GET_RANDOM] = &utp_default_get_random; - - // 1 MB of receive buffer (i.e. max bandwidth delay product) - // means that from a peer with 200 ms RTT, we cannot receive - // faster than 5 MB/s - // from a peer with 10 ms RTT, we cannot receive faster than - // 100 MB/s. This is assumed to be good enough, since bandwidth - // often is proportional to RTT anyway - // when setting a download rate limit, all sockets should have - // their receive buffer set much lower, to say 60 kiB or so - opt_rcvbuf = opt_sndbuf = 1024 * 1024; - last_check = 0; -} - -struct_utp_context::~struct_utp_context() { - delete this->utp_sockets; -} - -utp_context* utp_init (int version) -{ - assert(version == 2); - if (version != 2) - return NULL; - utp_context *ctx = new utp_context; - return ctx; -} - -void utp_destroy(utp_context *ctx) { - assert(ctx); - if (ctx) delete ctx; -} - -void utp_set_callback(utp_context *ctx, int callback_name, utp_callback_t *proc) { - assert(ctx); - if (ctx) ctx->callbacks[callback_name] = proc; -} - -void* utp_context_set_userdata(utp_context *ctx, void *userdata) { - assert(ctx); - if (ctx) ctx->userdata = userdata; - return ctx ? ctx->userdata : NULL; -} - -void* utp_context_get_userdata(utp_context *ctx) { - assert(ctx); - return ctx ? ctx->userdata : NULL; -} - -utp_context_stats* utp_get_context_stats(utp_context *ctx) { - assert(ctx); - return ctx ? &ctx->context_stats : NULL; -} - -ssize_t utp_write(utp_socket *socket, void *buf, size_t len) { - struct utp_iovec iovec = { buf, len }; - return utp_writev(socket, &iovec, 1); -} - -} diff --git a/libutp/utp_callbacks.cpp b/libutp/utp_callbacks.cpp deleted file mode 100644 index 9540d8c40..000000000 --- a/libutp/utp_callbacks.cpp +++ /dev/null @@ -1,208 +0,0 @@ -// vim:set ts=4 sw=4 ai: - -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "utp_callbacks.h" - -int utp_call_on_firewall(utp_context *ctx, const struct sockaddr *address, socklen_t address_len) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_FIREWALL]) return 0; - args.callback_type = UTP_ON_FIREWALL; - args.context = ctx; - args.socket = NULL; - args.address = address; - args.address_len = address_len; - return (int)ctx->callbacks[UTP_ON_FIREWALL](&args); -} - -void utp_call_on_accept(utp_context *ctx, utp_socket *socket, const struct sockaddr *address, socklen_t address_len) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_ACCEPT]) return; - args.callback_type = UTP_ON_ACCEPT; - args.context = ctx; - args.socket = socket; - args.address = address; - args.address_len = address_len; - ctx->callbacks[UTP_ON_ACCEPT](&args); -} - -void utp_call_on_connect(utp_context *ctx, utp_socket *socket) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_CONNECT]) return; - args.callback_type = UTP_ON_CONNECT; - args.context = ctx; - args.socket = socket; - ctx->callbacks[UTP_ON_CONNECT](&args); -} - -void utp_call_on_error(utp_context *ctx, utp_socket *socket, int error_code) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_ERROR]) return; - args.callback_type = UTP_ON_ERROR; - args.context = ctx; - args.socket = socket; - args.error_code = error_code; - ctx->callbacks[UTP_ON_ERROR](&args); -} - -void utp_call_on_read(utp_context *ctx, utp_socket *socket, const byte *buf, size_t len) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_READ]) return; - args.callback_type = UTP_ON_READ; - args.context = ctx; - args.socket = socket; - args.buf = buf; - args.len = len; - ctx->callbacks[UTP_ON_READ](&args); -} - -void utp_call_on_overhead_statistics(utp_context *ctx, utp_socket *socket, int send, size_t len, int type) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_OVERHEAD_STATISTICS]) return; - args.callback_type = UTP_ON_OVERHEAD_STATISTICS; - args.context = ctx; - args.socket = socket; - args.send = send; - args.len = len; - args.type = type; - ctx->callbacks[UTP_ON_OVERHEAD_STATISTICS](&args); -} - -void utp_call_on_delay_sample(utp_context *ctx, utp_socket *socket, int sample_ms) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_DELAY_SAMPLE]) return; - args.callback_type = UTP_ON_DELAY_SAMPLE; - args.context = ctx; - args.socket = socket; - args.sample_ms = sample_ms; - ctx->callbacks[UTP_ON_DELAY_SAMPLE](&args); -} - -void utp_call_on_state_change(utp_context *ctx, utp_socket *socket, int state) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_ON_STATE_CHANGE]) return; - args.callback_type = UTP_ON_STATE_CHANGE; - args.context = ctx; - args.socket = socket; - args.state = state; - ctx->callbacks[UTP_ON_STATE_CHANGE](&args); -} - -uint16 utp_call_get_udp_mtu(utp_context *ctx, utp_socket *socket, const struct sockaddr *address, socklen_t address_len) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_GET_UDP_MTU]) return 0; - args.callback_type = UTP_GET_UDP_MTU; - args.context = ctx; - args.socket = socket; - args.address = address; - args.address_len = address_len; - return (uint16)ctx->callbacks[UTP_GET_UDP_MTU](&args); -} - -uint16 utp_call_get_udp_overhead(utp_context *ctx, utp_socket *socket, const struct sockaddr *address, socklen_t address_len) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_GET_UDP_OVERHEAD]) return 0; - args.callback_type = UTP_GET_UDP_OVERHEAD; - args.context = ctx; - args.socket = socket; - args.address = address; - args.address_len = address_len; - return (uint16)ctx->callbacks[UTP_GET_UDP_OVERHEAD](&args); -} - -uint64 utp_call_get_milliseconds(utp_context *ctx, utp_socket *socket) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_GET_MILLISECONDS]) return 0; - args.callback_type = UTP_GET_MILLISECONDS; - args.context = ctx; - args.socket = socket; - return ctx->callbacks[UTP_GET_MILLISECONDS](&args); -} - -uint64 utp_call_get_microseconds(utp_context *ctx, utp_socket *socket) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_GET_MICROSECONDS]) return 0; - args.callback_type = UTP_GET_MICROSECONDS; - args.context = ctx; - args.socket = socket; - return ctx->callbacks[UTP_GET_MICROSECONDS](&args); -} - -uint32 utp_call_get_random(utp_context *ctx, utp_socket *socket) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_GET_RANDOM]) return 0; - args.callback_type = UTP_GET_RANDOM; - args.context = ctx; - args.socket = socket; - return (uint32)ctx->callbacks[UTP_GET_RANDOM](&args); -} - -size_t utp_call_get_read_buffer_size(utp_context *ctx, utp_socket *socket) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_GET_READ_BUFFER_SIZE]) return 0; - args.callback_type = UTP_GET_READ_BUFFER_SIZE; - args.context = ctx; - args.socket = socket; - return (size_t)ctx->callbacks[UTP_GET_READ_BUFFER_SIZE](&args); -} - -void utp_call_log(utp_context *ctx, utp_socket *socket, const byte *buf) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_LOG]) return; - args.callback_type = UTP_LOG; - args.context = ctx; - args.socket = socket; - args.buf = buf; - ctx->callbacks[UTP_LOG](&args); -} - -void utp_call_sendto(utp_context *ctx, utp_socket *socket, const byte *buf, size_t len, const struct sockaddr *address, socklen_t address_len, uint32 flags) -{ - utp_callback_arguments args; - if (!ctx->callbacks[UTP_SENDTO]) return; - args.callback_type = UTP_SENDTO; - args.context = ctx; - args.socket = socket; - args.buf = buf; - args.len = len; - args.address = address; - args.address_len = address_len; - args.flags = flags; - ctx->callbacks[UTP_SENDTO](&args); -} - diff --git a/libutp/utp_callbacks.h b/libutp/utp_callbacks.h deleted file mode 100644 index 649e7e14f..000000000 --- a/libutp/utp_callbacks.h +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __UTP_CALLBACKS_H__ -#define __UTP_CALLBACKS_H__ - -#include "utp.h" -#include "utp_internal.h" - -// Generated by running: grep ^[a-z] utp_callbacks.cpp | sed 's/$/;/' -int utp_call_on_firewall(utp_context *ctx, const struct sockaddr *address, socklen_t address_len); -void utp_call_on_accept(utp_context *ctx, utp_socket *s, const struct sockaddr *address, socklen_t address_len); -void utp_call_on_connect(utp_context *ctx, utp_socket *s); -void utp_call_on_error(utp_context *ctx, utp_socket *s, int error_code); -void utp_call_on_read(utp_context *ctx, utp_socket *s, const byte *buf, size_t len); -void utp_call_on_overhead_statistics(utp_context *ctx, utp_socket *s, int send, size_t len, int type); -void utp_call_on_delay_sample(utp_context *ctx, utp_socket *s, int sample_ms); -void utp_call_on_state_change(utp_context *ctx, utp_socket *s, int state); -uint16 utp_call_get_udp_mtu(utp_context *ctx, utp_socket *s, const struct sockaddr *address, socklen_t address_len); -uint16 utp_call_get_udp_overhead(utp_context *ctx, utp_socket *s, const struct sockaddr *address, socklen_t address_len); -uint64 utp_call_get_milliseconds(utp_context *ctx, utp_socket *s); -uint64 utp_call_get_microseconds(utp_context *ctx, utp_socket *s); -uint32 utp_call_get_random(utp_context *ctx, utp_socket *s); -size_t utp_call_get_read_buffer_size(utp_context *ctx, utp_socket *s); -void utp_call_log(utp_context *ctx, utp_socket *s, const byte *buf); -void utp_call_sendto(utp_context *ctx, utp_socket *s, const byte *buf, size_t len, const struct sockaddr *address, socklen_t address_len, uint32 flags); - -#endif // __UTP_CALLBACKS_H__ diff --git a/libutp/utp_hash.cpp b/libutp/utp_hash.cpp deleted file mode 100644 index a4a71d906..000000000 --- a/libutp/utp_hash.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "utp_hash.h" -#include "utp_types.h" - -#define LIBUTP_HASH_UNUSED ((utp_link_t)-1) - -#ifdef STRICT_ALIGN -inline uint32 Read32(const void *p) -{ - uint32 tmp; - memcpy(&tmp, p, sizeof tmp); - return tmp; -} - -#else -inline uint32 Read32(const void *p) { return *(uint32*)p; } -#endif - - -// Get the amount of memory required for the hash parameters and the bucket set -// Waste a space for an unused bucket in order to ensure the following managed memory have 32-bit aligned addresses -// TODO: make this 64-bit clean -#define BASE_SIZE(bc) (sizeof(utp_hash_t) + sizeof(utp_link_t) * ((bc) + 1)) - -// Get a pointer to the base of the structure array managed by the hash table -#define get_bep(h) ((byte*)(h)) + BASE_SIZE((h)->N) - -// Get the address of the information associated with a specific structure in the array, -// given the address of the base of the structure. -// This assumes a utp_link_t link member is at the end of the structure. -// Given compilers filling out the memory to a 32-bit clean value, this may mean that -// the location named in the structure may not be the location actually used by the hash table, -// since the compiler may have padded the end of the structure with 2 bytes after the utp_link_t member. -// TODO: this macro should not require that the variable pointing at the hash table be named 'hash' -#define ptr_to_link(p) (utp_link_t *) (((byte *) (p)) + hash->E - sizeof(utp_link_t)) - -// Calculate how much to allocate for a hash table with bucket count, total size, and structure count -// TODO: make this 64-bit clean -#define ALLOCATION_SIZE(bc, ts, sc) (BASE_SIZE((bc)) + (ts) * (sc)) - -utp_hash_t *utp_hash_create(int N, int key_size, int total_size, int initial, utp_hash_compute_t hashfun, utp_hash_equal_t compfun) -{ - // Must have odd number of hash buckets (prime number is best) - assert(N % 2); - // Ensure structures will be at aligned memory addresses - // TODO: make this 64-bit clean - assert(0 == (total_size % 4)); - - int size = ALLOCATION_SIZE(N, total_size, initial); - utp_hash_t *hash = (utp_hash_t *) malloc( size ); - memset( hash, 0, size ); - - for (int i = 0; i < N + 1; ++i) - hash->inits[i] = LIBUTP_HASH_UNUSED; - hash->N = N; - hash->K = key_size; - hash->E = total_size; - hash->hash_compute = hashfun; - hash->hash_equal = compfun; - hash->allocated = initial; - hash->count = 0; - hash->used = 0; - hash->free = LIBUTP_HASH_UNUSED; - return hash; -} - -uint utp_hash_mem(const void *keyp, size_t keysize) -{ - uint hash = 0; - uint n = keysize; - while (n >= 4) { - hash ^= Read32(keyp); - keyp = (byte*)keyp + sizeof(uint32); - hash = (hash << 13) | (hash >> 19); - n -= 4; - } - while (n != 0) { - hash ^= *(byte*)keyp; - keyp = (byte*)keyp + sizeof(byte); - hash = (hash << 8) | (hash >> 24); - n--; - } - return hash; -} - -uint utp_hash_mkidx(utp_hash_t *hash, const void *keyp) -{ - // Generate a key from the hash - return hash->hash_compute(keyp, hash->K) % hash->N; -} - -static inline bool compare(byte *a, byte *b,int n) -{ - assert(n >= 4); - if (Read32(a) != Read32(b)) return false; - return memcmp(a+4, b+4, n-4) == 0; -} - -#define COMPARE(h,k1,k2,ks) (((h)->hash_equal) ? (h)->hash_equal((void*)k1,(void*)k2,ks) : compare(k1,k2,ks)) - -// Look-up a key in the hash table. -// Returns NULL if not found -void *utp_hash_lookup(utp_hash_t *hash, const void *key) -{ - utp_link_t idx = utp_hash_mkidx(hash, key); - - // base pointer - byte *bep = get_bep(hash); - - utp_link_t cur = hash->inits[idx]; - while (cur != LIBUTP_HASH_UNUSED) { - byte *key2 = bep + (cur * hash->E); - if (COMPARE(hash, (byte*)key, key2, hash->K)) - return key2; - cur = *ptr_to_link(key2); - } - - return NULL; -} - -// Add a new element to the hash table. -// Returns a pointer to the new element. -// This assumes the element is not already present! -void *utp_hash_add(utp_hash_t **hashp, const void *key) -{ - //Allocate a new entry - byte *elemp; - utp_link_t elem; - utp_hash_t *hash = *hashp; - utp_link_t idx = utp_hash_mkidx(hash, key); - - if ((elem=hash->free) == LIBUTP_HASH_UNUSED) { - utp_link_t all = hash->allocated; - if (hash->used == all) { - utp_hash_t *nhash; - if (all <= (LIBUTP_HASH_UNUSED/2)) { - all *= 2; - } else if (all != LIBUTP_HASH_UNUSED) { - all = LIBUTP_HASH_UNUSED; - } else { - // too many items! can't grow! - assert(0); - return NULL; - } - // otherwise need to allocate. - nhash = (utp_hash_t*)realloc(hash, ALLOCATION_SIZE(hash->N, hash->E, all)); - if (!nhash) { - // out of memory (or too big to allocate) - assert(nhash); - return NULL; - } - hash = *hashp = nhash; - hash->allocated = all; - } - - elem = hash->used++; - elemp = get_bep(hash) + elem * hash->E; - } else { - elemp = get_bep(hash) + elem * hash->E; - hash->free = *ptr_to_link(elemp); - } - - *ptr_to_link(elemp) = hash->inits[idx]; - hash->inits[idx] = elem; - hash->count++; - - // copy key into it - memcpy(elemp, key, hash->K); - return elemp; -} - -// Delete an element from the utp_hash_t -// Returns a pointer to the already deleted element. -void *utp_hash_del(utp_hash_t *hash, const void *key) -{ - utp_link_t idx = utp_hash_mkidx(hash, key); - - // base pointer - byte *bep = get_bep(hash); - - utp_link_t *curp = &hash->inits[idx]; - utp_link_t cur; - while ((cur=*curp) != LIBUTP_HASH_UNUSED) { - byte *key2 = bep + (cur * hash->E); - if (COMPARE(hash,(byte*)key,(byte*)key2, hash->K )) { - // found an item that matched. unlink it - *curp = *ptr_to_link(key2); - // Insert into freelist - *ptr_to_link(key2) = hash->free; - hash->free = cur; - hash->count--; - return key2; - } - curp = ptr_to_link(key2); - } - - return NULL; -} - -void *utp_hash_iterate(utp_hash_t *hash, utp_hash_iterator_t *iter) -{ - utp_link_t elem; - - if ((elem=iter->elem) == LIBUTP_HASH_UNUSED) { - // Find a bucket with an element - utp_link_t buck = iter->bucket + 1; - for(;;) { - if (buck >= hash->N) - return NULL; - if ((elem = hash->inits[buck]) != LIBUTP_HASH_UNUSED) - break; - buck++; - } - iter->bucket = buck; - } - - byte *elemp = get_bep(hash) + (elem * hash->E); - iter->elem = *ptr_to_link(elemp); - return elemp; -} - -void utp_hash_free_mem(utp_hash_t* hash) -{ - free(hash); -} diff --git a/libutp/utp_hash.h b/libutp/utp_hash.h deleted file mode 100644 index b33acbdae..000000000 --- a/libutp/utp_hash.h +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __UTP_HASH_H__ -#define __UTP_HASH_H__ - -#include // memset -#include // malloc - -#include "utp_types.h" -#include "utp_templates.h" - -// TODO: make utp_link_t a template parameter to HashTable -typedef uint32 utp_link_t; - -#ifdef _MSC_VER -// Silence the warning about the C99-compliant zero-length array at the end of -// the structure -#pragma warning(disable : 4200) -#endif - -#include - -typedef uint32 (*utp_hash_compute_t)(const void *keyp, size_t keysize); -typedef uint (*utp_hash_equal_t)(const void *key_a, const void *key_b, - size_t keysize); - -// In memory the HashTable is laid out as follows: -// ---------------------------- low -// | hash table data members | -// ---------------------------- _ -// | indices | ^ -// | . | | utp_link_t indices into the key-values. -// | . | . -// ---------------------------- - <----- bep -// | keys and values | each key-value pair has size total_size -// | . | -// | . | -// ---------------------------- high -// -// The code depends on the ability of the compiler to pad the length -// of the hash table data members structure to -// a length divisible by 32-bits with no remainder. -// -// Since the number of hash buckets (indices) should be odd, the code -// asserts this and adds one to the hash bucket count to ensure that the -// following key-value pairs array starts on a 32-bit boundary. -// -// The key-value pairs array should start on a 32-bit boundary, otherwise -// processors like the ARM will silently mangle 32-bit data in these structures -// (e.g., turning 0xABCD into 0XCDAB when moving a value from memory to register -// when the memory address is 16 bits offset from a 32-bit boundary), -// also, the value will be stored at an address two bytes lower than the address -// value would ordinarily indicate. -// -// The key-value pair is of type T. The first field in T must -// be the key, i.e., the first K bytes of T contains the key. -// total_size = sizeof(T) and thus sizeof(T) >= sizeof(K) -// -// N is the number of buckets. -// -struct utp_hash_t -{ - utp_link_t N; - byte K; - byte E; - size_t count; - utp_hash_compute_t hash_compute; - utp_hash_equal_t hash_equal; - utp_link_t allocated; - utp_link_t used; - utp_link_t free; - utp_link_t inits[0]; -}; - -#ifdef _MSC_VER -#pragma warning(default : 4200) -#endif - -struct utp_hash_iterator_t -{ - utp_link_t bucket; - utp_link_t elem; - - utp_hash_iterator_t() : bucket(0xffffffff), elem(0xffffffff) - { - } -}; - -uint -utp_hash_mem(const void *keyp, size_t keysize); -uint -utp_hash_comp(const void *key_a, const void *key_b, size_t keysize); - -utp_hash_t * -utp_hash_create(int N, int key_size, int total_size, int initial, - utp_hash_compute_t hashfun = utp_hash_mem, - utp_hash_equal_t eqfun = NULL); -void * -utp_hash_lookup(utp_hash_t *hash, const void *key); -void * -utp_hash_add(utp_hash_t **hashp, const void *key); -void * -utp_hash_del(utp_hash_t *hash, const void *key); - -void * -utp_hash_iterate(utp_hash_t *hash, utp_hash_iterator_t *iter); -void -utp_hash_free_mem(utp_hash_t *hash); - -/* - This HashTable requires that T have at least - sizeof(K)+sizeof(utp_link_t) bytes. Usually done like this: - - struct K { - int whatever; - }; - - struct T { - K wtf; - utp_link_t link; // also wtf - }; -*/ - -template < typename K, typename T > -class utpHashTable -{ - utp_hash_t *hash; - - public: - static uint - compare(const void *k1, const void *k2, ABSL_ATTRIBUTE_UNUSED size_t ks) - { - return *((K *)k1) == *((K *)k2); - } - static uint32 - compute_hash(const void *k, ABSL_ATTRIBUTE_UNUSED size_t ks) - { - return ((K *)k)->compute_hash(); - } - void - Init() - { - hash = NULL; - } - bool - Allocated() - { - return (hash != NULL); - } - void - Free() - { - utp_hash_free_mem(hash); - hash = NULL; - } - void - Create(int N, int initial) - { - hash = utp_hash_create(N, sizeof(K), sizeof(T), initial, &compute_hash, - &compare); - } - T * - Lookup(const K &key) - { - return (T *)utp_hash_lookup(hash, &key); - } - T * - Add(const K &key) - { - return (T *)utp_hash_add(&hash, &key); - } - T * - Delete(const K &key) - { - return (T *)utp_hash_del(hash, &key); - } - T * - Iterate(utp_hash_iterator_t &iterator) - { - return (T *)utp_hash_iterate(hash, &iterator); - } - size_t - GetCount() - { - return hash->count; - } -}; - -#endif //__UTP_HASH_H__ diff --git a/libutp/utp_internal.cpp b/libutp/utp_internal.cpp deleted file mode 100644 index 1529fce64..000000000 --- a/libutp/utp_internal.cpp +++ /dev/null @@ -1,4067 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include -#include -#include -#include -#include -#include // for UINT_MAX -#include - -#include "utp_types.h" -#include "utp_packedsockaddr.h" -#include "utp_internal.h" -#include "utp_hash.h" - -#define TIMEOUT_CHECK_INTERVAL 500 - -// number of bytes to increase max window size by, per RTT. This is -// scaled down linearly proportional to off_target. i.e. if all packets -// in one window have 0 delay, window size will increase by this number. -// Typically it's less. TCP increases one MSS per RTT, which is 1500 -#define MAX_CWND_INCREASE_BYTES_PER_RTT 3000 -#define CUR_DELAY_SIZE 3 -// experiments suggest that a clock skew of 10 ms per 325 seconds -// is not impossible. Reset delay_base every 13 minutes. The clock -// skew is dealt with by observing the delay base in the other -// direction, and adjusting our own upwards if the opposite direction -// delay base keeps going down -#define DELAY_BASE_HISTORY 13 -#define MAX_WINDOW_DECAY 100 // ms - -#define REORDER_BUFFER_SIZE 32 -#define REORDER_BUFFER_MAX_SIZE 1024 -#define OUTGOING_BUFFER_MAX_SIZE 1024 - -#define PACKET_SIZE 1435 - -// this is the minimum max_window value. It can never drop below this -#define MIN_WINDOW_SIZE 10 - -// if we receive 4 or more duplicate acks, we resend the packet -// that hasn't been acked yet -#define DUPLICATE_ACKS_BEFORE_RESEND 3 - -// Allow a reception window of at least 3 ack_nrs behind seq_nr -// A non-SYN packet with an ack_nr difference greater than this is -// considered suspicious and ignored -#define ACK_NR_ALLOWED_WINDOW DUPLICATE_ACKS_BEFORE_RESEND - -#define RST_INFO_TIMEOUT 10000 -#define RST_INFO_LIMIT 1000 -// 29 seconds determined from measuring many home NAT devices -#define KEEPALIVE_INTERVAL 29000 - -#define SEQ_NR_MASK 0xFFFF -#define ACK_NR_MASK 0xFFFF -#define TIMESTAMP_MASK 0xFFFFFFFF - -#define DIV_ROUND_UP(num, denom) ((num + denom - 1) / denom) - -// The totals are derived from the following data: -// 45: IPv6 address including embedded IPv4 address -// 11: Scope Id -// 2: Brackets around IPv6 address when port is present -// 6: Port (including colon) -// 1: Terminating null byte -char addrbuf[65]; -#define addrfmt(x, s) x.fmt(s, sizeof(s)) - -#if(defined(__SVR4) && defined(__sun)) -#pragma pack(1) -#else -#pragma pack(push, 1) -#endif - -// these packet sizes are including the uTP header wich -// is either 20 or 23 bytes depending on version -#define PACKET_SIZE_EMPTY_BUCKET 0 -#define PACKET_SIZE_EMPTY 23 -#define PACKET_SIZE_SMALL_BUCKET 1 -#define PACKET_SIZE_SMALL 373 -#define PACKET_SIZE_MID_BUCKET 2 -#define PACKET_SIZE_MID 723 -#define PACKET_SIZE_BIG_BUCKET 3 -#define PACKET_SIZE_BIG 1400 -#define PACKET_SIZE_HUGE_BUCKET 4 - -struct PACKED_ATTRIBUTE PacketFormatV1 -{ - // packet_type (4 high bits) - // protocol version (4 low bits) - byte ver_type; - byte - version() const - { - return ver_type & 0xf; - } - byte - type() const - { - return ver_type >> 4; - } - void - set_version(byte v) - { - ver_type = (ver_type & 0xf0) | (v & 0xf); - } - void - set_type(byte t) - { - ver_type = (ver_type & 0xf) | (t << 4); - } - - // Type of the first extension header - byte ext; - // connection ID - uint16_big connid; - uint32_big tv_usec; - uint32_big reply_micro; - // receive window size in bytes - uint32_big windowsize; - // Sequence number - uint16_big seq_nr; - // Acknowledgment number - uint16_big ack_nr; -}; - -struct PACKED_ATTRIBUTE PacketFormatAckV1 -{ - PacketFormatV1 pf; - byte ext_next; - byte ext_len; - byte acks[4]; -}; - -#if(defined(__SVR4) && defined(__sun)) -#pragma pack(0) -#else -#pragma pack(pop) -#endif - -enum -{ - ST_DATA = 0, // Data packet. - ST_FIN = 1, // Finalize the connection. This is the last packet. - ST_STATE = 2, // State packet. Used to transmit an ACK with no data. - ST_RESET = 3, // Terminate connection forcefully. - ST_SYN = 4, // Connect SYN - ST_NUM_STATES, // used for bounds checking -}; - -enum CONN_STATE -{ - CS_UNINITIALIZED = 0, - CS_IDLE, - CS_SYN_SENT, - CS_SYN_RECV, - CS_CONNECTED, - CS_CONNECTED_FULL, - CS_RESET, - CS_DESTROY -}; - -#if UTP_DEBUG_LOGGING -static const cstr flagnames[] = {"ST_DATA", "ST_FIN", "ST_STATE", "ST_RESET", - "ST_SYN"}; - -static const cstr statenames[] = { - "UNINITIALIZED", "IDLE", "SYN_SENT", "SYN_RECV", "CONNECTED", - "CONNECTED_FULL", "DESTROY_DELAY", "RESET", "DESTROY"}; - -#endif - -struct OutgoingPacket -{ - size_t length; - size_t payload; - uint64 time_sent; // microseconds - uint transmissions : 31; - bool need_resend : 1; - byte data[1]; -}; - -struct SizableCircularBuffer -{ - // This is the mask. Since it's always a power of 2, adding 1 to this value - // will return the size. - size_t mask; - // This is the elements that the circular buffer points to - void **elements; - - void * - get(size_t i) const - { - assert(elements); - return elements ? elements[i & mask] : NULL; - } - void - put(size_t i, void *data) - { - assert(elements); - elements[i & mask] = data; - } - - void - grow(size_t item, size_t index); - void - ensure_size(size_t item, size_t index) - { - if(index > mask) - grow(item, index); - } - size_t - size() - { - return mask + 1; - } -}; - -// Item contains the element we want to make space for -// index is the index in the list. -void -SizableCircularBuffer::grow(size_t item, size_t index) -{ - // Figure out the new size. - size_t size = mask + 1; - do - size *= 2; - while(index >= size); - - // Allocate the new buffer - void **buf = (void **)calloc(size, sizeof(void *)); - - size--; - - // Copy elements from the old buffer to the new buffer - for(size_t i = 0; i <= mask; i++) - { - buf[(item - index + i) & size] = get(item - index + i); - } - - // Swap to the newly allocated buffer - mask = size; - free(elements); - elements = buf; -} - -// compare if lhs is less than rhs, taking wrapping -// into account. if lhs is close to UINT_MAX and rhs -// is close to 0, lhs is assumed to have wrapped and -// considered smaller -bool -wrapping_compare_less(uint32 lhs, uint32 rhs, uint32 mask) -{ - // distance walking from lhs to rhs, downwards - const uint32 dist_down = (lhs - rhs) & mask; - // distance walking from lhs to rhs, upwards - const uint32 dist_up = (rhs - lhs) & mask; - - // if the distance walking up is shorter, lhs - // is less than rhs. If the distance walking down - // is shorter, then rhs is less than lhs - return dist_up < dist_down; -} - -struct DelayHist -{ - uint32 delay_base; - - // this is the history of delay samples, - // normalized by using the delay_base. These - // values are always greater than 0 and measures - // the queuing delay in microseconds - uint32 cur_delay_hist[CUR_DELAY_SIZE]; - size_t cur_delay_idx; - - // this is the history of delay_base. It's - // a number that doesn't have an absolute meaning - // only relative. It doesn't make sense to initialize - // it to anything other than values relative to - // what's been seen in the real world. - uint32 delay_base_hist[DELAY_BASE_HISTORY]; - size_t delay_base_idx; - // the time when we last stepped the delay_base_idx - uint64 delay_base_time; - - bool delay_base_initialized; - - void - clear(uint64 current_ms) - { - delay_base_initialized = false; - delay_base = 0; - cur_delay_idx = 0; - delay_base_idx = 0; - delay_base_time = current_ms; - for(size_t i = 0; i < CUR_DELAY_SIZE; i++) - { - cur_delay_hist[i] = 0; - } - for(size_t i = 0; i < DELAY_BASE_HISTORY; i++) - { - delay_base_hist[i] = 0; - } - } - - void - shift(const uint32 offset) - { - // the offset should never be "negative" - // assert(offset < 0x10000000); - - // increase all of our base delays by this amount - // this is used to take clock skew into account - // by observing the other side's changes in its base_delay - for(size_t i = 0; i < DELAY_BASE_HISTORY; i++) - { - delay_base_hist[i] += offset; - } - delay_base += offset; - } - - void - add_sample(const uint32 sample, uint64 current_ms) - { - // The two clocks (in the two peers) are assumed not to - // progress at the exact same rate. They are assumed to be - // drifting, which causes the delay samples to contain - // a systematic error, either they are under- - // estimated or over-estimated. This is why we update the - // delay_base every two minutes, to adjust for this. - - // This means the values will keep drifting and eventually wrap. - // We can cross the wrapping boundry in two directions, either - // going up, crossing the highest value, or going down, crossing 0. - - // if the delay_base is close to the max value and sample actually - // wrapped on the other end we would see something like this: - // delay_base = 0xffffff00, sample = 0x00000400 - // sample - delay_base = 0x500 which is the correct difference - - // if the delay_base is instead close to 0, and we got an even lower - // sample (that will eventually update the delay_base), we may see - // something like this: - // delay_base = 0x00000400, sample = 0xffffff00 - // sample - delay_base = 0xfffffb00 - // this needs to be interpreted as a negative number and the actual - // recorded delay should be 0. - - // It is important that all arithmetic that assume wrapping - // is done with unsigned intergers. Signed integers are not guaranteed - // to wrap the way unsigned integers do. At least GCC takes advantage - // of this relaxed rule and won't necessarily wrap signed ints. - - // remove the clock offset and propagation delay. - // delay base is min of the sample and the current - // delay base. This min-operation is subject to wrapping - // and care needs to be taken to correctly choose the - // true minimum. - - // specifically the problem case is when delay_base is very small - // and sample is very large (because it wrapped past zero), sample - // needs to be considered the smaller - - if(!delay_base_initialized) - { - // delay_base being 0 suggests that we haven't initialized - // it or its history with any real measurements yet. Initialize - // everything with this sample. - for(size_t i = 0; i < DELAY_BASE_HISTORY; i++) - { - // if we don't have a value, set it to the current sample - delay_base_hist[i] = sample; - continue; - } - delay_base = sample; - delay_base_initialized = true; - } - - if(wrapping_compare_less(sample, delay_base_hist[delay_base_idx], - TIMESTAMP_MASK)) - { - // sample is smaller than the current delay_base_hist entry - // update it - delay_base_hist[delay_base_idx] = sample; - } - - // is sample lower than delay_base? If so, update delay_base - if(wrapping_compare_less(sample, delay_base, TIMESTAMP_MASK)) - { - // sample is smaller than the current delay_base - // update it - delay_base = sample; - } - - // this operation may wrap, and is supposed to - const uint32 delay = sample - delay_base; - // sanity check. If this is triggered, something fishy is going on - // it means the measured sample was greater than 32 seconds! - // assert(delay < 0x2000000); - - cur_delay_hist[cur_delay_idx] = delay; - cur_delay_idx = (cur_delay_idx + 1) % CUR_DELAY_SIZE; - - // once every minute - if(current_ms - delay_base_time > 60 * 1000) - { - delay_base_time = current_ms; - delay_base_idx = (delay_base_idx + 1) % DELAY_BASE_HISTORY; - // clear up the new delay base history spot by initializing - // it to the current sample, then update it - delay_base_hist[delay_base_idx] = sample; - delay_base = delay_base_hist[0]; - // Assign the lowest delay in the last 2 minutes to delay_base - for(size_t i = 0; i < DELAY_BASE_HISTORY; i++) - { - if(wrapping_compare_less(delay_base_hist[i], delay_base, - TIMESTAMP_MASK)) - delay_base = delay_base_hist[i]; - } - } - } - - uint32 - get_value() - { - uint32 value = UINT_MAX; - for(size_t i = 0; i < CUR_DELAY_SIZE; i++) - { - value = min< uint32 >(cur_delay_hist[i], value); - } - // value could be UINT_MAX if we have no samples yet... - return value; - } -}; - -struct UTPSocket -{ - ~UTPSocket(); - - PackedSockAddr addr; - utp_context *ctx; - - int ida; // for ack socket list - - uint16 retransmit_count; - - uint16 reorder_count; - byte duplicate_ack; - - // the number of packets in the send queue. Packets that haven't - // yet been sent count as well as packets marked as needing resend - // the oldest un-acked packet in the send queue is seq_nr - cur_window_packets - uint16 cur_window_packets; - - // how much of the window is used, number of bytes in-flight - // packets that have not yet been sent do not count, packets - // that are marked as needing to be re-sent (due to a timeout) - // don't count either - size_t cur_window; - // maximum window size, in bytes - size_t max_window; - // UTP_SNDBUF setting, in bytes - size_t opt_sndbuf; - // UTP_RCVBUF setting, in bytes - size_t opt_rcvbuf; - - // this is the target delay, in microseconds - // for this socket. defaults to 100000. - size_t target_delay; - - // Is a FIN packet in the reassembly buffer? - bool got_fin : 1; - // Have we reached the FIN? - bool got_fin_reached : 1; - - // Have we sent our FIN? - bool fin_sent : 1; - // Has our fin been ACKed? - bool fin_sent_acked : 1; - - // Reading is disabled - bool read_shutdown : 1; - // User called utp_close() - bool close_requested : 1; - - // Timeout procedure - bool fast_timeout : 1; - - // max receive window for other end, in bytes - size_t max_window_user; - CONN_STATE state; - // TickCount when we last decayed window (wraps) - int64 last_rwin_decay; - - // the sequence number of the FIN packet. This field is only set - // when we have received a FIN, and the flag field has the FIN flag set. - // it is used to know when it is safe to destroy the socket, we must have - // received all packets up to this sequence number first. - uint16 eof_pkt; - - // All sequence numbers up to including this have been properly received - // by us - uint16 ack_nr; - // This is the sequence number for the next packet to be sent. - uint16 seq_nr; - - uint16 timeout_seq_nr; - - // This is the sequence number of the next packet we're allowed to - // do a fast resend with. This makes sure we only do a fast-resend - // once per packet. We can resend the packet with this sequence number - // or any later packet (with a higher sequence number). - uint16 fast_resend_seq_nr; - - uint32 reply_micro; - - uint64 last_got_packet; - uint64 last_sent_packet; - uint64 last_measured_delay; - - // timestamp of the last time the cwnd was full - // this is used to prevent the congestion window - // from growing when we're not sending at capacity - mutable uint64 last_maxed_out_window; - - void *userdata; - - // Round trip time - uint rtt; - // Round trip time variance - uint rtt_var; - // Round trip timeout - uint rto; - DelayHist rtt_hist; - uint retransmit_timeout; - // The RTO timer will timeout here. - uint64 rto_timeout; - // When the window size is set to zero, start this timer. It will send a new - // packet every 30secs. - uint64 zerowindow_time; - - uint32 conn_seed; - // Connection ID for packets I receive - uint32 conn_id_recv; - // Connection ID for packets I send - uint32 conn_id_send; - // Last rcv window we advertised, in bytes - size_t last_rcv_win; - - DelayHist our_hist; - DelayHist their_hist; - - // extension bytes from SYN packet - byte extensions[8]; - - // MTU Discovery - // time when we should restart the MTU discovery - uint64 mtu_discover_time; - // ceiling and floor of binary search. last is the mtu size - // we're currently using - uint32 mtu_ceiling, mtu_floor, mtu_last; - // we only ever have a single probe in flight at any given time. - // this is the sequence number of that probe, and the size of - // that packet - uint32 mtu_probe_seq, mtu_probe_size; - - // this is the average delay samples, as compared to the initial - // sample. It's averaged over 5 seconds - int32 average_delay; - // this is the sum of all the delay samples - // we've made recently. The important distinction - // of these samples is that they are all made compared - // to the initial sample, this is to deal with - // wrapping in a simple way. - int64 current_delay_sum; - // number of sample ins current_delay_sum - int current_delay_samples; - // initialized to 0, set to the first raw delay sample - // each sample that's added to current_delay_sum - // is subtracted from the value first, to make it - // a delay relative to this sample - uint32 average_delay_base; - // the next time we should add an average delay - // sample into average_delay_hist - uint64 average_sample_time; - // the estimated clock drift between our computer - // and the endpoint computer. The unit is microseconds - // per 5 seconds - int32 clock_drift; - // just used for logging - int32 clock_drift_raw; - - SizableCircularBuffer inbuf, outbuf; - -#ifdef _DEBUG - // Public per-socket statistics, returned by utp_get_stats() - utp_socket_stats _stats; -#endif - - // true if we're in slow-start (exponential growth) phase - bool slow_start; - - // the slow-start threshold, in bytes - size_t ssthresh; - - void - log(int level, char const *fmt, ...) - { - va_list va; - char buf[4096], buf2[4096]; - - // don't bother with vsnprintf() etc calls if we're not going to log. - if(!ctx->would_log(level)) - { - return; - } - - va_start(va, fmt); - vsnprintf(buf, 4096, fmt, va); - va_end(va); - buf[4095] = '\0'; - - snprintf(buf2, 4096, "%p %s %06u %s", this, addrfmt(addr, addrbuf), - conn_id_recv, buf); - buf2[4095] = '\0'; - - ctx->log_unchecked(this, buf2); - } - - void - schedule_ack(); - - // called every time mtu_floor or mtu_ceiling are adjusted - void - mtu_search_update(); - void - mtu_reset(); - - // Calculates the current receive window - size_t - get_rcv_window() - { - // Trim window down according to what's already in buffer. - const size_t numbuf = utp_call_get_read_buffer_size(this->ctx, this); - assert((int)numbuf >= 0); - return opt_rcvbuf > numbuf ? opt_rcvbuf - numbuf : 0; - } - - // Test if we're ready to decay max_window - // XXX this breaks when spaced by > INT_MAX/2, which is 49 - // days; the failure mode in that case is we do an extra decay - // or fail to do one when we really shouldn't. - bool - can_decay_win(int64 msec) const - { - return (msec - last_rwin_decay) >= MAX_WINDOW_DECAY; - } - - // If we can, decay max window, returns true if we actually did so - void - maybe_decay_win(uint64 current_ms) - { - if(can_decay_win(current_ms)) - { - // TCP uses 0.5 - max_window = (size_t)(max_window * .5); - last_rwin_decay = current_ms; - if(max_window < MIN_WINDOW_SIZE) - max_window = MIN_WINDOW_SIZE; - slow_start = false; - ssthresh = max_window; - } - } - - size_t - get_header_size() const - { - return sizeof(PacketFormatV1); - } - - size_t - get_udp_mtu() - { - socklen_t len; - SOCKADDR_STORAGE sa = addr.get_sockaddr_storage(&len); - return utp_call_get_udp_mtu(this->ctx, this, (const struct sockaddr *)&sa, - len); - } - - size_t - get_udp_overhead() - { - socklen_t len; - SOCKADDR_STORAGE sa = addr.get_sockaddr_storage(&len); - return utp_call_get_udp_overhead(this->ctx, this, - (const struct sockaddr *)&sa, len); - } - - size_t - get_overhead() - { - return get_udp_overhead() + get_header_size(); - } - - void - send_data(byte *b, size_t length, bandwidth_type_t type, uint32 flags = 0); - - void - send_ack(bool synack = false); - - void - send_keep_alive(); - - static void - send_rst(utp_context *ctx, const PackedSockAddr &addr, uint32 conn_id_send, - uint16 ack_nr, uint16 seq_nr); - - void - send_packet(OutgoingPacket *pkt); - - bool - is_full(int bytes = -1); - bool - flush_packets(); - void - write_outgoing_packet(size_t payload, uint flags, struct utp_iovec *iovec, - size_t num_iovecs); - -#ifdef _DEBUG - void - check_invariant(); -#endif - - void - check_timeouts(); - int - ack_packet(uint16 seq); - size_t - selective_ack_bytes(uint base, const byte *mask, byte len, int64 &min_rtt); - void - selective_ack(uint base, const byte *mask, byte len); - void - apply_ccontrol(size_t bytes_acked, uint32 actual_delay, int64 min_rtt); - size_t - get_packet_size() const; -}; - -void -removeSocketFromAckList(UTPSocket *conn) -{ - if(conn->ida >= 0) - { - UTPSocket *last = - conn->ctx->ack_sockets[conn->ctx->ack_sockets.GetCount() - 1]; - - assert(last->ida < (int)(conn->ctx->ack_sockets.GetCount())); - assert(conn->ctx->ack_sockets[last->ida] == last); - last->ida = conn->ida; - conn->ctx->ack_sockets[conn->ida] = last; - conn->ida = -1; - - // Decrease the count - conn->ctx->ack_sockets.SetCount(conn->ctx->ack_sockets.GetCount() - 1); - } -} - -static void -utp_register_sent_packet(utp_context *ctx, size_t length) -{ - if(length <= PACKET_SIZE_MID) - { - if(length <= PACKET_SIZE_EMPTY) - { - ctx->context_stats._nraw_send[PACKET_SIZE_EMPTY_BUCKET]++; - } - else if(length <= PACKET_SIZE_SMALL) - { - ctx->context_stats._nraw_send[PACKET_SIZE_SMALL_BUCKET]++; - } - else - ctx->context_stats._nraw_send[PACKET_SIZE_MID_BUCKET]++; - } - else - { - if(length <= PACKET_SIZE_BIG) - { - ctx->context_stats._nraw_send[PACKET_SIZE_BIG_BUCKET]++; - } - else - ctx->context_stats._nraw_send[PACKET_SIZE_HUGE_BUCKET]++; - } -} - -void -send_to_addr(utp_context *ctx, const byte *p, size_t len, - const PackedSockAddr &addr, int flags = 0) -{ - socklen_t tolen; - SOCKADDR_STORAGE to = addr.get_sockaddr_storage(&tolen); - utp_register_sent_packet(ctx, len); - utp_call_sendto(ctx, NULL, p, len, (const struct sockaddr *)&to, tolen, - flags); -} - -void -UTPSocket::schedule_ack() -{ - if(ida == -1) - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "schedule_ack"); -#endif - ida = ctx->ack_sockets.Append(this); - } - else - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "schedule_ack: already in list"); -#endif - } -} - -void -UTPSocket::send_data(byte *b, size_t length, bandwidth_type_t type, - uint32 flags) -{ - // time stamp this packet with local time, the stamp goes into - // the header of every packet at the 8th byte for 8 bytes : - // two integers, check packet.h for more - uint64 time = utp_call_get_microseconds(ctx, this); - - PacketFormatV1 *b1 = (PacketFormatV1 *)b; - b1->tv_usec = (uint32)time; - b1->reply_micro = reply_micro; - - last_sent_packet = ctx->current_ms; - -#ifdef _DEBUG - _stats.nbytes_xmit += length; - ++_stats.nxmit; -#endif - - if(ctx->callbacks[UTP_ON_OVERHEAD_STATISTICS]) - { - size_t n; - if(type == payload_bandwidth) - { - // if this packet carries payload, just - // count the header as overhead - type = header_overhead; - n = get_overhead(); - } - else - { - n = length + get_udp_overhead(); - } - utp_call_on_overhead_statistics(ctx, this, true, n, type); - } -#if UTP_DEBUG_LOGGING - int flags2 = b1->type(); - uint16 seq_nr = b1->seq_nr; - uint16 ack_nr = b1->ack_nr; - log(UTP_LOG_DEBUG, - "send %s len:%u id:%u timestamp:" I64u - " reply_micro:%u flags:%s seq_nr:%u ack_nr:%u", - addrfmt(addr, addrbuf), (uint)length, conn_id_send, time, reply_micro, - flagnames[flags2], seq_nr, ack_nr); -#endif - send_to_addr(ctx, b, length, addr, flags); - removeSocketFromAckList(this); -} - -void -UTPSocket::send_ack(bool synack) -{ - PacketFormatAckV1 pfa; - zeromem(&pfa); - - size_t len; - last_rcv_win = get_rcv_window(); - pfa.pf.set_version(1); - pfa.pf.set_type(ST_STATE); - pfa.pf.ext = 0; - pfa.pf.connid = conn_id_send; - pfa.pf.ack_nr = ack_nr; - pfa.pf.seq_nr = seq_nr; - pfa.pf.windowsize = (uint32)last_rcv_win; - len = sizeof(PacketFormatV1); - - // we never need to send EACK for connections - // that are shutting down - if(reorder_count != 0 && !got_fin_reached) - { - // if reorder count > 0, send an EACK. - // reorder count should always be 0 - // for synacks, so this should not be - // as synack - assert(!synack); - (void)synack; - pfa.pf.ext = 1; - pfa.ext_next = 0; - pfa.ext_len = 4; - uint m = 0; - - // reorder count should only be non-zero - // if the packet ack_nr + 1 has not yet - // been received - assert(inbuf.get(ack_nr + 1) == NULL); - size_t window = min< size_t >(14 + 16, inbuf.size()); - // Generate bit mask of segments received. - for(size_t i = 0; i < window; i++) - { - if(inbuf.get(ack_nr + i + 2) != NULL) - { - m |= 1 << i; - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "EACK packet [%u]", ack_nr + i + 2); -#endif - } - } - pfa.acks[0] = (byte)m; - pfa.acks[1] = (byte)(m >> 8); - pfa.acks[2] = (byte)(m >> 16); - pfa.acks[3] = (byte)(m >> 24); - len += 4 + 2; - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "Sending EACK %u [%u] bits:[%032b]", ack_nr, - conn_id_send, m); -#endif - } - else - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "Sending ACK %u [%u]", ack_nr, conn_id_send); -#endif - } - - send_data((byte *)&pfa, len, ack_overhead); - removeSocketFromAckList(this); -} - -void -UTPSocket::send_keep_alive() -{ - ack_nr--; - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "Sending KeepAlive ACK %u [%u]", ack_nr, conn_id_send); -#endif - - send_ack(); - ack_nr++; -} - -void -UTPSocket::send_rst(utp_context *ctx, const PackedSockAddr &addr, - uint32 conn_id_send, uint16 ack_nr, uint16 seq_nr) -{ - PacketFormatV1 pf1; - zeromem(&pf1); - - size_t len; - pf1.set_version(1); - pf1.set_type(ST_RESET); - pf1.ext = 0; - pf1.connid = conn_id_send; - pf1.ack_nr = ack_nr; - pf1.seq_nr = seq_nr; - pf1.windowsize = 0; - len = sizeof(PacketFormatV1); - - // LOG_DEBUG("%s: Sending RST id:%u seq_nr:%u ack_nr:%u", addrfmt(addr, - // addrbuf), conn_id_send, seq_nr, ack_nr); LOG_DEBUG("send %s len:%u - // id:%u", addrfmt(addr, addrbuf), (uint)len, conn_id_send); - send_to_addr(ctx, (const byte *)&pf1, len, addr); -} - -void -UTPSocket::send_packet(OutgoingPacket *pkt) -{ - // only count against the quota the first time we - // send the packet. Don't enforce quota when closing - // a socket. Only enforce the quota when we're sending - // at slow rates (max window < packet size) - - // size_t max_send = min(max_window, opt_sndbuf, max_window_user); - time_t cur_time = utp_call_get_milliseconds(this->ctx, this); - - if(pkt->transmissions == 0 || pkt->need_resend) - { - cur_window += pkt->payload; - } - - pkt->need_resend = false; - - PacketFormatV1 *p1 = (PacketFormatV1 *)pkt->data; - p1->ack_nr = ack_nr; - pkt->time_sent = utp_call_get_microseconds(this->ctx, this); - - // socklen_t salen; - // SOCKADDR_STORAGE sa = addr.get_sockaddr_storage(&salen); - bool use_as_mtu_probe = false; - - // TODO: this is subject to nasty wrapping issues! Below as well - if(mtu_discover_time < (uint64)cur_time) - { - // it's time to reset our MTU assupmtions - // and trigger a new search - mtu_reset(); - } - - // don't use packets that are larger then mtu_ceiling - // as probes, since they were probably used as probes - // already and failed, now we need it to fragment - // just to get it through - // if seq_nr == 1, the probe would end up being 0 - // which is a magic number representing no-probe - // that why we don't send a probe for a packet with - // sequence number 0 - if(mtu_floor < mtu_ceiling && pkt->length > mtu_floor - && pkt->length <= mtu_ceiling && mtu_probe_seq == 0 && seq_nr != 1 - && pkt->transmissions == 0) - { - // we've already incremented seq_nr - // for this packet - mtu_probe_seq = (seq_nr - 1) & ACK_NR_MASK; - mtu_probe_size = pkt->length; - assert(pkt->length >= mtu_floor); - assert(pkt->length <= mtu_ceiling); - use_as_mtu_probe = true; - log(UTP_LOG_MTU, "MTU [PROBE] floor:%d ceiling:%d current:%d", mtu_floor, - mtu_ceiling, mtu_probe_size); - } - - pkt->transmissions++; - send_data( - (byte *)pkt->data, pkt->length, - (state == CS_SYN_SENT) - ? connect_overhead - : (pkt->transmissions == 1) ? payload_bandwidth : retransmit_overhead, - use_as_mtu_probe ? UTP_UDP_DONTFRAG : 0); -} - -bool -UTPSocket::is_full(int bytes) -{ - size_t packet_size = get_packet_size(); - if(bytes < 0) - bytes = packet_size; - else if(bytes > (int)packet_size) - bytes = (int)packet_size; - size_t max_send = min(max_window, opt_sndbuf, max_window_user); - - // subtract one to save space for the FIN packet - if(cur_window_packets >= OUTGOING_BUFFER_MAX_SIZE - 1) - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "is_full:false cur_window_packets:%d MAX:%d", - cur_window_packets, OUTGOING_BUFFER_MAX_SIZE - 1); -#endif - - last_maxed_out_window = ctx->current_ms; - return true; - } - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, - "is_full:%s. cur_window:%u pkt:%u max:%u cur_window_packets:%u " - "max_window:%u", - (cur_window + bytes > max_send) ? "true" : "false", cur_window, bytes, - max_send, cur_window_packets, max_window); -#endif - - if(cur_window + bytes > max_send) - { - last_maxed_out_window = ctx->current_ms; - return true; - } - return false; -} - -bool -UTPSocket::flush_packets() -{ - size_t packet_size = get_packet_size(); - - // send packets that are waiting on the pacer to be sent - // i has to be an unsigned 16 bit counter to wrap correctly - // signed types are not guaranteed to wrap the way you expect - for(uint16 i = seq_nr - cur_window_packets; i != seq_nr; ++i) - { - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(i); - if(pkt == 0 || (pkt->transmissions > 0 && pkt->need_resend == false)) - continue; - // have we run out of quota? - if(is_full()) - return true; - - // Nagle check - // don't send the last packet if we have one packet in-flight - // and the current packet is still smaller than packet_size. - if(i != ((seq_nr - 1) & ACK_NR_MASK) || cur_window_packets == 1 - || pkt->payload >= packet_size) - { - send_packet(pkt); - } - } - return false; -} - -// @payload: number of bytes to send -// @flags: either ST_DATA, or ST_FIN -// @iovec: base address of iovec array -// @num_iovecs: number of iovecs in array -void -UTPSocket::write_outgoing_packet(size_t payload, uint flags, - struct utp_iovec *iovec, size_t num_iovecs) -{ - // Setup initial timeout timer - if(cur_window_packets == 0) - { - retransmit_timeout = rto; - rto_timeout = ctx->current_ms + retransmit_timeout; - assert(cur_window == 0); - } - - size_t packet_size = get_packet_size(); - do - { - assert(cur_window_packets < OUTGOING_BUFFER_MAX_SIZE); - assert(flags == ST_DATA || flags == ST_FIN); - - size_t added = 0; - - OutgoingPacket *pkt = NULL; - - if(cur_window_packets > 0) - { - pkt = (OutgoingPacket *)outbuf.get(seq_nr - 1); - } - - const size_t header_size = get_header_size(); - bool append = true; - - // if there's any room left in the last packet in the window - // and it hasn't been sent yet, fill that frame first - if(payload && pkt && !pkt->transmissions && pkt->payload < packet_size) - { - // Use the previous unsent packet - added = - min(payload + pkt->payload, max< size_t >(packet_size, pkt->payload)) - - pkt->payload; - pkt = (OutgoingPacket *)realloc( - pkt, - (sizeof(OutgoingPacket) - 1) + header_size + pkt->payload + added); - outbuf.put(seq_nr - 1, pkt); - append = false; - assert(!pkt->need_resend); - } - else - { - // Create the packet to send. - added = payload; - pkt = (OutgoingPacket *)malloc((sizeof(OutgoingPacket) - 1) + header_size - + added); - pkt->payload = 0; - pkt->transmissions = 0; - pkt->need_resend = false; - } - - if(added) - { - assert(flags == ST_DATA); - - // Fill it with data from the upper layer. - unsigned char *p = pkt->data + header_size + pkt->payload; - size_t needed = added; - - /* - while (needed) { - *p = *(char*)iovec[0].iov_base; - p++; - iovec[0].iov_base = (char *)iovec[0].iov_base + 1; - needed--; - } - */ - - for(size_t i = 0; i < num_iovecs && needed; i++) - { - if(iovec[i].iov_len == 0) - continue; - - size_t num = min< size_t >(needed, iovec[i].iov_len); - memcpy(p, iovec[i].iov_base, num); - - p += num; - - iovec[i].iov_len -= num; - iovec[i].iov_base = (byte *)iovec[i].iov_base - + num; // iovec[i].iov_base += num, but without void* pointers - needed -= num; - } - - assert(needed == 0); - } - pkt->payload += added; - pkt->length = header_size + pkt->payload; - - last_rcv_win = get_rcv_window(); - - PacketFormatV1 *p1 = (PacketFormatV1 *)pkt->data; - // p1->ver_type; needs to be set!! - p1->set_version(1); - p1->set_type(flags); - p1->ext = 0; - p1->connid = conn_id_send; - p1->windowsize = (uint32)last_rcv_win; - p1->ack_nr = ack_nr; - - if(append) - { - // Remember the message in the outgoing queue. - outbuf.ensure_size(seq_nr, cur_window_packets); - outbuf.put(seq_nr, pkt); - p1->seq_nr = seq_nr; - seq_nr++; - cur_window_packets++; - } - - payload -= added; - - } while(payload); - - flush_packets(); -} - -#ifdef _DEBUG -void -UTPSocket::check_invariant() -{ - if(reorder_count > 0) - { - assert(inbuf.get(ack_nr + 1) == NULL); - } - - size_t outstanding_bytes = 0; - for(int i = 0; i < cur_window_packets; ++i) - { - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(seq_nr - i - 1); - if(pkt == 0 || pkt->transmissions == 0 || pkt->need_resend) - continue; - outstanding_bytes += pkt->payload; - } - assert(outstanding_bytes == cur_window); -} -#endif - -void -UTPSocket::check_timeouts() -{ -#ifdef _DEBUG - check_invariant(); -#endif - - // this invariant should always be true - assert(cur_window_packets == 0 || outbuf.get(seq_nr - cur_window_packets)); - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, - "CheckTimeouts timeout:%d max_window:%u cur_window:%u " - "state:%s cur_window_packets:%u", - (int)(rto_timeout - ctx->current_ms), (uint)max_window, (uint)cur_window, - statenames[state], cur_window_packets); -#endif - - if(state != CS_DESTROY) - flush_packets(); - - switch(state) - { - case CS_SYN_SENT: - case CS_SYN_RECV: - case CS_CONNECTED_FULL: - case CS_CONNECTED: - { - // Reset max window... - if((int)(ctx->current_ms - zerowindow_time) >= 0 && max_window_user == 0) - { - max_window_user = PACKET_SIZE; - } - - if((int)(ctx->current_ms - rto_timeout) >= 0 && rto_timeout > 0) - { - bool ignore_loss = false; - - if(cur_window_packets == 1 - && ((seq_nr - 1) & ACK_NR_MASK) == mtu_probe_seq - && mtu_probe_seq != 0) - { - // we only had a single outstanding packet that timed out, and it was - // the probe - mtu_ceiling = mtu_probe_size - 1; - mtu_search_update(); - // this packet was most likely dropped because the packet size being - // too big and not because congestion. To accelerate the binary search - // for the MTU, resend immediately and don't reset the window size - ignore_loss = true; - log(UTP_LOG_MTU, "MTU [PROBE-TIMEOUT] floor:%d ceiling:%d current:%d", - mtu_floor, mtu_ceiling, mtu_last); - } - // we dropepd the probe, clear these fields to - // allow us to send a new one - mtu_probe_seq = mtu_probe_size = 0; - log(UTP_LOG_MTU, "MTU [TIMEOUT]"); - - /* - OutgoingPacket *pkt = (OutgoingPacket*)outbuf.get(seq_nr - - cur_window_packets); - - // If there were a lot of retransmissions, force recomputation of round - trip time if (pkt->transmissions >= 4) rtt = 0; - */ - - // Increase RTO - const uint new_timeout = - ignore_loss ? retransmit_timeout : retransmit_timeout * 2; - - // They initiated the connection but failed to respond before the rto. - // A malicious client can also spoof the destination address of a ST_SYN - // bringing us to this state. Kill the connection and do not notify the - // upper layer - if(state == CS_SYN_RECV) - { - state = CS_DESTROY; - utp_call_on_error(ctx, this, UTP_ETIMEDOUT); - return; - } - - // We initiated the connection but the other side failed to respond - // before the rto - if(retransmit_count >= 4 - || (state == CS_SYN_SENT && retransmit_count >= 2)) - { - // 4 consecutive transmissions have timed out. Kill it. If we - // haven't even connected yet, give up after only 2 consecutive - // failed transmissions. - if(close_requested) - state = CS_DESTROY; - else - state = CS_RESET; - utp_call_on_error(ctx, this, UTP_ETIMEDOUT); - return; - } - - retransmit_timeout = new_timeout; - rto_timeout = ctx->current_ms + new_timeout; - - if(!ignore_loss) - { - // On Timeout - duplicate_ack = 0; - - int packet_size = get_packet_size(); - - if((cur_window_packets == 0) && ((int)max_window > packet_size)) - { - // we don't have any packets in-flight, even though - // we could. This implies that the connection is just - // idling. No need to be aggressive about resetting the - // congestion window. Just let it decay by a 3:rd. - // don't set it any lower than the packet size though - max_window = max(max_window * 2 / 3, size_t(packet_size)); - } - else - { - // our delay was so high that our congestion window - // was shrunk below one packet, preventing us from - // sending anything for one time-out period. Now, reset - // the congestion window to fit one packet, to start over - // again - max_window = packet_size; - slow_start = true; - } - } - - // every packet should be considered lost - for(int i = 0; i < cur_window_packets; ++i) - { - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(seq_nr - i - 1); - if(pkt == 0 || pkt->transmissions == 0 || pkt->need_resend) - continue; - pkt->need_resend = true; - assert(cur_window >= pkt->payload); - cur_window -= pkt->payload; - } - - if(cur_window_packets > 0) - { - retransmit_count++; - // used in parse_log.py - log(UTP_LOG_NORMAL, - "Packet timeout. Resend. seq_nr:%u. timeout:%u " - "max_window:%u cur_window_packets:%d", - seq_nr - cur_window_packets, retransmit_timeout, (uint)max_window, - int(cur_window_packets)); - - fast_timeout = true; - timeout_seq_nr = seq_nr; - - OutgoingPacket *pkt = - (OutgoingPacket *)outbuf.get(seq_nr - cur_window_packets); - assert(pkt); - - // Re-send the packet. - send_packet(pkt); - } - } - - // Mark the socket as writable. If the cwnd has grown, or if the number of - // bytes in-flight is lower than cwnd, we need to make the socket writable - // again in case it isn't - if(state == CS_CONNECTED_FULL && !is_full()) - { - state = CS_CONNECTED; - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, - "Socket writable. max_window:%u cur_window:%u packet_size:%u", - (uint)max_window, (uint)cur_window, (uint)get_packet_size()); -#endif - utp_call_on_state_change(this->ctx, this, UTP_STATE_WRITABLE); - } - - if(state >= CS_CONNECTED && !fin_sent) - { - if((int)(ctx->current_ms - last_sent_packet) >= KEEPALIVE_INTERVAL) - { - send_keep_alive(); - } - } - break; - } - - // prevent warning - case CS_UNINITIALIZED: - case CS_IDLE: - case CS_RESET: - case CS_DESTROY: - break; - } -} - -// this should be called every time we change mtu_floor or mtu_ceiling -void -UTPSocket::mtu_search_update() -{ - assert(mtu_floor <= mtu_ceiling); - - // binary search - mtu_last = (mtu_floor + mtu_ceiling) / 2; - - // enable a new probe to be sent - mtu_probe_seq = mtu_probe_size = 0; - - // if the floor and ceiling are close enough, consider the - // MTU binary search complete. We set the current value - // to floor since that's the only size we know can go through - // also set the ceiling to floor to terminate the searching - if(mtu_ceiling - mtu_floor <= 16) - { - mtu_last = mtu_floor; - log(UTP_LOG_MTU, "MTU [DONE] floor:%d ceiling:%d current:%d", mtu_floor, - mtu_ceiling, mtu_last); - mtu_ceiling = mtu_floor; - assert(mtu_floor <= mtu_ceiling); - // Do another search in 30 minutes - mtu_discover_time = - utp_call_get_milliseconds(this->ctx, this) + 30 * 60 * 1000; - } -} - -void -UTPSocket::mtu_reset() -{ - mtu_ceiling = get_udp_mtu(); - // Less would not pass TCP... - mtu_floor = 576; - log(UTP_LOG_MTU, "MTU [RESET] floor:%d ceiling:%d current:%d", mtu_floor, - mtu_ceiling, mtu_last); - assert(mtu_floor <= mtu_ceiling); - mtu_discover_time = - utp_call_get_milliseconds(this->ctx, this) + 30 * 60 * 1000; -} - -// returns: -// 0: the packet was acked. -// 1: it means that the packet had already been acked -// 2: the packet has not been sent yet -int -UTPSocket::ack_packet(uint16 seq) -{ - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(seq); - - // the packet has already been acked (or not sent) - if(pkt == NULL) - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "got ack for:%u (already acked, or never sent)", seq); -#endif - - return 1; - } - - // can't ack packets that haven't been sent yet! - if(pkt->transmissions == 0) - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, - "got ack for:%u (never sent, pkt_size:%u need_resend:%u)", seq, - (uint)pkt->payload, pkt->need_resend); -#endif - - return 2; - } - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "got ack for:%u (pkt_size:%u need_resend:%u)", seq, - (uint)pkt->payload, pkt->need_resend); -#endif - - outbuf.put(seq, NULL); - - // if we never re-sent the packet, update the RTT estimate - if(pkt->transmissions == 1) - { - // Estimate the round trip time. - const uint32 ertt = (uint32)( - (utp_call_get_microseconds(this->ctx, this) - pkt->time_sent) / 1000); - if(rtt == 0) - { - // First round trip time sample - rtt = ertt; - rtt_var = ertt / 2; - // sanity check. rtt should never be more than 6 seconds - // assert(rtt < 6000); - } - else - { - // Compute new round trip times - const int delta = (int)rtt - ertt; - rtt_var = rtt_var + (int)(abs(delta) - rtt_var) / 4; - rtt = rtt - rtt / 8 + ertt / 8; - // sanity check. rtt should never be more than 6 seconds - // assert(rtt < 6000); - rtt_hist.add_sample(ertt, ctx->current_ms); - } - rto = max< uint >(rtt + rtt_var * 4, 1000); - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "rtt:%u avg:%u var:%u rto:%u", ertt, rtt, rtt_var, rto); -#endif - } - retransmit_timeout = rto; - rto_timeout = ctx->current_ms + rto; - // if need_resend is set, this packet has already - // been considered timed-out, and is not included in - // the cur_window anymore - if(!pkt->need_resend) - { - assert(cur_window >= pkt->payload); - cur_window -= pkt->payload; - } - free(pkt); - retransmit_count = 0; - return 0; -} - -// count the number of bytes that were acked by the EACK header -size_t -UTPSocket::selective_ack_bytes(uint base, const byte *mask, byte len, - int64 &min_rtt) -{ - if(cur_window_packets == 0) - return 0; - - size_t acked_bytes = 0; - int bits = len * 8; - uint64 now = utp_call_get_microseconds(this->ctx, this); - - do - { - uint v = base + bits; - - // ignore bits that haven't been sent yet - // see comment in UTPSocket::selective_ack - if(((seq_nr - v - 1) & ACK_NR_MASK) >= (uint16)(cur_window_packets - 1)) - continue; - - // ignore bits that represents packets we haven't sent yet - // or packets that have already been acked - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(v); - if(!pkt || pkt->transmissions == 0) - continue; - - // Count the number of segments that were successfully received past it. - if(bits >= 0 && mask[bits >> 3] & (1 << (bits & 7))) - { - assert((int)(pkt->payload) >= 0); - acked_bytes += pkt->payload; - if(pkt->time_sent < now) - min_rtt = min< int64 >(min_rtt, now - pkt->time_sent); - else - min_rtt = min< int64 >(min_rtt, 50000); - continue; - } - } while(--bits >= -1); - return acked_bytes; -} - -enum -{ - MAX_EACK = 128 -}; - -void -UTPSocket::selective_ack(uint base, const byte *mask, byte len) -{ - if(cur_window_packets == 0) - return; - - // the range is inclusive [0, 31] bits - int bits = len * 8 - 1; - - int count = 0; - - // resends is a stack of sequence numbers we need to resend. Since we - // iterate in reverse over the acked packets, at the end, the top packets - // are the ones we want to resend - int resends[MAX_EACK]; - int nr = 0; - -#if UTP_DEBUG_LOGGING - char bitmask[1024] = {0}; - int counter = bits; - for(int i = 0; i <= bits; ++i) - { - bool bit_set = counter >= 0 && mask[counter >> 3] & (1 << (counter & 7)); - bitmask[i] = bit_set ? '1' : '0'; - --counter; - } - - log(UTP_LOG_DEBUG, "Got EACK [%s] base:%u", bitmask, base); -#endif - - do - { - // we're iterating over the bits from higher sequence numbers - // to lower (kind of in reverse order, wich might not be very - // intuitive) - uint v = base + bits; - - // ignore bits that haven't been sent yet - // and bits that fall below the ACKed sequence number - // this can happen if an EACK message gets - // reordered and arrives after a packet that ACKs up past - // the base for thie EACK message - - // this is essentially the same as: - // if v >= seq_nr || v <= seq_nr - cur_window_packets - // but it takes wrapping into account - - // if v == seq_nr the -1 will make it wrap. if v > seq_nr - // it will also wrap (since it will fall further below 0) - // and be > cur_window_packets. - // if v == seq_nr - cur_window_packets, the result will be - // seq_nr - (seq_nr - cur_window_packets) - 1 - // == seq_nr - seq_nr + cur_window_packets - 1 - // == cur_window_packets - 1 which will be caught by the - // test. If v < seq_nr - cur_window_packets the result will grow - // fall furhter outside of the cur_window_packets range. - - // sequence number space: - // - // rejected < accepted > rejected - // <============+--------------+============> - // ^ ^ - // | | - // (seq_nr-wnd) seq_nr - - if(((seq_nr - v - 1) & ACK_NR_MASK) >= (uint16)(cur_window_packets - 1)) - continue; - - // this counts as a duplicate ack, even though we might have - // received an ack for this packet previously (in another EACK - // message for instance) - bool bit_set = bits >= 0 && mask[bits >> 3] & (1 << (bits & 7)); - - // if this packet is acked, it counts towards the duplicate ack counter - if(bit_set) - count++; - - // ignore bits that represents packets we haven't sent yet - // or packets that have already been acked - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(v); - if(!pkt || pkt->transmissions == 0) - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "skipping %u. pkt:%08x transmissions:%u %s", v, pkt, - pkt ? pkt->transmissions : 0, - pkt ? "(not sent yet?)" : "(already acked?)"); -#endif - continue; - } - - // Count the number of segments that were successfully received past it. - if(bit_set) - { - // the selective ack should never ACK the packet we're waiting for to - // decrement cur_window_packets - assert((v & outbuf.mask) - != ((seq_nr - cur_window_packets) & outbuf.mask)); - ack_packet(v); - continue; - } - - // Resend segments - // if count is less than our re-send limit, we haven't seen enough - // acked packets in front of this one to warrant a re-send. - // if count == 0, we're still going through the tail of zeroes - if(((v - fast_resend_seq_nr) & ACK_NR_MASK) <= OUTGOING_BUFFER_MAX_SIZE - && count >= DUPLICATE_ACKS_BEFORE_RESEND) - { - // resends is a stack, and we're mostly interested in the top of it - // if we're full, just throw away the lower half - if(nr >= MAX_EACK - 2) - { - memmove(resends, &resends[MAX_EACK / 2], - MAX_EACK / 2 * sizeof(resends[0])); - nr -= MAX_EACK / 2; - } - resends[nr++] = v; - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "no ack for %u", v); -#endif - } - else - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, - "not resending %u count:%d dup_ack:%u fast_resend_seq_nr:%u", v, - count, duplicate_ack, fast_resend_seq_nr); -#endif - } - } while(--bits >= -1); - - if(((base - 1 - fast_resend_seq_nr) & ACK_NR_MASK) <= OUTGOING_BUFFER_MAX_SIZE - && count >= DUPLICATE_ACKS_BEFORE_RESEND) - { - // if we get enough duplicate acks to start - // resending, the first packet we should resend - // is base-1 - resends[nr++] = (base - 1) & ACK_NR_MASK; - -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "no ack for %u", (base - 1) & ACK_NR_MASK); -#endif - } - else - { -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, - "not resending %u count:%d dup_ack:%u fast_resend_seq_nr:%u", base - 1, - count, duplicate_ack, fast_resend_seq_nr); -#endif - } - - bool back_off = false; - int i = 0; - while(nr > 0) - { - uint v = resends[--nr]; - // don't consider the tail of 0:es to be lost packets - // only unacked packets with acked packets after should - // be considered lost - OutgoingPacket *pkt = (OutgoingPacket *)outbuf.get(v); - - // this may be an old (re-ordered) packet, and some of the - // packets in here may have been acked already. In which - // case they will not be in the send queue anymore - if(!pkt) - continue; - - // used in parse_log.py - log(UTP_LOG_NORMAL, "Packet %u lost. Resending", v); - - // On Loss - back_off = true; - -#ifdef _DEBUG - ++_stats.rexmit; -#endif - - send_packet(pkt); - fast_resend_seq_nr = (v + 1) & ACK_NR_MASK; - - // Re-send max 4 packets. - if(++i >= 4) - break; - } - - if(back_off) - maybe_decay_win(ctx->current_ms); - - duplicate_ack = count; -} - -void -UTPSocket::apply_ccontrol(size_t bytes_acked, uint32 actual_delay, - int64 min_rtt) -{ - // the delay can never be greater than the rtt. The min_rtt - // variable is the RTT in microseconds - - assert(min_rtt >= 0); - int32 our_delay = min< uint32 >(our_hist.get_value(), uint32(min_rtt)); - assert(our_delay != INT_MAX); - assert(our_delay >= 0); - - utp_call_on_delay_sample(this->ctx, this, our_delay / 1000); - - // This test the connection under heavy load from foreground - // traffic. Pretend that our delays are very high to force the - // connection to use sub-packet size window sizes - // our_delay *= 4; - - // target is microseconds - int target = target_delay; - if(target <= 0) - target = 100000; - - // this is here to compensate for very large clock drift that affects - // the congestion controller into giving certain endpoints an unfair - // share of the bandwidth. We have an estimate of the clock drift - // (clock_drift). The unit of this is microseconds per 5 seconds. - // empirically, a reasonable cut-off appears to be about 200000 - // (which is pretty high). The main purpose is to compensate for - // people trying to "cheat" uTP by making their clock run slower, - // and this definitely catches that without any risk of false positives - // if clock_drift < -200000 start applying a penalty delay proportional - // to how far beoynd -200000 the clock drift is - int32 penalty = 0; - if(clock_drift < -200000) - { - penalty = (-clock_drift - 200000) / 7; - our_delay += penalty; - } - - double off_target = target - our_delay; - - // this is the same as: - // - // (min(off_target, target) / target) * (bytes_acked / max_window) * - // MAX_CWND_INCREASE_BYTES_PER_RTT - // - // so, it's scaling the max increase by the fraction of the window this ack - // represents, and the fraction of the target delay the current delay - // represents. The min() around off_target protects against crazy values of - // our_delay, which may happen when th timestamps wraps, or by just having a - // malicious peer sending garbage. This caps the increase of the window size - // to MAX_CWND_INCREASE_BYTES_PER_RTT per rtt. as for large negative numbers, - // this direction is already capped at the min packet size further down the - // min around the bytes_acked protects against the case where the window size - // was recently shrunk and the number of acked bytes exceeds that. This is - // considered no more than one full window, in order to keep the gain within - // sane boundries. - - assert(bytes_acked > 0); - double window_factor = (double)min(bytes_acked, max_window) - / (double)max(max_window, bytes_acked); - - double delay_factor = off_target / target; - double scaled_gain = - MAX_CWND_INCREASE_BYTES_PER_RTT * window_factor * delay_factor; - - // since MAX_CWND_INCREASE_BYTES_PER_RTT is a cap on how much the window size - // (max_window) may increase per RTT, we may not increase the window size more - // than that proportional to the number of bytes that were acked, so that once - // one window has been acked (one rtt) the increase limit is not exceeded the - // +1. is to allow for floating point imprecision - assert(scaled_gain <= 1. - + MAX_CWND_INCREASE_BYTES_PER_RTT - * (double)min(bytes_acked, max_window) - / (double)max(max_window, bytes_acked)); - - if(scaled_gain > 0 && ctx->current_ms - last_maxed_out_window > 1000) - { - // if it was more than 1 second since we tried to send a packet - // and stopped because we hit the max window, we're most likely rate - // limited (which prevents us from ever hitting the window size) - // if this is the case, we cannot let the max_window grow indefinitely - scaled_gain = 0; - } - - size_t ledbat_cwnd = (max_window + scaled_gain < MIN_WINDOW_SIZE) - ? MIN_WINDOW_SIZE - : (size_t)(max_window + scaled_gain); - - if(slow_start) - { - size_t ss_cwnd = (size_t)(max_window + window_factor * get_packet_size()); - if(ss_cwnd > ssthresh) - { - slow_start = false; - } - else if(our_delay > target * 0.9) - { - // even if we're a little under the target delay, we conservatively - // discontinue the slow start phase - slow_start = false; - ssthresh = max_window; - } - else - { - max_window = max(ss_cwnd, ledbat_cwnd); - } - } - else - { - max_window = ledbat_cwnd; - } - - // make sure that the congestion window is below max - // make sure that we don't shrink our window too small - max_window = clamp< size_t >(max_window, MIN_WINDOW_SIZE, opt_sndbuf); - - // used in parse_log.py - log(UTP_LOG_NORMAL, - "actual_delay:%u our_delay:%d their_delay:%u off_target:%d max_window:%u " - "delay_base:%u delay_sum:%d target_delay:%d acked_bytes:%u cur_window:%u " - "scaled_gain:%f rtt:%u rate:%u wnduser:%u rto:%u timeout:%d " - "get_microseconds:" I64u - " " - "cur_window_packets:%u packet_size:%u their_delay_base:%u " - "their_actual_delay:%u " - "average_delay:%d clock_drift:%d clock_drift_raw:%d delay_penalty:%d " - "current_delay_sum:" I64u - "current_delay_samples:%d average_delay_base:%d " - "last_maxed_out_window:" I64u - " opt_sndbuf:%d " - "current_ms:" I64u "", - actual_delay, our_delay / 1000, their_hist.get_value() / 1000, - int(off_target / 1000), uint(max_window), uint32(our_hist.delay_base), - int((our_delay + their_hist.get_value()) / 1000), int(target / 1000), - uint(bytes_acked), (uint)(cur_window - bytes_acked), (float)(scaled_gain), - rtt, - (uint)(max_window * 1000 - / (rtt_hist.delay_base ? rtt_hist.delay_base : 50)), - (uint)max_window_user, rto, (int)(rto_timeout - ctx->current_ms), - utp_call_get_microseconds(this->ctx, this), cur_window_packets, - (uint)get_packet_size(), their_hist.delay_base, - their_hist.delay_base + their_hist.get_value(), average_delay, - clock_drift, clock_drift_raw, penalty / 1000, current_delay_sum, - current_delay_samples, average_delay_base, uint64(last_maxed_out_window), - int(opt_sndbuf), uint64(ctx->current_ms)); -} - -static void -utp_register_recv_packet(UTPSocket *conn, size_t len) -{ -#ifdef _DEBUG - ++conn->_stats.nrecv; - conn->_stats.nbytes_recv += len; -#endif - - if(len <= PACKET_SIZE_MID) - { - if(len <= PACKET_SIZE_EMPTY) - { - conn->ctx->context_stats._nraw_recv[PACKET_SIZE_EMPTY_BUCKET]++; - } - else if(len <= PACKET_SIZE_SMALL) - { - conn->ctx->context_stats._nraw_recv[PACKET_SIZE_SMALL_BUCKET]++; - } - else - conn->ctx->context_stats._nraw_recv[PACKET_SIZE_MID_BUCKET]++; - } - else - { - if(len <= PACKET_SIZE_BIG) - { - conn->ctx->context_stats._nraw_recv[PACKET_SIZE_BIG_BUCKET]++; - } - else - conn->ctx->context_stats._nraw_recv[PACKET_SIZE_HUGE_BUCKET]++; - } -} - -// returns the max number of bytes of payload the uTP -// connection is allowed to send -size_t -UTPSocket::get_packet_size() const -{ - int header_size = sizeof(PacketFormatV1); - size_t mtu = mtu_last ? mtu_last : mtu_ceiling; - return mtu - header_size; -} - -// Process an incoming packet -// syn is true if this is the first packet received. It will cut off parsing -// as soon as the header is done -size_t -utp_process_incoming(UTPSocket *conn, const byte *packet, size_t len, - bool syn = false) -{ - utp_register_recv_packet(conn, len); - - conn->ctx->current_ms = utp_call_get_milliseconds(conn->ctx, conn); - - const PacketFormatV1 *pf1 = (PacketFormatV1 *)packet; - const byte *packet_end = packet + len; - - uint16 pk_seq_nr = pf1->seq_nr; - uint16 pk_ack_nr = pf1->ack_nr; - uint8 pk_flags = pf1->type(); - - if(pk_flags >= ST_NUM_STATES) - return 0; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "Got %s. seq_nr:%u ack_nr:%u state:%s timestamp:" I64u - " reply_micro:%u", - flagnames[pk_flags], pk_seq_nr, pk_ack_nr, statenames[conn->state], - uint64(pf1->tv_usec), (uint32)(pf1->reply_micro)); -#endif - - // mark receipt time - uint64 time = utp_call_get_microseconds(conn->ctx, conn); - - // window packets size is used to calculate a minimum - // permissible range for received acks. connections with acks falling - // out of this range are dropped - const uint16 curr_window = max< uint16 >( - conn->cur_window_packets + ACK_NR_ALLOWED_WINDOW, ACK_NR_ALLOWED_WINDOW); - - // ignore packets whose ack_nr is invalid. This would imply a spoofed address - // or a malicious attempt to attach the uTP implementation. - // acking a packet that hasn't been sent yet! - // SYN packets have an exception, since there are no previous packets - if((pk_flags != ST_SYN || conn->state != CS_SYN_RECV) - && (wrapping_compare_less(conn->seq_nr - 1, pk_ack_nr, ACK_NR_MASK) - || wrapping_compare_less(pk_ack_nr, conn->seq_nr - 1 - curr_window, - ACK_NR_MASK))) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "Invalid ack_nr: %u. our seq_nr: %u last unacked: %u", pk_ack_nr, - conn->seq_nr, - (conn->seq_nr - conn->cur_window_packets) & ACK_NR_MASK); -#endif - return 0; - } - - // RSTs are handled earlier, since the connid matches the send id not the recv - // id - assert(pk_flags != ST_RESET); - - // TODO: maybe send a ST_RESET if we're in CS_RESET? - - const byte *selack_ptr = NULL; - - // Unpack UTP packet options - // Data pointer - const byte *data = (const byte *)pf1 + conn->get_header_size(); - if(conn->get_header_size() > len) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Invalid packet size (less than header size)"); -#endif - - return 0; - } - // Skip the extension headers - uint extension = pf1->ext; - if(extension != 0) - { - do - { - // Verify that the packet is valid. - data += 2; - - if((int)(packet_end - data) < 0 || (int)(packet_end - data) < data[-1]) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Invalid len of extensions"); -#endif - - return 0; - } - - switch(extension) - { - case 1: // Selective Acknowledgment - selack_ptr = data; - break; - case 2: // extension bits - if(data[-1] != 8) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Invalid len of extension bits header"); -#endif - - return 0; - } - memcpy(conn->extensions, data, 8); - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "got extension bits:%02x%02x%02x%02x%02x%02x%02x%02x", - conn->extensions[0], conn->extensions[1], - conn->extensions[2], conn->extensions[3], - conn->extensions[4], conn->extensions[5], - conn->extensions[6], conn->extensions[7]); -#endif - } - extension = data[-2]; - data += data[-1]; - } while(extension); - } - - if(conn->state == CS_SYN_SENT) - { - // if this is a syn-ack, initialize our ack_nr - // to match the sequence number we got from - // the other end - conn->ack_nr = (pk_seq_nr - 1) & SEQ_NR_MASK; - } - - conn->last_got_packet = conn->ctx->current_ms; - - if(syn) - { - return 0; - } - - // seqnr is the number of packets past the expected - // packet this is. ack_nr is the last acked, seq_nr is the - // current. Subtracring 1 makes 0 mean "this is the next - // expected packet". - const uint seqnr = (pk_seq_nr - conn->ack_nr - 1) & SEQ_NR_MASK; - - // Getting an invalid sequence number? - if(seqnr >= REORDER_BUFFER_MAX_SIZE) - { - if(seqnr >= (SEQ_NR_MASK + 1) - REORDER_BUFFER_MAX_SIZE - && pk_flags != ST_STATE) - { - conn->schedule_ack(); - } - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, " Got old Packet/Ack (%u/%u)=%u", pk_seq_nr, - conn->ack_nr, seqnr); -#endif - return 0; - } - - // Process acknowledgment - // acks is the number of packets that was acked - int acks = - (pk_ack_nr - (conn->seq_nr - 1 - conn->cur_window_packets)) & ACK_NR_MASK; - - // this happens when we receive an old ack nr - if(acks > conn->cur_window_packets) - acks = 0; - - // if we get the same ack_nr as in the last packet - // increase the duplicate_ack counter, otherwise reset - // it to 0. - // It's important to only count ACKs in ST_STATE packets. Any other - // packet (primarily ST_DATA) is likely to have been sent because of the - // other end having new outgoing data, not in response to incoming data. - // For instance, if we're receiving a steady stream of payload with no - // outgoing data, and we suddently have a few bytes of payload to send (say, - // a bittorrent HAVE message), we're very likely to see 3 duplicate ACKs - // immediately after sending our payload packet. This effectively disables - // the fast-resend on duplicate-ack logic for bi-directional connections - // (except in the case of a selective ACK). This is in line with BSD4.4 TCP - // implementation. - if(conn->cur_window_packets > 0) - { - if(pk_ack_nr - == ((conn->seq_nr - conn->cur_window_packets - 1) & ACK_NR_MASK) - && conn->cur_window_packets > 0 && pk_flags == ST_STATE) - { - ++conn->duplicate_ack; - if(conn->duplicate_ack == DUPLICATE_ACKS_BEFORE_RESEND - && conn->mtu_probe_seq) - { - // It's likely that the probe was rejected due to its size, but we - // haven't got an ICMP report back yet - if(pk_ack_nr == ((conn->mtu_probe_seq - 1) & ACK_NR_MASK)) - { - conn->mtu_ceiling = conn->mtu_probe_size - 1; - conn->mtu_search_update(); - conn->log(UTP_LOG_MTU, "MTU [DUPACK] floor:%d ceiling:%d current:%d", - conn->mtu_floor, conn->mtu_ceiling, conn->mtu_last); - } - else - { - // A non-probe was blocked before our probe. - // Can't conclude much, send a new probe - conn->mtu_probe_seq = conn->mtu_probe_size = 0; - } - } - } - else - { - conn->duplicate_ack = 0; - } - - // TODO: if duplicate_ack == DUPLICATE_ACK_BEFORE_RESEND - // and fast_resend_seq_nr <= ack_nr + 1 - // resend ack_nr + 1 - // also call maybe_decay_win() - } - - // figure out how many bytes were acked - size_t acked_bytes = 0; - - // the minimum rtt of all acks - // this is the upper limit on the delay we get back - // from the other peer. Our delay cannot exceed - // the rtt of the packet. If it does, clamp it. - // this is done in apply_ledbat_ccontrol() - int64 min_rtt = INT64_MAX; - - uint64 now = utp_call_get_microseconds(conn->ctx, conn); - - for(int i = 0; i < acks; ++i) - { - int seq = (conn->seq_nr - conn->cur_window_packets + i) & ACK_NR_MASK; - OutgoingPacket *pkt = (OutgoingPacket *)conn->outbuf.get(seq); - if(pkt == 0 || pkt->transmissions == 0) - continue; - assert((int)(pkt->payload) >= 0); - acked_bytes += pkt->payload; - if(conn->mtu_probe_seq && seq == static_cast< int >(conn->mtu_probe_seq)) - { - conn->mtu_floor = conn->mtu_probe_size; - conn->mtu_search_update(); - conn->log(UTP_LOG_MTU, "MTU [ACK] floor:%d ceiling:%d current:%d", - conn->mtu_floor, conn->mtu_ceiling, conn->mtu_last); - } - - // in case our clock is not monotonic - if(pkt->time_sent < now) - min_rtt = min< int64 >(min_rtt, now - pkt->time_sent); - else - min_rtt = min< int64 >(min_rtt, 50000); - } - - // count bytes acked by EACK - if(selack_ptr != NULL) - { - acked_bytes += conn->selective_ack_bytes( - (pk_ack_nr + 2) & ACK_NR_MASK, selack_ptr, selack_ptr[-1], min_rtt); - } - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "acks:%d acked_bytes:%u seq_nr:%d cur_window:%u " - "cur_window_packets:%u relative_seqnr:%u max_window:%u min_rtt:%u " - "rtt:%u", - acks, (uint)acked_bytes, conn->seq_nr, (uint)conn->cur_window, - conn->cur_window_packets, seqnr, (uint)conn->max_window, - (uint)(min_rtt / 1000), conn->rtt); -#endif - - uint64 p = pf1->tv_usec; - - conn->last_measured_delay = conn->ctx->current_ms; - - // get delay in both directions - // record the delay to report back - const uint32 their_delay = (uint32)(p == 0 ? 0 : time - p); - conn->reply_micro = their_delay; - uint32 prev_delay_base = conn->their_hist.delay_base; - if(their_delay != 0) - conn->their_hist.add_sample(their_delay, conn->ctx->current_ms); - - // if their new delay base is less than their previous one - // we should shift our delay base in the other direction in order - // to take the clock skew into account - if(prev_delay_base != 0 - && wrapping_compare_less(conn->their_hist.delay_base, prev_delay_base, - TIMESTAMP_MASK)) - { - // never adjust more than 10 milliseconds - if(prev_delay_base - conn->their_hist.delay_base <= 10000) - { - conn->our_hist.shift(prev_delay_base - conn->their_hist.delay_base); - } - } - - const uint32 actual_delay = - (uint32(pf1->reply_micro) == INT_MAX ? 0 : uint32(pf1->reply_micro)); - - // if the actual delay is 0, it means the other end - // hasn't received a sample from us yet, and doesn't - // know what it is. We can't update out history unless - // we have a true measured sample - if(actual_delay != 0) - { - conn->our_hist.add_sample(actual_delay, conn->ctx->current_ms); - - // this is keeping an average of the delay samples - // we've recevied within the last 5 seconds. We sum - // all the samples and increase the count in order to - // calculate the average every 5 seconds. The samples - // are based off of the average_delay_base to deal with - // wrapping counters. - if(conn->average_delay_base == 0) - conn->average_delay_base = actual_delay; - int64 average_delay_sample = 0; - // distance walking from lhs to rhs, downwards - const uint32 dist_down = conn->average_delay_base - actual_delay; - // distance walking from lhs to rhs, upwards - const uint32 dist_up = actual_delay - conn->average_delay_base; - - if(dist_down > dist_up) - { - // assert(dist_up < INT_MAX / 4); - // average_delay_base < actual_delay, we should end up - // with a positive sample - average_delay_sample = dist_up; - } - else - { - // assert(-int64(dist_down) < INT_MAX / 4); - // average_delay_base >= actual_delay, we should end up - // with a negative sample - average_delay_sample = -int64(dist_down); - } - conn->current_delay_sum += average_delay_sample; - ++conn->current_delay_samples; - - if(conn->ctx->current_ms > conn->average_sample_time) - { - int32 prev_average_delay = conn->average_delay; - - assert(conn->current_delay_sum / conn->current_delay_samples < INT_MAX); - assert(conn->current_delay_sum / conn->current_delay_samples > -INT_MAX); - // write the new average - conn->average_delay = - (int32)(conn->current_delay_sum / conn->current_delay_samples); - // each slot represents 5 seconds - conn->average_sample_time += 5000; - - conn->current_delay_sum = 0; - conn->current_delay_samples = 0; - - // this makes things very confusing when logging the average delay - //#if !g_log_utp - // normalize the average samples - // since we're only interested in the slope - // of the curve formed by the average delay samples, - // we can cancel out the actual offset to make sure - // we won't have problems with wrapping. - int min_sample = min(prev_average_delay, conn->average_delay); - int max_sample = max(prev_average_delay, conn->average_delay); - - // normalize around zero. Try to keep the min <= 0 and max >= 0 - int adjust = 0; - if(min_sample > 0) - { - // adjust all samples (and the baseline) down by min_sample - adjust = -min_sample; - } - else if(max_sample < 0) - { - // adjust all samples (and the baseline) up by -max_sample - adjust = -max_sample; - } - if(adjust) - { - conn->average_delay_base -= adjust; - conn->average_delay += adjust; - prev_average_delay += adjust; - } - //#endif - - // update the clock drift estimate - // the unit is microseconds per 5 seconds - // what we're doing is just calculating the average of the - // difference between each slot. Since each slot is 5 seconds - // and the timestamps unit are microseconds, we'll end up with - // the average slope across our history. If there is a consistent - // trend, it will show up in this value - - // int64 slope = 0; - int32 drift = conn->average_delay - prev_average_delay; - - // clock_drift is a rolling average - conn->clock_drift = (int64(conn->clock_drift) * 7 + drift) / 8; - conn->clock_drift_raw = drift; - } - } - - // if our new delay base is less than our previous one - // we should shift the other end's delay base in the other - // direction in order to take the clock skew into account - // This is commented out because it creates bad interactions - // with our adjustment in the other direction. We don't really - // need our estimates of the other peer to be very accurate - // anyway. The problem with shifting here is that we're more - // likely shift it back later because of a low latency. This - // second shift back would cause us to shift our delay base - // which then get's into a death spiral of shifting delay bases - /* if (prev_delay_base != 0 && - wrapping_compare_less(conn->our_hist.delay_base, - prev_delay_base)) { - // never adjust more than 10 milliseconds - if (prev_delay_base - conn->our_hist.delay_base <= 10000) { - conn->their_hist.Shift(prev_delay_base - - conn->our_hist.delay_base); - } - } - */ - - // if the delay estimate exceeds the RTT, adjust the base_delay to - // compensate - assert(min_rtt >= 0); - if(int64(conn->our_hist.get_value()) > min_rtt) - { - conn->our_hist.shift((uint32)(conn->our_hist.get_value() - min_rtt)); - } - - // only apply the congestion controller on acks - // if we don't have a delay measurement, there's - // no point in invoking the congestion control - if(actual_delay != 0 && acked_bytes >= 1) - conn->apply_ccontrol(acked_bytes, actual_delay, min_rtt); - - // sanity check, the other end should never ack packets - // past the point we've sent - if(acks <= conn->cur_window_packets) - { - conn->max_window_user = pf1->windowsize; - - // If max user window is set to 0, then we startup a timer - // That will reset it to 1 after 15 seconds. - if(conn->max_window_user == 0) - // Reset max_window_user to 1 every 15 seconds. - conn->zerowindow_time = conn->ctx->current_ms + 15000; - - // Respond to connect message - // Switch to CONNECTED state. - // If this is an ack and we're in still handshaking - // transition over to the connected state. - - // Incoming connection completion - if(pk_flags == ST_DATA && conn->state == CS_SYN_RECV) - { - conn->state = CS_CONNECTED; - } - - // Outgoing connection completion - if(pk_flags == ST_STATE && conn->state == CS_SYN_SENT) - { - conn->state = CS_CONNECTED; - - // If the user has defined the ON_CONNECT callback, use that to - // notify the user that the socket is now connected. If ON_CONNECT - // has not been defined, notify the user via ON_STATE_CHANGE. - if(conn->ctx->callbacks[UTP_ON_CONNECT]) - utp_call_on_connect(conn->ctx, conn); - else - utp_call_on_state_change(conn->ctx, conn, UTP_STATE_CONNECT); - - // We've sent a fin, and everything was ACKed (including the FIN). - // cur_window_packets == acks means that this packet acked all - // the remaining packets that were in-flight. - } - else if(conn->fin_sent && conn->cur_window_packets == acks) - { - conn->fin_sent_acked = true; - if(conn->close_requested) - { - conn->state = CS_DESTROY; - } - } - - // Update fast resend counter - if(wrapping_compare_less(conn->fast_resend_seq_nr, - (pk_ack_nr + 1) & ACK_NR_MASK, ACK_NR_MASK)) - conn->fast_resend_seq_nr = (pk_ack_nr + 1) & ACK_NR_MASK; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "fast_resend_seq_nr:%u", conn->fast_resend_seq_nr); -#endif - - for(int i = 0; i < acks; ++i) - { - int ack_status = - conn->ack_packet(conn->seq_nr - conn->cur_window_packets); - // if ack_status is 0, the packet was acked. - // if acl_stauts is 1, it means that the packet had already been acked - // if it's 2, the packet has not been sent yet - // We need to break this loop in the latter case. This could potentially - // happen if we get an ack_nr that does not exceed what we have stuffed - // into the outgoing buffer, but does exceed what we have sent - if(ack_status == 2) - { -#ifdef _DEBUG - OutgoingPacket *pkt = (OutgoingPacket *)conn->outbuf.get( - conn->seq_nr - conn->cur_window_packets); - assert(pkt->transmissions == 0); -#endif - - break; - } - conn->cur_window_packets--; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "decementing cur_window_packets:%u", - conn->cur_window_packets); -#endif - } - -#ifdef _DEBUG - if(conn->cur_window_packets == 0) - assert(conn->cur_window == 0); -#endif - - // packets in front of this may have been acked by a - // selective ack (EACK). Keep decreasing the window packet size - // until we hit a packet that is still waiting to be acked - // in the send queue - // this is especially likely to happen when the other end - // has the EACK send bug older versions of uTP had - while(conn->cur_window_packets > 0 - && !conn->outbuf.get(conn->seq_nr - conn->cur_window_packets)) - { - conn->cur_window_packets--; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "decementing cur_window_packets:%u", - conn->cur_window_packets); -#endif - } - -#ifdef _DEBUG - if(conn->cur_window_packets == 0) - assert(conn->cur_window == 0); -#endif - - // this invariant should always be true - assert(conn->cur_window_packets == 0 - || conn->outbuf.get(conn->seq_nr - conn->cur_window_packets)); - - // flush Nagle - if(conn->cur_window_packets == 1) - { - OutgoingPacket *pkt = - (OutgoingPacket *)conn->outbuf.get(conn->seq_nr - 1); - // do we still have quota? - if(pkt->transmissions == 0) - { - conn->send_packet(pkt); - } - } - - // Fast timeout-retry - if(conn->fast_timeout) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Fast timeout %u,%u,%u?", (uint)conn->cur_window, - conn->seq_nr - conn->timeout_seq_nr, conn->timeout_seq_nr); -#endif - - // if the fast_resend_seq_nr is not pointing to the oldest outstanding - // packet, it suggests that we've already resent the packet that timed - // out, and we should leave the fast-timeout mode. - if(((conn->seq_nr - conn->cur_window_packets) & ACK_NR_MASK) - != conn->fast_resend_seq_nr) - { - conn->fast_timeout = false; - } - else - { - // resend the oldest packet and increment fast_resend_seq_nr - // to not allow another fast resend on it again - OutgoingPacket *pkt = (OutgoingPacket *)conn->outbuf.get( - conn->seq_nr - conn->cur_window_packets); - if(pkt && pkt->transmissions > 0) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Packet %u fast timeout-retry.", - conn->seq_nr - conn->cur_window_packets); -#endif - -#ifdef _DEBUG - ++conn->_stats.fastrexmit; -#endif - - conn->fast_resend_seq_nr++; - conn->send_packet(pkt); - } - } - } - } - - // Process selective acknowledgent - if(selack_ptr != NULL) - { - conn->selective_ack(pk_ack_nr + 2, selack_ptr, selack_ptr[-1]); - } - - // this invariant should always be true - assert(conn->cur_window_packets == 0 - || conn->outbuf.get(conn->seq_nr - conn->cur_window_packets)); - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "acks:%d acked_bytes:%u seq_nr:%u cur_window:%u " - "cur_window_packets:%u ", - acks, (uint)acked_bytes, conn->seq_nr, (uint)conn->cur_window, - conn->cur_window_packets); -#endif - - // In case the ack dropped the current window below - // the max_window size, Mark the socket as writable - if(conn->state == CS_CONNECTED_FULL && !conn->is_full()) - { - conn->state = CS_CONNECTED; -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "Socket writable. max_window:%u cur_window:%u packet_size:%u", - (uint)conn->max_window, (uint)conn->cur_window, - (uint)conn->get_packet_size()); -#endif - utp_call_on_state_change(conn->ctx, conn, UTP_STATE_WRITABLE); - } - - if(pk_flags == ST_STATE) - { - // This is a state packet only. - return 0; - } - - // The connection is not in a state that can accept data? - if(conn->state != CS_CONNECTED && conn->state != CS_CONNECTED_FULL) - { - return 0; - } - - // Is this a finalize packet? - if(pk_flags == ST_FIN && !conn->got_fin) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Got FIN eof_pkt:%u", pk_seq_nr); -#endif - - conn->got_fin = true; - conn->eof_pkt = pk_seq_nr; - // at this point, it is possible for the - // other end to have sent packets with - // sequence numbers higher than seq_nr. - // if this is the case, our reorder_count - // is out of sync. This case is dealt with - // when we re-order and hit the eof_pkt. - // we'll just ignore any packets with - // sequence numbers past this - } - - // Getting an in-order packet? - if(seqnr == 0) - { - size_t count = packet_end - data; - if(count > 0 && !conn->read_shutdown) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Got Data len:%u (rb:%u)", (uint)count, - (uint)utp_call_get_read_buffer_size(conn->ctx, conn)); -#endif - - // Post bytes to the upper layer - utp_call_on_read(conn->ctx, conn, data, count); - } - conn->ack_nr++; - - // Check if the next packet has been received too, but waiting - // in the reorder buffer. - for(;;) - { - if(!conn->got_fin_reached && conn->got_fin - && conn->eof_pkt == conn->ack_nr) - { - conn->got_fin_reached = true; - conn->rto_timeout = - conn->ctx->current_ms + min< uint >(conn->rto * 3, 60); - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Posting EOF"); -#endif - - utp_call_on_state_change(conn->ctx, conn, UTP_STATE_EOF); - - // if the other end wants to close, ack - conn->send_ack(); - - // reorder_count is not necessarily 0 at this point. - // even though it is most of the time, the other end - // may have sent packets with higher sequence numbers - // than what later end up being eof_pkt - // since we have received all packets up to eof_pkt - // just ignore the ones after it. - conn->reorder_count = 0; - } - - // Quick get-out in case there is nothing to reorder - if(conn->reorder_count == 0) - break; - - // Check if there are additional buffers in the reorder buffers - // that need delivery. - byte *p = (byte *)conn->inbuf.get(conn->ack_nr + 1); - if(p == NULL) - break; - conn->inbuf.put(conn->ack_nr + 1, NULL); - count = *(uint *)p; - if(count > 0 && !conn->read_shutdown) - { - // Pass the bytes to the upper layer - utp_call_on_read(conn->ctx, conn, p + sizeof(uint), count); - } - conn->ack_nr++; - - // Free the element from the reorder buffer - free(p); - assert(conn->reorder_count > 0); - conn->reorder_count--; - } - - conn->schedule_ack(); - } - else - { - // Getting an out of order packet. - // The packet needs to be remembered and rearranged later. - - // if we have received a FIN packet, and the EOF-sequence number - // is lower than the sequence number of the packet we just received - // something is wrong. - if(conn->got_fin && pk_seq_nr > conn->eof_pkt) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "Got an invalid packet sequence number, past EOF " - "reorder_count:%u len:%u (rb:%u)", - conn->reorder_count, (uint)(packet_end - data), - (uint)utp_call_get_read_buffer_size(conn->ctx, conn)); -#endif - return 0; - } - - // if the sequence number is entirely off the expected - // one, just drop it. We can't allocate buffer space in - // the inbuf entirely based on untrusted input - if(seqnr > 0x3ff) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "0x%08x: Got an invalid packet sequence number, too far off " - "reorder_count:%u len:%u (rb:%u)", - conn->reorder_count, (uint)(packet_end - data), - (uint)utp_call_get_read_buffer_size(conn->ctx, conn)); -#endif - return 0; - } - - // we need to grow the circle buffer before we - // check if the packet is already in here, so that - // we don't end up looking at an older packet (since - // the indices wraps around). - conn->inbuf.ensure_size(pk_seq_nr + 1, seqnr + 1); - - // Has this packet already been received? (i.e. a duplicate) - // If that is the case, just discard it. - if(conn->inbuf.get(pk_seq_nr) != NULL) - { -#ifdef _DEBUG - ++conn->_stats.nduprecv; -#endif - - return 0; - } - - // Allocate memory to fit the packet that needs to re-ordered - byte *mem = (byte *)malloc((packet_end - data) + sizeof(uint)); - *(uint *)mem = (uint)(packet_end - data); - memcpy(mem + sizeof(uint), data, packet_end - data); - - // Insert into reorder buffer and increment the count - // of # of packets to be reordered. - // we add one to seqnr in order to leave the last - // entry empty, that way the assert in send_ack - // is valid. we have to add one to seqnr too, in order - // to make the circular buffer grow around the correct - // point (which is conn->ack_nr + 1). - assert(conn->inbuf.get(pk_seq_nr) == NULL); - assert((pk_seq_nr & conn->inbuf.mask) - != ((conn->ack_nr + 1) & conn->inbuf.mask)); - conn->inbuf.put(pk_seq_nr, mem); - conn->reorder_count++; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "0x%08x: Got out of order data reorder_count:%u len:%u (rb:%u)", - conn->reorder_count, (uint)(packet_end - data), - (uint)utp_call_get_read_buffer_size(conn->ctx, conn)); -#endif - - conn->schedule_ack(); - } - - return (size_t)(packet_end - data); -} - -inline byte -UTP_Version(PacketFormatV1 const *pf) -{ - return (pf->type() < ST_NUM_STATES && pf->ext < 3 ? pf->version() : 0); -} - -UTPSocket::~UTPSocket() -{ -#if UTP_DEBUG_LOGGING - log(UTP_LOG_DEBUG, "Killing socket"); -#endif - - utp_call_on_state_change(ctx, this, UTP_STATE_DESTROYING); - - if(ctx->last_utp_socket == this) - { - ctx->last_utp_socket = NULL; - } - - // Remove object from the global hash table - UTPSocketKeyData *kd = - ctx->utp_sockets->Delete(UTPSocketKey(addr, conn_id_recv)); - assert(kd); - (void)kd; - // remove the socket from ack_sockets if it was there also - removeSocketFromAckList(this); - - // Free all memory occupied by the socket object. - for(size_t i = 0; i <= inbuf.mask; i++) - { - free(inbuf.elements[i]); - } - for(size_t i = 0; i <= outbuf.mask; i++) - { - free(outbuf.elements[i]); - } - // TODO: The circular buffer should have a destructor - free(inbuf.elements); - free(outbuf.elements); -} - -void -UTP_FreeAll(struct UTPSocketHT *utp_sockets) -{ - utp_hash_iterator_t it; - UTPSocketKeyData *keyData; - while((keyData = utp_sockets->Iterate(it))) - { - delete keyData->socket; - } -} - -void -utp_initialize_socket(utp_socket *conn, const struct sockaddr *addr, - socklen_t addrlen, bool need_seed_gen, uint32 conn_seed, - uint32 conn_id_recv, uint32 conn_id_send) -{ - PackedSockAddr psaddr = - PackedSockAddr((const SOCKADDR_STORAGE *)addr, addrlen); - - if(need_seed_gen) - { - do - { - conn_seed = utp_call_get_random(conn->ctx, conn); - // we identify v1 and higher by setting the first two bytes to 0x0001 - conn_seed &= 0xffff; - } while(conn->ctx->utp_sockets->Lookup(UTPSocketKey(psaddr, conn_seed))); - - conn_id_recv += conn_seed; - conn_id_send += conn_seed; - } - - conn->state = CS_IDLE; - conn->conn_seed = conn_seed; - conn->conn_id_recv = conn_id_recv; - conn->conn_id_send = conn_id_send; - conn->addr = psaddr; - conn->ctx->current_ms = utp_call_get_milliseconds(conn->ctx, NULL); - conn->last_got_packet = conn->ctx->current_ms; - conn->last_sent_packet = conn->ctx->current_ms; - conn->last_measured_delay = conn->ctx->current_ms + 0x70000000; - conn->average_sample_time = conn->ctx->current_ms + 5000; - conn->last_rwin_decay = conn->ctx->current_ms - MAX_WINDOW_DECAY; - - conn->our_hist.clear(conn->ctx->current_ms); - conn->their_hist.clear(conn->ctx->current_ms); - conn->rtt_hist.clear(conn->ctx->current_ms); - - // initialize MTU floor and ceiling - conn->mtu_reset(); - conn->mtu_last = conn->mtu_ceiling; - - conn->ctx->utp_sockets->Add(UTPSocketKey(conn->addr, conn->conn_id_recv)) - ->socket = conn; - - // we need to fit one packet in the window when we start the connection - conn->max_window = conn->get_packet_size(); - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP socket initialized"); -#endif -} - -utp_socket * -utp_create_socket(utp_context *ctx) -{ - assert(ctx); - if(!ctx) - return NULL; - - UTPSocket *conn = new UTPSocket; // TODO: UTPSocket should have a constructor - - conn->state = CS_UNINITIALIZED; - conn->ctx = ctx; - conn->userdata = NULL; - conn->reorder_count = 0; - conn->duplicate_ack = 0; - conn->timeout_seq_nr = 0; - conn->last_rcv_win = 0; - conn->got_fin = false; - conn->got_fin_reached = false; - conn->fin_sent = false; - conn->fin_sent_acked = false; - conn->read_shutdown = false; - conn->close_requested = false; - conn->fast_timeout = false; - conn->rtt = 0; - conn->retransmit_timeout = 0; - conn->rto_timeout = 0; - conn->zerowindow_time = 0; - conn->average_delay = 0; - conn->current_delay_samples = 0; - conn->cur_window = 0; - conn->eof_pkt = 0; - conn->last_maxed_out_window = 0; - conn->mtu_probe_seq = 0; - conn->mtu_probe_size = 0; - conn->current_delay_sum = 0; - conn->average_delay_base = 0; - conn->retransmit_count = 0; - conn->rto = 3000; - conn->rtt_var = 800; - conn->seq_nr = 1; - conn->ack_nr = 0; - conn->max_window_user = 255 * PACKET_SIZE; - conn->cur_window_packets = 0; - conn->fast_resend_seq_nr = conn->seq_nr; - conn->target_delay = ctx->target_delay; - conn->reply_micro = 0; - conn->opt_sndbuf = ctx->opt_sndbuf; - conn->opt_rcvbuf = ctx->opt_rcvbuf; - conn->slow_start = true; - conn->ssthresh = conn->opt_sndbuf; - conn->clock_drift = 0; - conn->clock_drift_raw = 0; - conn->outbuf.mask = 15; - conn->inbuf.mask = 15; - conn->outbuf.elements = (void **)calloc(16, sizeof(void *)); - conn->inbuf.elements = (void **)calloc(16, sizeof(void *)); - conn->ida = -1; // set the index of every new socket in ack_sockets to - // -1, which also means it is not in ack_sockets yet - - memset(conn->extensions, 0, sizeof(conn->extensions)); - -#ifdef _DEBUG - memset(&conn->_stats, 0, sizeof(utp_socket_stats)); -#endif - - return conn; -} - -int -utp_context_set_option(utp_context *ctx, int opt, int val) -{ - assert(ctx); - if(!ctx) - return -1; - - switch(opt) - { - case UTP_LOG_NORMAL: - ctx->log_normal = val ? true : false; - return 0; - - case UTP_LOG_MTU: - ctx->log_mtu = val ? true : false; - return 0; - - case UTP_LOG_DEBUG: - ctx->log_debug = val ? true : false; - return 0; - - case UTP_TARGET_DELAY: - ctx->target_delay = val; - return 0; - - case UTP_SNDBUF: - assert(val >= 1); - ctx->opt_sndbuf = val; - return 0; - - case UTP_RCVBUF: - assert(val >= 1); - ctx->opt_rcvbuf = val; - return 0; - } - return -1; -} - -int -utp_context_get_option(utp_context *ctx, int opt) -{ - assert(ctx); - if(!ctx) - return -1; - - switch(opt) - { - case UTP_LOG_NORMAL: - return ctx->log_normal ? 1 : 0; - case UTP_LOG_MTU: - return ctx->log_mtu ? 1 : 0; - case UTP_LOG_DEBUG: - return ctx->log_debug ? 1 : 0; - case UTP_TARGET_DELAY: - return ctx->target_delay; - case UTP_SNDBUF: - return ctx->opt_sndbuf; - case UTP_RCVBUF: - return ctx->opt_rcvbuf; - } - return -1; -} - -int -utp_setsockopt(UTPSocket *conn, int opt, int val) -{ - assert(conn); - if(!conn) - return -1; - - switch(opt) - { - case UTP_SNDBUF: - assert(val >= 1); - conn->opt_sndbuf = val; - return 0; - - case UTP_RCVBUF: - assert(val >= 1); - conn->opt_rcvbuf = val; - return 0; - - case UTP_TARGET_DELAY: - conn->target_delay = val; - return 0; - } - - return -1; -} - -int -utp_getsockopt(UTPSocket *conn, int opt) -{ - assert(conn); - if(!conn) - return -1; - - switch(opt) - { - case UTP_SNDBUF: - return conn->opt_sndbuf; - case UTP_RCVBUF: - return conn->opt_rcvbuf; - case UTP_TARGET_DELAY: - return conn->target_delay; - } - - return -1; -} - -// Try to connect to a specified host. -int -utp_connect(utp_socket *conn, const struct sockaddr *to, socklen_t tolen) -{ - assert(conn); - if(!conn) - return -1; - - assert(conn->state == CS_UNINITIALIZED); - if(conn->state != CS_UNINITIALIZED) - { - conn->state = CS_DESTROY; - return -1; - } - - utp_initialize_socket(conn, to, tolen, true, 0, 0, 1); - - assert(conn->cur_window_packets == 0); - assert(conn->outbuf.get(conn->seq_nr) == NULL); - assert(sizeof(PacketFormatV1) == 20); - - conn->state = CS_SYN_SENT; - conn->ctx->current_ms = utp_call_get_milliseconds(conn->ctx, conn); - - // Create and send a connect message - - // used in parse_log.py - conn->log(UTP_LOG_NORMAL, - "UTP_Connect conn_seed:%u packet_size:%u (B) " - "target_delay:%u (ms) delay_history:%u " - "delay_base_history:%u (minutes)", - conn->conn_seed, PACKET_SIZE, - static_cast< unsigned int >(conn->target_delay / 1000), - CUR_DELAY_SIZE, DELAY_BASE_HISTORY); - - // Setup initial timeout timer. - conn->retransmit_timeout = 3000; - conn->rto_timeout = conn->ctx->current_ms + conn->retransmit_timeout; - conn->last_rcv_win = conn->get_rcv_window(); - - // if you need compatibiltiy with 1.8.1, use this. it increases attackability - // though. - // conn->seq_nr = 1; - conn->seq_nr = utp_call_get_random(conn->ctx, conn); - - // Create the connect packet. - const size_t header_size = sizeof(PacketFormatV1); - - OutgoingPacket *pkt = - (OutgoingPacket *)malloc(sizeof(OutgoingPacket) - 1 + header_size); - PacketFormatV1 *p1 = (PacketFormatV1 *)pkt->data; - - memset(p1, 0, header_size); - // SYN packets are special, and have the receive ID in the connid field, - // instead of conn_id_send. - p1->set_version(1); - p1->set_type(ST_SYN); - p1->ext = 0; - p1->connid = conn->conn_id_recv; - p1->windowsize = (uint32)conn->last_rcv_win; - p1->seq_nr = conn->seq_nr; - pkt->transmissions = 0; - pkt->length = header_size; - pkt->payload = 0; - - /* - #if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Sending connect %s [%u].", - addrfmt(conn->addr, addrbuf), conn_seed); - #endif - */ - - // Remember the message in the outgoing queue. - conn->outbuf.ensure_size(conn->seq_nr, conn->cur_window_packets); - conn->outbuf.put(conn->seq_nr, pkt); - conn->seq_nr++; - conn->cur_window_packets++; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "incrementing cur_window_packets:%u", - conn->cur_window_packets); -#endif - - conn->send_packet(pkt); - return 0; -} - -// Returns 1 if the UDP payload was recognized as a UTP packet, or 0 if it was -// not -int -utp_process_udp(utp_context *ctx, const byte *buffer, size_t len, - const struct sockaddr *to, socklen_t tolen) -{ - assert(ctx); - if(!ctx) - return 0; - - assert(buffer); - if(!buffer) - return 0; - - assert(to); - if(!to) - return 0; - - const PackedSockAddr addr((const SOCKADDR_STORAGE *)to, tolen); - - if(len < sizeof(PacketFormatV1)) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv %s len:%u too small", - addrfmt(addr, addrbuf), (uint)len); -#endif - return 0; - } - - const PacketFormatV1 *pf1 = (PacketFormatV1 *)buffer; - const byte version = UTP_Version(pf1); - const uint32 id = uint32(pf1->connid); - - if(version != 1) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "recv %s len:%u version:%u unsupported version", - addrfmt(addr, addrbuf), (uint)len, version); -#endif - - return 0; - } - -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv %s len:%u id:%u", addrfmt(addr, addrbuf), - (uint)len, id); - ctx->log(UTP_LOG_DEBUG, NULL, "recv id:%u seq_nr:%u ack_nr:%u", id, - (uint)pf1->seq_nr, (uint)pf1->ack_nr); -#endif - - const byte flags = pf1->type(); - - if(flags == ST_RESET) - { - // id is either our recv id or our send id - // if it's our send id, and we initiated the connection, our recv id is id + - // 1 if it's our send id, and we did not initiate the connection, our recv - // id is id - 1 we have to check every case - - UTPSocketKeyData *keyData; - if((keyData = ctx->utp_sockets->Lookup(UTPSocketKey(addr, id))) - || ((keyData = ctx->utp_sockets->Lookup(UTPSocketKey(addr, id + 1))) - && keyData->socket->conn_id_send == id) - || ((keyData = ctx->utp_sockets->Lookup(UTPSocketKey(addr, id - 1))) - && keyData->socket->conn_id_send == id)) - { - UTPSocket *conn = keyData->socket; - -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv RST for existing connection"); -#endif - - if(conn->close_requested) - conn->state = CS_DESTROY; - else - conn->state = CS_RESET; - - utp_call_on_overhead_statistics(conn->ctx, conn, false, - len + conn->get_udp_overhead(), - close_overhead); - const int err = - (conn->state == CS_SYN_SENT) ? UTP_ECONNREFUSED : UTP_ECONNRESET; - utp_call_on_error(conn->ctx, conn, err); - } - else - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv RST for unknown connection"); -#endif - } - return 1; - } - else if(flags != ST_SYN) - { - UTPSocket *conn = NULL; - - if(ctx->last_utp_socket && ctx->last_utp_socket->addr == addr - && ctx->last_utp_socket->conn_id_recv == id) - { - conn = ctx->last_utp_socket; - } - else - { - UTPSocketKeyData *keyData = - ctx->utp_sockets->Lookup(UTPSocketKey(addr, id)); - if(keyData) - { - conn = keyData->socket; - ctx->last_utp_socket = conn; - } - } - - if(conn) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv processing"); -#endif - - const size_t read = utp_process_incoming(conn, buffer, len); - utp_call_on_overhead_statistics(conn->ctx, conn, false, - (len - read) + conn->get_udp_overhead(), - header_overhead); - return 1; - } - } - - // We have not found a matching utp_socket, and this isn't a SYN. Reject it. - const uint32 seq_nr = pf1->seq_nr; - if(flags != ST_SYN) - { - ctx->current_ms = utp_call_get_milliseconds(ctx, NULL); - - for(size_t i = 0; i < ctx->rst_info.GetCount(); i++) - { - if((ctx->rst_info[i].connid == id) && (ctx->rst_info[i].addr == addr) - && (ctx->rst_info[i].ack_nr == seq_nr)) - { - ctx->rst_info[i].timestamp = ctx->current_ms; - -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "recv not sending RST to non-SYN (stored)"); -#endif - - return 1; - } - } - - if(ctx->rst_info.GetCount() > RST_INFO_LIMIT) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "recv not sending RST to non-SYN (limit at %u stored)", - (uint)ctx->rst_info.GetCount()); -#endif - - return 1; - } - -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv send RST to non-SYN (%u stored)", - (uint)ctx->rst_info.GetCount()); -#endif - - RST_Info &r = ctx->rst_info.Append(); - r.addr = addr; - r.connid = id; - r.ack_nr = seq_nr; - r.timestamp = ctx->current_ms; - - UTPSocket::send_rst(ctx, addr, id, seq_nr, utp_call_get_random(ctx, NULL)); - return 1; - } - - if(ctx->callbacks[UTP_ON_ACCEPT]) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "Incoming connection from %s", - addrfmt(addr, addrbuf)); -#endif - - UTPSocketKeyData *keyData = - ctx->utp_sockets->Lookup(UTPSocketKey(addr, id + 1)); - if(keyData) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "rejected incoming connection, connection already exists"); -#endif - - return 1; - } - /* - if(ctx->utp_sockets->GetCount() > 3000) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "rejected incoming connection, too many uTP sockets %d", - ctx->utp_sockets->GetCount()); -#endif - - return 1; - } - */ - // true means yes, block connection. false means no, don't block. - if(utp_call_on_firewall(ctx, to, tolen)) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "rejected incoming connection, firewall callback returned true"); -#endif - - return 1; - } - - // Create a new UTP socket to handle this new connection - UTPSocket *conn = utp_create_socket(ctx); - utp_initialize_socket(conn, to, tolen, false, id, id + 1, id); - conn->ack_nr = seq_nr; - conn->seq_nr = utp_call_get_random(ctx, NULL); - conn->fast_resend_seq_nr = conn->seq_nr; - conn->state = CS_SYN_RECV; - - const size_t read = utp_process_incoming(conn, buffer, len, true); - -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "recv send connect ACK"); -#endif - - conn->send_ack(true); - - utp_call_on_accept(ctx, conn, to, tolen); - - // we report overhead after on_accept(), because the callbacks are setup now - utp_call_on_overhead_statistics(conn->ctx, conn, false, - (len - read) + conn->get_udp_overhead(), - header_overhead); // SYN - utp_call_on_overhead_statistics(conn->ctx, conn, true, conn->get_overhead(), - ack_overhead); // SYNACK - } - else - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "rejected incoming connection, UTP_ON_ACCEPT callback not set"); -#endif - } - - return 1; -} - -// Called by utp_process_icmp_fragmentation() and utp_process_icmp_error() below -static UTPSocket * -parse_icmp_payload(utp_context *ctx, const byte *buffer, size_t len, - const struct sockaddr *to, socklen_t tolen) -{ - assert(ctx); - if(!ctx) - return NULL; - - assert(buffer); - if(!buffer) - return NULL; - - assert(to); - if(!to) - return NULL; - - const PackedSockAddr addr((const SOCKADDR_STORAGE *)to, tolen); - - // ICMP packets are only required to quote the first 8 bytes of the layer4 - // payload. The UDP payload is 8 bytes, and the UTP header is another 20 - // bytes. So, in order to find the entire UTP header, we need the ICMP - // packet to quote 28 bytes. - if(len < sizeof(PacketFormatV1)) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "Ignoring ICMP from %s: runt length %d", - addrfmt(addr, addrbuf), len); -#endif - return NULL; - } - - const PacketFormatV1 *pf = (PacketFormatV1 *)buffer; - const byte version = UTP_Version(pf); - const uint32 id = uint32(pf->connid); - - if(version != 1) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "Ignoring ICMP from %s: not UTP version 1", - addrfmt(addr, addrbuf)); -#endif - return NULL; - } - - UTPSocketKeyData *keyData; - - if((keyData = ctx->utp_sockets->Lookup(UTPSocketKey(addr, id))) - || ((keyData = ctx->utp_sockets->Lookup(UTPSocketKey(addr, id + 1))) - && keyData->socket->conn_id_send == id) - || ((keyData = ctx->utp_sockets->Lookup(UTPSocketKey(addr, id - 1))) - && keyData->socket->conn_id_send == id)) - { - return keyData->socket; - } - -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "Ignoring ICMP from %s: No matching connection found for id %u", - addrfmt(addr, addrbuf), id); -#endif - return NULL; -} - -// Should be called when an ICMP Type 3, Code 4 packet (fragmentation needed) is -// received, to adjust the MTU -// -// Returns 1 if the UDP payload (delivered in the ICMP packet) was recognized as -// a UTP packet, or 0 if it was not -// -// @ctx: utp_context -// @buf: Contents of the original UDP payload, which the ICMP packet quoted. -// *Not* the ICMP packet itself. -// @len: buffer length -// @to: destination address of the original UDP pakcet -// @tolen: address length -// @next_hop_mtu: -int -utp_process_icmp_fragmentation(utp_context *ctx, const byte *buffer, size_t len, - const struct sockaddr *to, socklen_t tolen, - uint16 next_hop_mtu) -{ - UTPSocket *conn = parse_icmp_payload(ctx, buffer, len, to, tolen); - if(!conn) - return 0; - - // Constrain the next_hop_mtu to sane values. It might not be initialized or - // sent properly - if(next_hop_mtu >= 576 && next_hop_mtu < 0x2000) - { - conn->mtu_ceiling = min< uint32 >(next_hop_mtu, conn->mtu_ceiling); - conn->mtu_search_update(); - // this is something of a speecial case, where we don't set mtu_last - // to the value in between the floor and the ceiling. We can update the - // floor, because there might be more network segments after the one - // that sent this ICMP with smaller MTUs. But we want to test this - // MTU size first. If the next probe gets through, mtu_floor is updated - conn->mtu_last = conn->mtu_ceiling; - } - else - { - // Otherwise, binary search. At this point we don't actually know - // what size the packet that failed was, and apparently we can't - // trust the next hop mtu either. It seems reasonably conservative - // to just lower the ceiling. This should not happen on working networks - // anyway. - conn->mtu_ceiling = (conn->mtu_floor + conn->mtu_ceiling) / 2; - conn->mtu_search_update(); - } - - conn->log(UTP_LOG_MTU, "MTU [ICMP] floor:%d ceiling:%d current:%d", - conn->mtu_floor, conn->mtu_ceiling, conn->mtu_last); - return 1; -} - -// Should be called when an ICMP message is received that should tear down the -// connection. -// -// Returns 1 if the UDP payload (delivered in the ICMP packet) was recognized as -// a UTP packet, or 0 if it was not -// -// @ctx: utp_context -// @buf: Contents of the original UDP payload, which the ICMP packet quoted. -// *Not* the ICMP packet itself. -// @len: buffer length -// @to: destination address of the original UDP pakcet -// @tolen: address length -int -utp_process_icmp_error(utp_context *ctx, const byte *buffer, size_t len, - const struct sockaddr *to, socklen_t tolen) -{ - UTPSocket *conn = parse_icmp_payload(ctx, buffer, len, to, tolen); - if(!conn) - return 0; - - const int err = - (conn->state == CS_SYN_SENT) ? UTP_ECONNREFUSED : UTP_ECONNRESET; - const PackedSockAddr addr((const SOCKADDR_STORAGE *)to, tolen); - - switch(conn->state) - { - // Don't pass on errors for idle/closed connections - case CS_IDLE: -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, "ICMP from %s in state CS_IDLE, ignoring", - addrfmt(addr, addrbuf)); -#endif - return 1; - - default: - if(conn->close_requested) - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "ICMP from %s after close, setting state to CS_DESTROY and " - "causing error %d", - addrfmt(addr, addrbuf), err); -#endif - conn->state = CS_DESTROY; - } - else - { -#if UTP_DEBUG_LOGGING - ctx->log(UTP_LOG_DEBUG, NULL, - "ICMP from %s, setting state to CS_RESET and causing error %d", - addrfmt(addr, addrbuf), err); -#endif - conn->state = CS_RESET; - } - break; - } - - utp_call_on_error(conn->ctx, conn, err); - return 1; -} - -// Write bytes to the UTP socket. Returns the number of bytes written. -// 0 indicates the socket is no longer writable, -1 indicates an error -ssize_t -utp_writev(utp_socket *conn, struct utp_iovec *iovec_input, size_t num_iovecs) -{ - static utp_iovec iovec[UTP_IOV_MAX]; - - assert(conn); - if(!conn) - return -1; - - assert(iovec_input); - if(!iovec_input) - return -1; - - assert(num_iovecs); - if(!num_iovecs) - return -1; - - if(num_iovecs > UTP_IOV_MAX) - num_iovecs = UTP_IOV_MAX; - - memcpy(iovec, iovec_input, sizeof(struct utp_iovec) * num_iovecs); - - size_t bytes = 0; - size_t sent = 0; - for(size_t i = 0; i < num_iovecs; i++) - bytes += iovec[i].iov_len; - -#if UTP_DEBUG_LOGGING - size_t param = bytes; -#endif - - if(conn->state != CS_CONNECTED) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_Write %u bytes = false (not CS_CONNECTED)", - (uint)bytes); -#endif - return 0; - } - - if(conn->fin_sent) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_Write %u bytes = false (fin_sent already)", - (uint)bytes); -#endif - return 0; - } - - conn->ctx->current_ms = utp_call_get_milliseconds(conn->ctx, conn); - - // don't send unless it will all fit in the window - size_t packet_size = conn->get_packet_size(); - size_t num_to_send = min< size_t >(bytes, packet_size); - while(!conn->is_full(num_to_send)) - { - // Send an outgoing packet. - // Also add it to the outgoing of packets that have been sent but not ACKed. - - bytes -= num_to_send; - sent += num_to_send; - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, - "Sending packet. seq_nr:%u ack_nr:%u wnd:%u/%u/%u rcv_win:%u " - "size:%u cur_window_packets:%u", - conn->seq_nr, conn->ack_nr, - (uint)(conn->cur_window + num_to_send), (uint)conn->max_window, - (uint)conn->max_window_user, (uint)conn->last_rcv_win, - num_to_send, conn->cur_window_packets); -#endif - conn->write_outgoing_packet(num_to_send, ST_DATA, iovec, num_iovecs); - num_to_send = min< size_t >(bytes, packet_size); - - if(num_to_send == 0) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_Write %u bytes = true", (uint)param); -#endif - return sent; - } - } - - bool full = conn->is_full(); - if(full) - { - // mark the socket as not being writable. - conn->state = CS_CONNECTED_FULL; - } - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_Write %u bytes = %s", (uint)bytes, - full ? "false" : "true"); -#endif - - // returns whether or not the socket is still writable - // if the congestion window is not full, we can still write to it - // return !full; - return sent; -} - -void -utp_read_drained(utp_socket *conn) -{ - assert(conn); - if(!conn) - return; - - assert(conn->state != CS_UNINITIALIZED); - if(conn->state == CS_UNINITIALIZED) - return; - - const size_t rcvwin = conn->get_rcv_window(); - - if(rcvwin > conn->last_rcv_win) - { - // If last window was 0 send ACK immediately, otherwise should set timer - if(conn->last_rcv_win == 0) - { - conn->send_ack(); - } - else - { - conn->ctx->current_ms = utp_call_get_milliseconds(conn->ctx, conn); - conn->schedule_ack(); - } - } -} - -// Should be called each time the UDP socket is drained -void -utp_issue_deferred_acks(utp_context *ctx) -{ - assert(ctx); - if(!ctx) - return; - - for(size_t i = 0; i < ctx->ack_sockets.GetCount(); i++) - { - UTPSocket *conn = ctx->ack_sockets[i]; - conn->send_ack(); - i--; - } -} - -// Should be called every 500ms -void -utp_check_timeouts(utp_context *ctx) -{ - assert(ctx); - if(!ctx) - return; - - ctx->current_ms = utp_call_get_milliseconds(ctx, NULL); - - if(ctx->current_ms - ctx->last_check < TIMEOUT_CHECK_INTERVAL) - return; - - ctx->last_check = ctx->current_ms; - - for(size_t i = 0; i < ctx->rst_info.GetCount(); i++) - { - if((int)(ctx->current_ms - ctx->rst_info[i].timestamp) >= RST_INFO_TIMEOUT) - { - ctx->rst_info.MoveUpLast(i); - i--; - } - } - if(ctx->rst_info.GetCount() != ctx->rst_info.GetAlloc()) - { - ctx->rst_info.Compact(); - } - - utp_hash_iterator_t it; - UTPSocketKeyData *keyData; - while((keyData = ctx->utp_sockets->Iterate(it))) - { - UTPSocket *conn = keyData->socket; - conn->check_timeouts(); - - // Check if the object was deleted - if(conn->state == CS_DESTROY) - { -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "Destroying"); -#endif - delete conn; - } - } -} - -int -utp_getpeername(utp_socket *conn, struct sockaddr *addr, socklen_t *addrlen) -{ - assert(addr); - if(!addr) - return -1; - - assert(addrlen); - if(!addrlen) - return -1; - - assert(conn); - if(!conn) - return -1; - - assert(conn->state != CS_UNINITIALIZED); - if(conn->state == CS_UNINITIALIZED) - return -1; - - socklen_t len; - const SOCKADDR_STORAGE sa = conn->addr.get_sockaddr_storage(&len); - *addrlen = min(len, *addrlen); - memcpy(addr, &sa, *addrlen); - return 0; -} - -int -utp_get_delays(UTPSocket *conn, uint32 *ours, uint32 *theirs, uint32 *age) -{ - assert(conn); - if(!conn) - return -1; - - assert(conn->state != CS_UNINITIALIZED); - if(conn->state == CS_UNINITIALIZED) - { - if(ours) - *ours = 0; - if(theirs) - *theirs = 0; - if(age) - *age = 0; - return -1; - } - - if(ours) - *ours = conn->our_hist.get_value(); - if(theirs) - *theirs = conn->their_hist.get_value(); - if(age) - *age = (uint32)(conn->ctx->current_ms - conn->last_measured_delay); - return 0; -} - -// Close the UTP socket. -// It is not valid for the upper layer to refer to socket after it is closed. -// Data will keep to try being delivered after the close. -void -utp_close(UTPSocket *conn) -{ - assert(conn); - if(!conn) - return; - - assert(conn->state != CS_UNINITIALIZED && conn->state != CS_DESTROY); - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_Close in state:%s", statenames[conn->state]); -#endif - - switch(conn->state) - { - case CS_CONNECTED: - case CS_CONNECTED_FULL: - conn->read_shutdown = true; - conn->close_requested = true; - if(!conn->fin_sent) - { - conn->fin_sent = true; - conn->write_outgoing_packet(0, ST_FIN, NULL, 0); - } - else if(conn->fin_sent_acked) - { - conn->state = CS_DESTROY; - } - break; - - case CS_SYN_SENT: - conn->rto_timeout = utp_call_get_milliseconds(conn->ctx, conn) - + min< uint >(conn->rto * 2, 60); - // fall through - case CS_SYN_RECV: - // fall through - default: - conn->state = CS_DESTROY; - break; - } - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_Close end in state:%s", - statenames[conn->state]); -#endif -} - -void -utp_shutdown(UTPSocket *conn, int how) -{ - assert(conn); - if(!conn) - return; - - assert(conn->state != CS_UNINITIALIZED && conn->state != CS_DESTROY); - -#if UTP_DEBUG_LOGGING - conn->log(UTP_LOG_DEBUG, "UTP_shutdown(%d) in state:%s", how, - statenames[conn->state]); -#endif - - if(how != SHUT_WR) - { - conn->read_shutdown = true; - } - if(how != SHUT_RD) - { - switch(conn->state) - { - case CS_CONNECTED: - case CS_CONNECTED_FULL: - if(!conn->fin_sent) - { - conn->fin_sent = true; - conn->write_outgoing_packet(0, ST_FIN, NULL, 0); - } - break; - case CS_SYN_SENT: - conn->rto_timeout = utp_call_get_milliseconds(conn->ctx, conn) - + min< uint >(conn->rto * 2, 60); - default: - break; - } - } -} - -utp_context * -utp_get_context(utp_socket *socket) -{ - assert(socket); - return socket ? socket->ctx : NULL; -} - -void * -utp_set_userdata(utp_socket *socket, void *userdata) -{ - assert(socket); - if(socket) - socket->userdata = userdata; - return socket ? socket->userdata : NULL; -} - -void * -utp_get_userdata(utp_socket *socket) -{ - assert(socket); - return socket ? socket->userdata : NULL; -} - -void -struct_utp_context::log(int level, utp_socket *socket, char const *fmt, ...) -{ - if(!would_log(level)) - { - return; - } - - va_list va; - va_start(va, fmt); - log_unchecked(socket, fmt, va); - va_end(va); -} - -void -struct_utp_context::log_unchecked(utp_socket *socket, char const *fmt, ...) -{ - va_list va; - char buf[4096]; - - va_start(va, fmt); - vsnprintf(buf, 4096, fmt, va); - buf[4095] = '\0'; - va_end(va); - - utp_call_log(this, socket, (const byte *)buf); -} - -inline bool -struct_utp_context::would_log(int level) -{ - if(level == UTP_LOG_NORMAL) - return log_normal; - if(level == UTP_LOG_MTU) - return log_mtu; - if(level == UTP_LOG_DEBUG) - return log_debug; - return true; -} - -utp_socket_stats * -utp_get_stats(utp_socket *socket) -{ -#ifdef _DEBUG - assert(socket); - if(!socket) - return NULL; - socket->_stats.mtu_guess = - socket->mtu_last ? socket->mtu_last : socket->mtu_ceiling; - return &socket->_stats; -#else - (void)socket; - return NULL; -#endif -} diff --git a/libutp/utp_internal.h b/libutp/utp_internal.h deleted file mode 100644 index 01597f811..000000000 --- a/libutp/utp_internal.h +++ /dev/null @@ -1,161 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __UTP_INTERNAL_H__ -#define __UTP_INTERNAL_H__ - -#include -#include -#include -#include - -#include "utp.h" -#include "utp_callbacks.h" -#include "utp_templates.h" -#include "utp_hash.h" -#include "utp_hash.h" -#include "utp_packedsockaddr.h" - -/* These originally lived in utp_config.h */ -#define CCONTROL_TARGET (100 * 1000) // us - -enum bandwidth_type_t -{ - payload_bandwidth, - connect_overhead, - close_overhead, - ack_overhead, - header_overhead, - retransmit_overhead -}; - -#ifdef WIN32 -#ifdef _MSC_VER -#include "libutp_inet_ntop.h" -#endif - -// newer versions of MSVC define these in errno.h -#ifndef ECONNRESET -#define ECONNRESET WSAECONNRESET -#define EMSGSIZE WSAEMSGSIZE -#define ECONNREFUSED WSAECONNREFUSED -#define ETIMEDOUT WSAETIMEDOUT -#endif -#endif - -struct PACKED_ATTRIBUTE RST_Info -{ - PackedSockAddr addr; - uint32 connid; - uint16 ack_nr; - uint64 timestamp; -}; - -// It's really important that we don't have duplicate keys in the hash table. -// If we do, we'll eventually crash. if we try to remove the second instance -// of the key, we'll accidentally remove the first instead. then later, -// checkTimeouts will try to access the second one's already freed memory. -void -UTP_FreeAll(struct UTPSocketHT *utp_sockets); - -struct UTPSocketKey -{ - PackedSockAddr addr; - uint32 recv_id; // "conn_seed", "conn_id" - - UTPSocketKey(const PackedSockAddr &_addr, uint32 _recv_id) - : addr(_addr) - , recv_id(_recv_id) - { - } - - bool - operator==(const UTPSocketKey &other) const - { - return recv_id == other.recv_id && addr == other.addr; - } - - uint32 - compute_hash() const - { - return recv_id ^ addr.compute_hash(); - } -}; - -struct UTPSocketKeyData -{ - UTPSocketKey key; - UTPSocket *socket; - utp_link_t link; -}; - -#define UTP_SOCKET_BUCKETS 79 -#define UTP_SOCKET_INIT 15 - -struct UTPSocketHT : utpHashTable< UTPSocketKey, UTPSocketKeyData > -{ - UTPSocketHT() - { - const int buckets = UTP_SOCKET_BUCKETS; - const int initial = UTP_SOCKET_INIT; - this->Create(buckets, initial); - } - ~UTPSocketHT() - { - UTP_FreeAll(this); - this->Free(); - } -}; - -struct struct_utp_context -{ - void *userdata; - utp_callback_t *callbacks[UTP_ARRAY_SIZE]; - - uint64 current_ms; - utp_context_stats context_stats; - UTPSocket *last_utp_socket; - Array< UTPSocket * > ack_sockets; - Array< RST_Info > rst_info; - UTPSocketHT *utp_sockets; - size_t target_delay; - size_t opt_sndbuf; - size_t opt_rcvbuf; - uint64 last_check; - - struct_utp_context(); - ~struct_utp_context(); - - void - log(int level, utp_socket *socket, char const *fmt, ...); - void - log_unchecked(utp_socket *socket, char const *fmt, ...); - bool - would_log(int level); - - bool log_normal : 1; // log normal events? - bool log_mtu : 1; // log MTU related events? - bool log_debug : 1; // log debugging events? (Must also compile with - // UTP_DEBUG_LOGGING defined) -}; - -#endif //__UTP_INTERNAL_H__ diff --git a/libutp/utp_packedsockaddr.cpp b/libutp/utp_packedsockaddr.cpp deleted file mode 100644 index 04aad3157..000000000 --- a/libutp/utp_packedsockaddr.cpp +++ /dev/null @@ -1,166 +0,0 @@ -// vim:set ts=4 sw=4 ai: - -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include -#include - -#include "utp_types.h" -#include "utp_hash.h" -#include "utp_packedsockaddr.h" - -#include "libutp_inet_ntop.h" - -byte -PackedSockAddr::get_family() const -{ -#if defined(__sh__) - return ((_sin6d[0] == 0) && (_sin6d[1] == 0) - && (_sin6d[2] == htonl(0xffff)) != 0) - ? AF_INET - : AF_INET6; -#else - return (IN6_IS_ADDR_V4MAPPED(&_in._in6addr) != 0) ? AF_INET : AF_INET6; -#endif // defined(__sh__) -} - -bool -PackedSockAddr::operator==(const PackedSockAddr &rhs) const -{ - if(&rhs == this) - return true; - if(_port != rhs._port) - return false; - return memcmp(_sin6, rhs._sin6, sizeof(_sin6)) == 0; -} - -bool -PackedSockAddr::operator!=(const PackedSockAddr &rhs) const -{ - return !(*this == rhs); -} - -uint32 -PackedSockAddr::compute_hash() const -{ - return utp_hash_mem(&_in, sizeof(_in)) ^ _port; -} - -void -PackedSockAddr::set(const SOCKADDR_STORAGE *sa, socklen_t len) -{ - // on unix, the cast does nothing, socklen_t is _already_ unsigned - if(sa->ss_family == AF_INET) - { - assert((unsigned)len >= sizeof(sockaddr_in)); - const sockaddr_in *sin = (sockaddr_in *)sa; - _sin6w[0] = 0; - _sin6w[1] = 0; - _sin6w[2] = 0; - _sin6w[3] = 0; - _sin6w[4] = 0; - _sin6w[5] = 0xffff; - _sin4 = sin->sin_addr.s_addr; - _port = ntohs(sin->sin_port); - } - else - { - assert((unsigned)len >= sizeof(sockaddr_in6)); - const sockaddr_in6 *sin6 = (sockaddr_in6 *)sa; - _in._in6addr = sin6->sin6_addr; - _port = ntohs(sin6->sin6_port); - } - (void)len; -} - -PackedSockAddr::PackedSockAddr(const SOCKADDR_STORAGE *sa, socklen_t len) -{ - set(sa, len); -} - -PackedSockAddr::PackedSockAddr(void) -{ - SOCKADDR_STORAGE sa; - socklen_t len = sizeof(SOCKADDR_STORAGE); - memset(&sa, 0, len); - sa.ss_family = AF_INET; - set(&sa, len); -} - -SOCKADDR_STORAGE -PackedSockAddr::get_sockaddr_storage(socklen_t *len = NULL) const -{ - SOCKADDR_STORAGE sa; - const byte family = get_family(); - if(family == AF_INET) - { - sockaddr_in *sin = (sockaddr_in *)&sa; - if(len) - *len = sizeof(sockaddr_in); - memset(sin, 0, sizeof(sockaddr_in)); - sin->sin_family = family; - sin->sin_port = htons(_port); - sin->sin_addr.s_addr = _sin4; - } - else - { - sockaddr_in6 *sin6 = (sockaddr_in6 *)&sa; - memset(sin6, 0, sizeof(sockaddr_in6)); - if(len) - *len = sizeof(sockaddr_in6); - sin6->sin6_family = family; - sin6->sin6_addr = _in._in6addr; - sin6->sin6_port = htons(_port); - } - return sa; -} - -// #define addrfmt(x, s) x.fmt(s, sizeof(s)) -cstr -PackedSockAddr::fmt(str s, size_t len) const -{ - memset(s, 0, len); - const byte family = get_family(); - str i; - if(family == AF_INET) - { - INET_NTOP(family, (uint32 *)&_sin4, s, len); - i = s; - while(*++i) - { - } - } - else - { - i = s; - *i++ = '['; - INET_NTOP(family, (in6_addr *)&_in._in6addr, i, len - 1); - while(*++i) - { - } - *i++ = ']'; - } - snprintf(i, len - (i - s), ":%u", _port); - return s; -} diff --git a/libutp/utp_packedsockaddr.h b/libutp/utp_packedsockaddr.h deleted file mode 100644 index 76e8accaa..000000000 --- a/libutp/utp_packedsockaddr.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __UTP_PACKEDSOCKADDR_H__ -#define __UTP_PACKEDSOCKADDR_H__ - -#include "utp_types.h" - -struct PACKED_ATTRIBUTE PackedSockAddr { - // The values are always stored here in network byte order - union { - byte _in6[16]; // IPv6 - uint16 _in6w[8]; // IPv6, word based (for convenience) - uint32 _in6d[4]; // Dword access - in6_addr _in6addr; // For convenience - } _in; - - // Host byte order - uint16 _port; - - #define _sin4 _in._in6d[3] // IPv4 is stored where it goes if mapped - - #define _sin6 _in._in6 - #define _sin6w _in._in6w - #define _sin6d _in._in6d - - byte get_family() const; - bool operator==(const PackedSockAddr& rhs) const; - bool operator!=(const PackedSockAddr& rhs) const; - void set(const SOCKADDR_STORAGE* sa, socklen_t len); - - PackedSockAddr(const SOCKADDR_STORAGE* sa, socklen_t len); - PackedSockAddr(void); - - SOCKADDR_STORAGE get_sockaddr_storage(socklen_t *len) const; - cstr fmt(str s, size_t len) const; - - uint32 compute_hash() const; -} ALIGNED_ATTRIBUTE(4); - -#endif //__UTP_PACKEDSOCKADDR_H__ diff --git a/libutp/utp_templates.h b/libutp/utp_templates.h deleted file mode 100644 index 8f88f5c7c..000000000 --- a/libutp/utp_templates.h +++ /dev/null @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef __TEMPLATES_H__ -#define __TEMPLATES_H__ - -#include "utp_types.h" -#include - -#if defined(POSIX) -/* Allow over-writing FORCEINLINE from makefile because gcc 3.4.4 for buffalo - doesn't seem to support __attribute__((always_inline)) in -O0 build - (strangely, it works in -Os build) */ -#ifndef FORCEINLINE -// The always_inline attribute asks gcc to inline the function even if no optimization is being requested. -// This macro should be used exclusive-or with the inline directive (use one or the other but not both) -// since Microsoft uses __forceinline to also mean inline, -// and this code is following a Microsoft compatibility model. -// Just setting the attribute without also specifying the inline directive apparently won't inline the function, -// as evidenced by multiply-defined symbols found at link time. -#define FORCEINLINE inline __attribute__((always_inline)) -#endif -#endif - -// Utility templates -#undef min -#undef max - -template static inline T min(T a, T b) { if (a < b) return a; return b; } -template static inline T max(T a, T b) { if (a > b) return a; return b; } - -template static inline T min(T a, T b, T c) { return min(min(a,b),c); } -template static inline T max(T a, T b, T c) { return max(max(a,b),c); } -template static inline T clamp(T v, T mi, T ma) -{ - if (v > ma) v = ma; - if (v < mi) v = mi; - return v; -} - -#if (defined(__SVR4) && defined(__sun)) - #pragma pack(1) -#else - #pragma pack(push,1) -#endif - - -namespace aux -{ - FORCEINLINE uint16 host_to_network(uint16 i) { return htons(i); } - FORCEINLINE uint32 host_to_network(uint32 i) { return htonl(i); } - FORCEINLINE int32 host_to_network(int32 i) { return htonl(i); } - FORCEINLINE uint16 network_to_host(uint16 i) { return ntohs(i); } - FORCEINLINE uint32 network_to_host(uint32 i) { return ntohl(i); } - FORCEINLINE int32 network_to_host(int32 i) { return ntohl(i); } -} - -template -struct PACKED_ATTRIBUTE big_endian -{ - T operator=(T i) { m_integer = aux::host_to_network(i); return i; } - operator T() const { return aux::network_to_host(m_integer); } -private: - T m_integer; -}; - -typedef big_endian int32_big; -typedef big_endian uint32_big; -typedef big_endian uint16_big; - -#if (defined(__SVR4) && defined(__sun)) - #pragma pack(0) -#else - #pragma pack(pop) -#endif - -template static inline void zeromem(T *a, size_t count = 1) { memset(a, 0, count * sizeof(T)); } - -typedef int SortCompareProc(const void *, const void *); - -template static FORCEINLINE void QuickSortT(T *base, size_t num, int (*comp)(const T *, const T *)) { qsort(base, num, sizeof(T), (SortCompareProc*)comp); } - - -// WARNING: The template parameter MUST be a POD type! -template class Array { -protected: - T *mem; - size_t alloc,count; - -public: - Array(size_t init) { Init(init); } - Array() { Init(); } - ~Array() { Free(); } - - void inline Init() { mem = NULL; alloc = count = 0; } - void inline Init(size_t init) { Init(); if (init) Resize(init); } - size_t inline GetCount() const { return count; } - size_t inline GetAlloc() const { return alloc; } - void inline SetCount(size_t c) { count = c; } - - inline T& operator[](size_t offset) { assert(offset ==0 || offset(minsize, alloc * 2)); } - - inline size_t Append(const T &t) { - if (count >= alloc) Grow(); - size_t r=count++; - mem[r] = t; - return r; - } - - T inline &Append() { - if (count >= alloc) Grow(); - return mem[count++]; - } - - void inline Compact() { - Resize(count); - } - - void inline Free() { - free(mem); - Init(); - } - - void inline Clear() { - count = 0; - } - - bool inline MoveUpLast(size_t index) { - assert(index < count); - size_t c = --count; - if (index != c) { - mem[index] = mem[c]; - return true; - } - return false; - } - - bool inline MoveUpLastExist(const T &v) { - return MoveUpLast(LookupElementExist(v)); - } - - size_t inline LookupElement(const T &v) const { - for(size_t i = 0; i != count; i++) - if (mem[i] == v) - return i; - return (size_t) -1; - } - - bool inline HasElement(const T &v) const { - return LookupElement(v) != -1; - } - - typedef int SortCompareProc(const T *a, const T *b); - - void Sort(SortCompareProc* proc, size_t start, size_t end) { - QuickSortT(&mem[start], end - start, proc); - } - - void Sort(SortCompareProc* proc, size_t start) { - Sort(proc, start, count); - } - - void Sort(SortCompareProc* proc) { - Sort(proc, 0, count); - } -}; - -#endif //__TEMPLATES_H__ diff --git a/libutp/utp_utils.cpp b/libutp/utp_utils.cpp deleted file mode 100644 index c9c7261c5..000000000 --- a/libutp/utp_utils.cpp +++ /dev/null @@ -1,307 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include -#include -#include "utp.h" -#include "utp_types.h" - -#ifdef WIN32 -#ifndef WIN32_LEAN_AND_MEAN -#define WIN32_LEAN_AND_MEAN -#endif -#include -#include -#include -#else //! WIN32 -#include -#include // Linux needs both time.h and sys/time.h -#endif - -#if defined(__APPLE__) -#include -#endif - -#include -#include "utp_utils.h" - -#ifdef WIN32 - -typedef ULONGLONG(WINAPI GetTickCount64Proc)(void); -static GetTickCount64Proc *pt2GetTickCount64; -static GetTickCount64Proc *pt2RealGetTickCount; - -static uint64 startPerformanceCounter; -static uint64 startGetTickCount; -// MSVC 6 standard doesn't like division with uint64s -static double counterPerMicrosecond; - -static uint64 -UTGetTickCount64() -{ - if(pt2GetTickCount64) - { - return pt2GetTickCount64(); - } - if(pt2RealGetTickCount) - { - uint64 v = pt2RealGetTickCount(); - // fix return value from GetTickCount - return (DWORD)v | ((v >> 0x18) & 0xFFFFFFFF00000000); - } - return (uint64)GetTickCount(); -} - -static void -Time_Initialize() -{ - HMODULE kernel32 = GetModuleHandleA("kernel32.dll"); - pt2GetTickCount64 = - (GetTickCount64Proc *)GetProcAddress(kernel32, "GetTickCount64"); - // not a typo. GetTickCount actually returns 64 bits - pt2RealGetTickCount = - (GetTickCount64Proc *)GetProcAddress(kernel32, "GetTickCount"); - - uint64 frequency; - QueryPerformanceCounter((LARGE_INTEGER *)&startPerformanceCounter); - QueryPerformanceFrequency((LARGE_INTEGER *)&frequency); - counterPerMicrosecond = (double)frequency / 1000000.0f; - startGetTickCount = UTGetTickCount64(); -} - -static int64 -abs64(int64 x) -{ - return x < 0 ? -x : x; -} - -static uint64 -__GetMicroseconds() -{ - static bool time_init = false; - if(!time_init) - { - time_init = true; - Time_Initialize(); - } - - uint64 counter; - uint64 tick; - - QueryPerformanceCounter((LARGE_INTEGER *)&counter); - tick = UTGetTickCount64(); - - // unfortunately, QueryPerformanceCounter is not guaranteed - // to be monotonic. Make it so. - int64 ret = (int64)(((int64)counter - (int64)startPerformanceCounter) - / counterPerMicrosecond); - // if the QPC clock leaps more than one second off GetTickCount64() - // something is seriously fishy. Adjust QPC to stay monotonic - int64 tick_diff = tick - startGetTickCount; - if(abs64(ret / 100000 - tick_diff / 100) > 10) - { - startPerformanceCounter -= - (uint64)((int64)(tick_diff * 1000 - ret) * counterPerMicrosecond); - ret = (int64)((counter - startPerformanceCounter) / counterPerMicrosecond); - } - return ret; -} - -static inline uint64 -UTP_GetMilliseconds() -{ - return GetTickCount(); -} - -#else //! WIN32 - -static inline uint64 -UTP_GetMicroseconds(void); -static inline uint64 -UTP_GetMilliseconds() -{ - return UTP_GetMicroseconds() / 1000; -} - -#if defined(__APPLE__) - -static uint64 -__GetMicroseconds() -{ - // http://developer.apple.com/mac/library/qa/qa2004/qa1398.html - // http://www.macresearch.org/tutorial_performance_and_time - static mach_timebase_info_data_t sTimebaseInfo; - static uint64_t start_tick = 0; - uint64_t tick; - // Returns a counter in some fraction of a nanoseconds - tick = mach_absolute_time(); - if(sTimebaseInfo.denom == 0) - { - // Get the timer ratio to convert mach_absolute_time to nanoseconds - mach_timebase_info(&sTimebaseInfo); - start_tick = tick; - } - // Calculate the elapsed time, convert it to microseconds and return it. - return ((tick - start_tick) * sTimebaseInfo.numer) - / (sTimebaseInfo.denom * 1000); -} - -#else // !__APPLE__ - -// While _POSIX_TIMERS == -1 in openbsd, clock_gettime(2) _does_ support monotonic. -// this is true for all the BSDs -#if !(__OpenBSD__ || __NetBSD__ || __FreeBSD__) -#if !(defined(_POSIX_TIMERS) && _POSIX_TIMERS > 0 && defined(CLOCK_MONOTONIC)) -#warning "Using non-monotonic function gettimeofday() in UTP_GetMicroseconds()" -#endif -#endif - -/* Unfortunately, #ifdef CLOCK_MONOTONIC is not enough to make sure that - POSIX clocks work -- we could be running a recent libc with an ancient - kernel (think OpenWRT). -- jch */ - -static uint64_t -__GetMicroseconds() -{ - struct timeval tv; - -#if defined(CLOCK_MONOTONIC) - static int have_posix_clocks = -1; - int rc; - - if(have_posix_clocks < 0) - { - struct timespec ts; - rc = clock_gettime(CLOCK_MONOTONIC, &ts); - if(rc < 0) - { - have_posix_clocks = 0; - } - else - { - have_posix_clocks = 1; - } - } - - if(have_posix_clocks) - { - struct timespec ts; - rc = clock_gettime(CLOCK_MONOTONIC, &ts); - return uint64(ts.tv_sec) * 1000000 + uint64(ts.tv_nsec) / 1000; - } -#endif - - gettimeofday(&tv, NULL); - return uint64(tv.tv_sec) * 1000000 + tv.tv_usec; -} - -#endif //!__APPLE__ - -#endif //! WIN32 - -/* - * Whew. Okay. After that #ifdef maze above, we now know we have a working - * __GetMicroseconds() implementation on all platforms. - * - * Because there are a number of assertions in libutp that will cause a crash - * if monotonic time isn't monotonic, now apply some safety checks. While in - * principle we're already protecting ourselves in cases where non-monotonic - * time is likely to happen, this protects all versions. - */ - -static inline uint64 -UTP_GetMicroseconds() -{ - static uint64 offset = 0, previous = 0; - - uint64 now = __GetMicroseconds() + offset; - if(previous > now) - { - /* Eek! */ - offset += previous - now; - now = previous; - } - previous = now; - return now; -} - -#define ETHERNET_MTU 1500 -#define IPV4_HEADER_SIZE 20 -#define IPV6_HEADER_SIZE 40 -#define UDP_HEADER_SIZE 8 -#define GRE_HEADER_SIZE 24 -#define PPPOE_HEADER_SIZE 8 -#define MPPE_HEADER_SIZE 2 -// packets have been observed in the wild that were fragmented -// with a payload of 1416 for the first fragment -// There are reports of routers that have MTU sizes as small as 1392 -#define FUDGE_HEADER_SIZE 36 -#define TEREDO_MTU 1280 - -#define UDP_IPV4_OVERHEAD (IPV4_HEADER_SIZE + UDP_HEADER_SIZE) -#define UDP_IPV6_OVERHEAD (IPV6_HEADER_SIZE + UDP_HEADER_SIZE) -#define UDP_TEREDO_OVERHEAD (UDP_IPV4_OVERHEAD + UDP_IPV6_OVERHEAD) - -#define UDP_IPV4_MTU \ - (ETHERNET_MTU - IPV4_HEADER_SIZE - UDP_HEADER_SIZE - GRE_HEADER_SIZE \ - - PPPOE_HEADER_SIZE - MPPE_HEADER_SIZE - FUDGE_HEADER_SIZE) -#define UDP_IPV6_MTU \ - (ETHERNET_MTU - IPV6_HEADER_SIZE - UDP_HEADER_SIZE - GRE_HEADER_SIZE \ - - PPPOE_HEADER_SIZE - MPPE_HEADER_SIZE - FUDGE_HEADER_SIZE) -#define UDP_TEREDO_MTU (TEREDO_MTU - IPV6_HEADER_SIZE - UDP_HEADER_SIZE) - -uint64 -utp_default_get_udp_mtu(utp_callback_arguments *args) -{ - // Since we don't know the local address of the interface, - // be conservative and assume all IPv6 connections are Teredo. - return (args->address->sa_family == AF_INET6) ? UDP_TEREDO_MTU : UDP_IPV4_MTU; -} - -uint64 -utp_default_get_udp_overhead(utp_callback_arguments *args) -{ - // Since we don't know the local address of the interface, - // be conservative and assume all IPv6 connections are Teredo. - return (args->address->sa_family == AF_INET6) ? UDP_TEREDO_OVERHEAD - : UDP_IPV4_OVERHEAD; -} - -uint64 -utp_default_get_random(ABSL_ATTRIBUTE_UNUSED utp_callback_arguments *args) -{ - return rand(); -} - -uint64 -utp_default_get_milliseconds(ABSL_ATTRIBUTE_UNUSED - utp_callback_arguments *args) -{ - return UTP_GetMilliseconds(); -} - -uint64 -utp_default_get_microseconds(ABSL_ATTRIBUTE_UNUSED - utp_callback_arguments *args) -{ - return UTP_GetMicroseconds(); -} diff --git a/libutp/utp_utils.h b/libutp/utp_utils.h deleted file mode 100644 index 7eb0c5562..000000000 --- a/libutp/utp_utils.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) 2010-2013 BitTorrent, Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -uint64 utp_default_get_udp_mtu(utp_callback_arguments *args); -uint64 utp_default_get_udp_overhead(utp_callback_arguments *args); -uint64 utp_default_get_random(utp_callback_arguments *args); -uint64 utp_default_get_milliseconds(utp_callback_arguments *args); -uint64 utp_default_get_microseconds(utp_callback_arguments *args); diff --git a/llarp/CMakeLists.txt b/llarp/CMakeLists.txt index b4157f283..264e90ed3 100644 --- a/llarp/CMakeLists.txt +++ b/llarp/CMakeLists.txt @@ -105,7 +105,7 @@ else() endif(WIN32) add_library(${PLATFORM_LIB} STATIC ${LIB_PLATFORM_SRC}) -target_link_libraries(${PLATFORM_LIB} PUBLIC ${CRYPTOGRAPHY_LIB} ${UTIL_LIB} libutp Threads::Threads ${LIBS}) +target_link_libraries(${PLATFORM_LIB} PUBLIC ${CRYPTOGRAPHY_LIB} ${UTIL_LIB} Threads::Threads ${LIBS}) if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") if(NON_PC_TARGET) @@ -247,17 +247,12 @@ set(LIB_SRC service/tag_lookup_job.cpp service/tag.cpp service/vanity.cpp - utp/inbound_message.cpp - utp/linklayer.cpp - utp/session.cpp - utp/utp.cpp ) if(TESTNET) set(LIB_SRC ${LIB_SRC} testnet.c) endif() add_library(${STATIC_LIB} STATIC ${LIB_SRC}) -set(LIBS ${LIBS} libutp) target_link_libraries(${STATIC_LIB} PUBLIC cxxopts ${ABYSS_LIB} ${PLATFORM_LIB} ${UTIL_LIB} ${CRYPTOGRAPHY_LIB} ${FS_LIB}) if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") diff --git a/llarp/link/factory.cpp b/llarp/link/factory.cpp index 734e7b1ef..41785e2ac 100644 --- a/llarp/link/factory.cpp +++ b/llarp/link/factory.cpp @@ -1,14 +1,11 @@ #include #include -#include namespace llarp { LinkFactory::LinkType LinkFactory::TypeFromName(string_view str) { - if(str == "utp") - return LinkType::eLinkUTP; if(str == "iwp") return LinkType::eLinkIWP; if(str == "mempipe") @@ -21,8 +18,6 @@ namespace llarp { switch(tp) { - case LinkType::eLinkUTP: - return "utp"; case LinkType::eLinkIWP: return "iwp"; case LinkType::eLinkMempipe: @@ -37,10 +32,6 @@ namespace llarp { switch(tp) { - case LinkType::eLinkUTP: - if(permitInbound) - return llarp::utp::NewInboundLink; - return llarp::utp::NewOutboundLink; case LinkType::eLinkIWP: if(permitInbound) return llarp::iwp::NewInboundLink; diff --git a/llarp/router/router.cpp b/llarp/router/router.cpp index e07722185..315eeb805 100644 --- a/llarp/router/router.cpp +++ b/llarp/router/router.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff --git a/llarp/utp/inbound_message.cpp b/llarp/utp/inbound_message.cpp deleted file mode 100644 index a86eb9096..000000000 --- a/llarp/utp/inbound_message.cpp +++ /dev/null @@ -1,27 +0,0 @@ -#include - -#include - -namespace llarp -{ - namespace utp - { - bool - InboundMessage::IsExpired(llarp_time_t now) const - { - return now > lastActive && now - lastActive >= 2000; - } - - bool - InboundMessage::AppendData(const byte_t* ptr, uint16_t sz) - { - if(buffer.size_left() < sz) - return false; - std::copy_n(ptr, sz, buffer.cur); - buffer.cur += sz; - return true; - } - - } // namespace utp - -} // namespace llarp diff --git a/llarp/utp/inbound_message.hpp b/llarp/utp/inbound_message.hpp deleted file mode 100644 index 0bcf69757..000000000 --- a/llarp/utp/inbound_message.hpp +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef LLARP_UTP_INBOUND_MESSAGE_HPP -#define LLARP_UTP_INBOUND_MESSAGE_HPP - -#include -#include -#include - -#include // for uint32 -#include - -namespace llarp -{ - namespace utp - { - /// size of keyed hash - constexpr size_t FragmentHashSize = 32; - /// size of outer nonce - constexpr size_t FragmentNonceSize = 32; - /// size of outer overhead - constexpr size_t FragmentOverheadSize = - FragmentHashSize + FragmentNonceSize; - /// max fragment payload size - constexpr size_t FragmentBodyPayloadSize = 512; - /// size of inner nonce - constexpr size_t FragmentBodyNonceSize = 24; - /// size of fragment body overhead - constexpr size_t FragmentBodyOverhead = FragmentBodyNonceSize - + sizeof(uint32) + sizeof(uint16_t) + sizeof(uint16_t); - /// size of fragment body - constexpr size_t FragmentBodySize = - FragmentBodyOverhead + FragmentBodyPayloadSize; - /// size of fragment - constexpr size_t FragmentBufferSize = - FragmentOverheadSize + FragmentBodySize; - - static_assert(FragmentBufferSize == 608, "Fragment Buffer Size is not 608"); - - /// buffer for a single utp fragment - using FragmentBuffer = AlignedBuffer< FragmentBufferSize >; - - /// buffer for a link layer message - using MessageBuffer = AlignedBuffer< MAX_LINK_MSG_SIZE >; - - /// pending inbound message being received - struct InboundMessage - { - /// timestamp of last activity - llarp_time_t lastActive{0}; - /// the underlying message buffer - MessageBuffer _msg; - - /// for accessing message buffer - llarp_buffer_t buffer; - - /// return true if this inbound message can be removed due to expiration - bool - IsExpired(llarp_time_t now) const; - - /// append data at ptr of size sz bytes to message buffer - /// increment current position - /// return false if we don't have enough room - /// return true on success - bool - AppendData(const byte_t* ptr, uint16_t sz); - - InboundMessage() : _msg(), buffer(_msg) - { - } - - InboundMessage(const InboundMessage& other) - : lastActive(other.lastActive), _msg(other._msg), buffer(_msg) - { - } - }; - - inline bool - operator==(const InboundMessage& lhs, const InboundMessage& rhs) - { - return lhs.buffer.base == rhs.buffer.base; - } - - } // namespace utp - -} // namespace llarp - -#endif diff --git a/llarp/utp/linklayer.cpp b/llarp/utp/linklayer.cpp deleted file mode 100644 index b0b589fc5..000000000 --- a/llarp/utp/linklayer.cpp +++ /dev/null @@ -1,341 +0,0 @@ -#include - -#include - -#ifdef __linux__ -#include -#include -#endif - -#ifdef _WIN32 -#include -#include -#include -#endif - -#ifndef IP_DONTFRAGMENT -#define IP_DONTFRAGMENT IP_DONTFRAG -#endif - -#include -#include - -namespace llarp -{ - namespace utp - { - uint64 - LinkLayer::OnConnect(utp_callback_arguments* arg) - { - auto* l = - static_cast< LinkLayer* >(utp_context_get_userdata(arg->context)); - auto* session = static_cast< Session* >(utp_get_userdata(arg->socket)); - if(session && l) - session->OutboundLinkEstablished(l); - return 0; - } - - uint64 - LinkLayer::SendTo(utp_callback_arguments* arg) - { - auto* l = - static_cast< LinkLayer* >(utp_context_get_userdata(arg->context)); - if(l == nullptr) - return 0; - LogDebug("utp_sendto ", Addr(*arg->address), " ", arg->len, " bytes"); - return l->m_udp.sendto(&l->m_udp, arg->address, arg->buf, arg->len); - } - - uint64 - LinkLayer::OnError(utp_callback_arguments* arg) - { - auto* session = static_cast< Session* >(utp_get_userdata(arg->socket)); - - auto* link = - static_cast< LinkLayer* >(utp_context_get_userdata(arg->context)); - - if(session && link) - { - link->HandleTimeout(session); - session->Close(); - } - return 0; - } - - uint64 - LinkLayer::OnLog(utp_callback_arguments* arg) - { - LogDebug(arg->buf); - return 0; - } - - LinkLayer::LinkLayer(const SecretKey& routerEncSecret, GetRCFunc getrc, - LinkMessageHandler h, SignBufferFunc sign, - SessionEstablishedHandler established, - SessionRenegotiateHandler reneg, - TimeoutHandler timeout, SessionClosedHandler closed, - bool permitInbound) - : ILinkLayer(routerEncSecret, getrc, h, sign, established, reneg, - timeout, closed) - { - _utp_ctx = utp_init(2); - utp_context_set_userdata(_utp_ctx, this); - utp_set_callback(_utp_ctx, UTP_SENDTO, &LinkLayer::SendTo); - if(permitInbound) - utp_set_callback(_utp_ctx, UTP_ON_ACCEPT, &LinkLayer::OnAccept); - utp_set_callback(_utp_ctx, UTP_ON_CONNECT, &LinkLayer::OnConnect); - utp_set_callback(_utp_ctx, UTP_ON_STATE_CHANGE, - &LinkLayer::OnStateChange); - utp_set_callback(_utp_ctx, UTP_ON_READ, &LinkLayer::OnRead); - utp_set_callback(_utp_ctx, UTP_ON_ERROR, &LinkLayer::OnError); - utp_set_callback(_utp_ctx, UTP_LOG, &LinkLayer::OnLog); - utp_context_set_option(_utp_ctx, UTP_LOG_NORMAL, 1); - utp_context_set_option(_utp_ctx, UTP_LOG_MTU, 1); - utp_context_set_option(_utp_ctx, UTP_LOG_DEBUG, 1); - utp_context_set_option( - _utp_ctx, UTP_SNDBUF, - (MAX_LINK_MSG_SIZE * MaxSendQueueSize * size_t{3}) / size_t{2}); - utp_context_set_option( - _utp_ctx, UTP_RCVBUF, - (MAX_LINK_MSG_SIZE * MaxSendQueueSize * size_t{3}) / size_t{2}); - } - - LinkLayer::~LinkLayer() - { - m_Pending.clear(); - m_AuthedLinks.clear(); - utp_destroy(_utp_ctx); - } - - uint16_t - LinkLayer::Rank() const - { - return 1; - } - - void - LinkLayer::RecvFrom(const Addr& from, const void* buf, size_t sz) - { - utp_process_udp(_utp_ctx, (const byte_t*)buf, sz, from, from.SockLen()); - } - -#ifdef __linux__ - - void - LinkLayer::ProcessICMP() - { -#ifndef TESTNET - do - { - byte_t vec_buf[4096], ancillary_buf[4096]; - struct iovec iov = {vec_buf, sizeof(vec_buf)}; - struct sockaddr_in remote; - struct msghdr msg; - ssize_t len; - struct cmsghdr* cmsg; - struct sock_extended_err* e; - struct sockaddr* icmp_addr; - struct sockaddr_in* icmp_sin; - - memset(&msg, 0, sizeof(msg)); - - msg.msg_name = &remote; - msg.msg_namelen = sizeof(remote); - msg.msg_iov = &iov; - msg.msg_iovlen = 1; - msg.msg_flags = 0; - msg.msg_control = ancillary_buf; - msg.msg_controllen = sizeof(ancillary_buf); - - len = recvmsg(m_udp.fd, &msg, MSG_ERRQUEUE | MSG_DONTWAIT); - if(len < 0) - { - if(errno == EAGAIN || errno == EWOULDBLOCK) - errno = 0; - else - LogError("failed to read icmp for utp ", strerror(errno)); - return; - } - - for(cmsg = CMSG_FIRSTHDR(&msg); cmsg; cmsg = CMSG_NXTHDR(&msg, cmsg)) - { - if(cmsg->cmsg_type != IP_RECVERR) - { - continue; - } - if(cmsg->cmsg_level != SOL_IP) - { - continue; - } - e = (struct sock_extended_err*)CMSG_DATA(cmsg); - if(!e) - continue; - if(e->ee_origin != SO_EE_ORIGIN_ICMP) - { - continue; - } - icmp_addr = (struct sockaddr*)SO_EE_OFFENDER(e); - icmp_sin = (struct sockaddr_in*)icmp_addr; - if(icmp_sin->sin_port != 0) - { - continue; - } - if(e->ee_type == 3 && e->ee_code == 4) - { - utp_process_icmp_fragmentation(_utp_ctx, vec_buf, len, - (struct sockaddr*)&remote, - sizeof(remote), e->ee_info); - } - else - { - utp_process_icmp_error(_utp_ctx, vec_buf, len, - (struct sockaddr*)&remote, sizeof(remote)); - } - } - } while(true); -#endif - } -#endif - - void - LinkLayer::Pump() - { -#ifdef __linux__ - ProcessICMP(); -#endif - utp_issue_deferred_acks(_utp_ctx); - std::set< RouterID > sessions; - { - Lock l(&m_AuthedLinksMutex); - auto itr = m_AuthedLinks.begin(); - while(itr != m_AuthedLinks.end()) - { - sessions.insert(itr->first); - ++itr; - } - } - ILinkLayer::Pump(); - { - Lock l(&m_AuthedLinksMutex); - for(const auto& pk : sessions) - { - if(m_AuthedLinks.count(pk) == 0) - { - // all sessions were removed - SessionClosed(pk); - } - } - } - } - - void - LinkLayer::Stop() - { - ForEachSession([](ILinkSession* s) { s->Close(); }); - } - - bool - LinkLayer::KeyGen(SecretKey& k) - { - CryptoManager::instance()->encryption_keygen(k); - return true; - } - - void - LinkLayer::Tick(llarp_time_t now) - { - utp_check_timeouts(_utp_ctx); - ILinkLayer::Tick(now); - } - - utp_socket* - LinkLayer::NewSocket() - { - return utp_create_socket(_utp_ctx); - } - - const char* - LinkLayer::Name() const - { - return "utp"; - } - - std::shared_ptr< ILinkSession > - LinkLayer::NewOutboundSession(const RouterContact& rc, - const AddressInfo& addr) - { - return std::make_shared< OutboundSession >(this, NewSocket(), rc, addr); - } - - uint64 - LinkLayer::OnRead(utp_callback_arguments* arg) - { - auto* self = static_cast< Session* >(utp_get_userdata(arg->socket)); - - if(self) - { - if(self->state == Session::eClose) - { - return 0; - } - if(!self->Recv(arg->buf, arg->len)) - { - LogDebug("recv fail for ", self->remoteAddr); - self->Close(); - return 0; - } - utp_read_drained(arg->socket); - } - else - { - LogWarn("utp_socket got data with no underlying session"); - utp_close(arg->socket); - } - return 0; - } - - uint64 - LinkLayer::OnStateChange(utp_callback_arguments* arg) - { - auto* session = static_cast< Session* >(utp_get_userdata(arg->socket)); - if(session) - { - if(arg->state == UTP_STATE_WRITABLE) - { - session->Pump(); - } - else if(arg->state == UTP_STATE_EOF) - { - LogDebug("got eof from ", session->remoteAddr); - session->Close(); - } - } - return 0; - } - - uint64 - LinkLayer::OnAccept(utp_callback_arguments* arg) - { - auto* self = - static_cast< LinkLayer* >(utp_context_get_userdata(arg->context)); - Addr remote(*arg->address); - - std::shared_ptr< ILinkSession > session = - std::make_shared< InboundSession >(self, arg->socket, remote); - if(!self->PutSession(session)) - { - LogWarn("dropping inbound utp session from ", remote); - // close later - self->m_Logic->call_later(50, [=]() { session->Close(); }); - } - else - { - LogDebug("utp accepted from ", remote); - session->OnLinkEstablished(self); - } - return 0; - } - - } // namespace utp - -} // namespace llarp diff --git a/llarp/utp/linklayer.hpp b/llarp/utp/linklayer.hpp deleted file mode 100644 index cf74df8a5..000000000 --- a/llarp/utp/linklayer.hpp +++ /dev/null @@ -1,105 +0,0 @@ -#ifndef LLARP_UTP_LINKLAYER_HPP -#define LLARP_UTP_LINKLAYER_HPP - -#include - -#include -#include -#include -#include - -#include - -namespace llarp -{ - namespace utp - { - struct LinkLayer final : public ILinkLayer - { - utp_context* _utp_ctx = nullptr; - - // low level read callback - static uint64 - OnRead(utp_callback_arguments* arg); - - // low level sendto callback - static uint64 - SendTo(utp_callback_arguments* arg); - - /// error callback - static uint64 - OnError(utp_callback_arguments* arg); - - /// state change callback - static uint64 - OnStateChange(utp_callback_arguments*); - - static uint64 - OnConnect(utp_callback_arguments*); - - /// accept callback - static uint64 - OnAccept(utp_callback_arguments*); - - /// logger callback - static uint64 - OnLog(utp_callback_arguments* arg); - - /// construct - LinkLayer(const SecretKey& routerEncSecret, GetRCFunc getrc, - LinkMessageHandler h, SignBufferFunc sign, - SessionEstablishedHandler established, - SessionRenegotiateHandler reneg, TimeoutHandler timeout, - SessionClosedHandler closed, bool acceptInbound); - - /// destruct - ~LinkLayer() override; - - /// get AI rank - uint16_t - Rank() const override; - - /// handle low level recv - void - RecvFrom(const Addr& from, const void* buf, size_t sz) override; - -#ifdef __linux__ - /// process ICMP stuff on linux - void - ProcessICMP(); -#endif - - /// pump sessions - void - Pump() override; - - /// stop link layer - void - Stop() override; - - /// regenerate transport keypair - bool - KeyGen(SecretKey& k) override; - - /// do tick - void - Tick(llarp_time_t now); - - /// create new outbound session - std::shared_ptr< ILinkSession > - NewOutboundSession(const RouterContact& rc, - const AddressInfo& addr) override; - - /// create new socket - utp_socket* - NewSocket(); - - /// get ai name - const char* - Name() const override; - }; - - } // namespace utp -} // namespace llarp - -#endif diff --git a/llarp/utp/session.cpp b/llarp/utp/session.cpp deleted file mode 100644 index 8c48383af..000000000 --- a/llarp/utp/session.cpp +++ /dev/null @@ -1,810 +0,0 @@ -#include - -#include -#include -#include -#include -#include - -namespace llarp -{ - namespace utp - { - void - Session::OnLinkEstablished(ILinkLayer* p) - { - parent = p; - EnterState(eLinkEstablished); - LogDebug("link established with ", remoteAddr); - } - - /// pump tx queue - void - Session::PumpWrite(size_t numSend) - { - if(!sock) - return; - ssize_t expect = 0; - std::vector< utp_iovec > send; - - for(const auto& msg : sendq) - { - for(const auto& vec : msg.vecs) - { - if(vec.iov_len > 0) - { - expect += vec.iov_len; - send.emplace_back(vec); - numSend--; - } - } - } - if(expect) - { - ssize_t s = utp_writev(sock, send.data(), send.size()); - if(s <= 0) - return; - lastSend = parent->Now(); - - metrics::integerTick("utp.session.tx", "writes", s, "id", - RouterID(remoteRC.pubkey).ToString()); - m_TXRate += s; - size_t sz = s; - do - { - auto& msg = sendq.front(); - while(msg.vecs.size() > 0 && sz >= msg.vecs.front().iov_len) - { - sz -= msg.vecs.front().iov_len; - msg.vecs.pop_front(); - } - if(msg.vecs.size() == 0) - { - msg.Delivered(); - sendq.pop_front(); - } - else if(sz) - { - auto& front = msg.vecs.front(); - front.iov_len -= sz; - front.iov_base = ((byte_t*)front.iov_base) + sz; - return; - } - else - return; - } while(sendq.size()); - } - } - - /// prune expired inbound messages - void - Session::PruneInboundMessages(llarp_time_t now) - { - auto itr = m_RecvMsgs.begin(); - while(itr != m_RecvMsgs.end()) - { - if(itr->second.IsExpired(now)) - { - itr = m_RecvMsgs.erase(itr); - } - else - ++itr; - } - } - - void - Session::OutboundLinkEstablished(LinkLayer* p) - { - OnLinkEstablished(p); - metrics::integerTick("utp.session.open", "to", 1, "id", - RouterID(remoteRC.pubkey).ToString()); - OutboundHandshake(); - } - - template < bool (Crypto::*dh_func)(SharedSecret&, const PubKey&, - const SecretKey&, const TunnelNonce&) > - bool - Session::DoKeyExchange(SharedSecret& K, const KeyExchangeNonce& n, - const PubKey& other, const SecretKey& secret) - { - ShortHash t_h; - static constexpr size_t TMP_SIZE = 64; - static_assert(SharedSecret::SIZE + KeyExchangeNonce::SIZE == TMP_SIZE, - "Invalid sizes"); - - AlignedBuffer< TMP_SIZE > tmp; - std::copy(K.begin(), K.end(), tmp.begin()); - std::copy(n.begin(), n.end(), tmp.begin() + K.size()); - // t_h = HS(K + L.n) - if(!CryptoManager::instance()->shorthash(t_h, llarp_buffer_t(tmp))) - { - LogError("failed to mix key to ", remoteAddr); - return false; - } - - // K = TKE(a.p, B_a.e, sk, t_h) - if(!(CryptoManager::instance()->*dh_func)(K, other, secret, t_h)) - { - LogError("key exchange with ", other, " failed"); - return false; - } - LogDebug("keys mixed with session to ", remoteAddr); - return true; - } - - bool - Session::MutateKey(SharedSecret& K, const AlignedBuffer< 24 >& A) - { - AlignedBuffer< 56 > tmp; - llarp_buffer_t buf{tmp}; - std::copy(K.begin(), K.end(), buf.cur); - buf.cur += K.size(); - std::copy(A.begin(), A.end(), buf.cur); - buf.cur = buf.base; - return CryptoManager::instance()->shorthash(K, buf); - } - - void - Session::Tick(llarp_time_t now) - { - PruneInboundMessages(now); - // ensure that this section is called every 1s or so - if(now > m_LastTick && now - m_LastTick >= 1000) - { - m_TXRate = 0; - m_RXRate = 0; - metrics::integerTick("utp.session.sendq", "size", sendq.size(), "id", - RouterID(remoteRC.pubkey).ToString()); - m_LastTick = now; - } - else - { - // try sending 1 segment - PumpWrite(1); - } - } - - /// low level read - bool - Session::Recv(const byte_t* buf, size_t sz) - { - // mark we are alive - Alive(); - m_RXRate += sz; - size_t s = sz; - metrics::integerTick("utp.session.rx", "size", s, "id", - RouterID(remoteRC.pubkey).ToString()); - // process leftovers - if(recvBufOffset) - { - auto left = FragmentBufferSize - recvBufOffset; - if(s >= left) - { - // yes it fills it - LogDebug("process leftovers, offset=", recvBufOffset, " sz=", s, - " left=", left); - std::copy(buf, buf + left, recvBuf.begin() + recvBufOffset); - s -= left; - recvBufOffset = 0; - buf += left; - if(!VerifyThenDecrypt(recvBuf.data())) - return false; - } - } - // process full fragments - while(s >= FragmentBufferSize) - { - recvBufOffset = 0; - LogDebug("process full sz=", s); - if(!VerifyThenDecrypt(buf)) - return false; - buf += FragmentBufferSize; - s -= FragmentBufferSize; - } - if(s) - { - // hold onto leftovers - LogDebug("leftovers sz=", s); - std::copy(buf, buf + s, recvBuf.begin() + recvBufOffset); - recvBufOffset += s; - } - return true; - } - - bool - Session::TimedOut(llarp_time_t now) const - { - if(state == eClose) - return true; - if(state == eConnecting) - return now - lastActive > 5000; - if(state == eSessionReady) - { - const bool remoteIsSNode = remoteRC.IsPublicRouter(); - const bool weAreSnode = parent->GetOurRC().IsPublicRouter(); - const bool recvTimeout = - (now > lastActive) && now - lastActive > sessionTimeout; - const bool sendTimeout = - (now > lastSend) && now - lastSend > sessionTimeout; - if(remoteIsSNode && weAreSnode) - { - /// for s2s connections only check write direction - return sendTimeout; - } - else if(weAreSnode) - { - // for edge connection as service node check either direction for - // timeout - return recvTimeout || sendTimeout; - } - else - { - /// for edge connections as client we check if both directions have - /// been silent for 60s - return recvTimeout && sendTimeout; - } - } - if(state == eLinkEstablished) - return now - lastActive - > 10000; /// 10 second timeout for the whole handshake - return true; - } - - PubKey - Session::GetPubKey() const - { - return remoteRC.pubkey; - } - - Addr - Session::GetRemoteEndpoint() const - { - return remoteAddr; - } - - /// base constructor - Session::Session(LinkLayer* p) - { - state = eInitial; - m_NextTXMsgID = 0; - m_NextRXMsgID = 0; - parent = p; - remoteTransportPubKey.Zero(); - - gotLIM = false; - recvBufOffset = 0; - - lastActive = parent->Now(); - } - - bool - Session::ShouldPing() const - { - if(state != eSessionReady) - return false; - const auto dlt = parent->Now() - lastSend; - return dlt >= 10000; - } - - ILinkLayer* - Session::GetLinkLayer() const - { - return parent; - } - - void - Session::Pump() - { - if(sendq.size() > (MaxSendQueueSize / 4)) - PumpWrite(sendq.size() / 2); - else - PumpWrite(sendq.size()); - // prune inbound messages - PruneInboundMessages(parent->Now()); - } - - bool - Session::SendMessageBuffer( - const llarp_buffer_t& buf, - ILinkSession::CompletionHandler completionHandler) - { - if(SendQueueBacklog() >= MaxSendQueueSize) - { - // pump write queue if we seem to be full - PumpWrite(MaxSendQueueSize / 2); - } - if(SendQueueBacklog() >= MaxSendQueueSize) - { - // we didn't pump anything wtf - // this means we're stalled - return false; - } - size_t sz = buf.sz; - byte_t* ptr = buf.base; - uint32_t msgid = m_NextTXMsgID++; - sendq.emplace_back(msgid, completionHandler); - while(sz) - { - uint32_t s = std::min(FragmentBodyPayloadSize, sz); - if(!EncryptThenHash(ptr, msgid, s, sz - s)) - { - LogError("EncryptThenHash failed?!"); - Close(); - return false; - } - LogDebug("encrypted ", s, " bytes"); - ptr += s; - sz -= s; - } - if(state != eSessionReady) - PumpWrite(sendq.size()); - return true; - } - - bool - Session::SendKeepAlive() - { - if(ShouldPing()) - { - DiscardMessage msg; - std::array< byte_t, 128 > tmp; - llarp_buffer_t buf(tmp); - if(!msg.BEncode(&buf)) - return false; - buf.sz = buf.cur - buf.base; - buf.cur = buf.base; - return this->SendMessageBuffer(buf, nullptr); - } - return true; - } - - void - Session::OutboundHandshake() - { - std::array< byte_t, LinkIntroMessage::MaxSize > tmp; - llarp_buffer_t buf(tmp); - // build our RC - LinkIntroMessage msg; - msg.rc = parent->GetOurRC(); - if(!msg.rc.Verify(parent->Now())) - { - LogError("our RC is invalid? closing session to", remoteAddr); - Close(); - return; - } - msg.N.Randomize(); - msg.P = DefaultLinkSessionLifetime; - if(!msg.Sign(parent->Sign)) - { - LogError("failed to sign LIM for outbound handshake to ", remoteAddr); - Close(); - return; - } - // encode - if(!msg.BEncode(&buf)) - { - LogError("failed to encode LIM for handshake to ", remoteAddr); - Close(); - return; - } - // rewind - buf.sz = buf.cur - buf.base; - buf.cur = buf.base; - // send - if(!SendMessageBuffer(buf, nullptr)) - { - LogError("failed to send handshake to ", remoteAddr); - Close(); - return; - } - - if(!DoClientKeyExchange(txKey, msg.N, remoteTransportPubKey, - parent->RouterEncryptionSecret())) - { - LogError("failed to mix keys for outbound session to ", remoteAddr); - Close(); - return; - } - } - - Session::~Session() - { - if(sock) - { - utp_set_userdata(sock, nullptr); - sock = nullptr; - } - } - - bool - Session::EncryptThenHash(const byte_t* ptr, uint32_t msgid, uint16_t length, - uint16_t remaining) - - { - auto& msg = sendq.back(); - msg.vecs.emplace_back(); - auto& vec = msg.vecs.back(); - msg.fragments.emplace_back(); - auto& buf = msg.fragments.back(); - vec.iov_base = buf.data(); - vec.iov_len = FragmentBufferSize; - buf.Randomize(); - byte_t* noncePtr = buf.data() + FragmentHashSize; - byte_t* body = noncePtr + FragmentNonceSize; - byte_t* base = body; - AlignedBuffer< 24 > A(base); - // skip inner nonce - body += A.size(); - // put msgid - htobe32buf(body, msgid); - body += sizeof(uint32_t); - // put length - htobe16buf(body, length); - body += sizeof(uint16_t); - // put remaining - htobe16buf(body, remaining); - body += sizeof(uint16_t); - // put body - memcpy(body, ptr, length); - - llarp_buffer_t payload(base, base, - FragmentBufferSize - FragmentOverheadSize); - - TunnelNonce nonce(noncePtr); - - // encrypt - if(!CryptoManager::instance()->xchacha20(payload, txKey, nonce)) - return false; - - payload.base = noncePtr; - payload.cur = payload.base; - payload.sz = FragmentBufferSize - FragmentHashSize; - // key'd hash - if(!CryptoManager::instance()->hmac(buf.data(), payload, txKey)) - return false; - return MutateKey(txKey, A); - } - - void - Session::EnterState(State st) - { - state = st; - if(st != eClose) - { - Alive(); - } - if(st == eSessionReady) - { - parent->MapAddr(remoteRC.pubkey.as_array(), this); - if(!parent->SessionEstablished(this)) - Close(); - } - } - - util::StatusObject - Session::ExtractStatus() const - { - return {{"client", !remoteRC.IsPublicRouter()}, - {"sendBacklog", uint64_t(SendQueueBacklog())}, - {"tx", m_TXRate}, - {"rx", m_RXRate}, - {"remoteAddr", remoteAddr.ToString()}, - {"pubkey", remoteRC.pubkey.ToHex()}}; - } - - bool - Session::GotSessionRenegotiate(const LinkIntroMessage* msg) - { - // check with parent and possibly process and store new rc - if(!parent->SessionRenegotiate(msg->rc, remoteRC)) - { - // failed to renegotiate - Close(); - return false; - } - // set remote rc - remoteRC = msg->rc; - // recalculate rx key - return DoServerKeyExchange(rxKey, msg->N, remoteRC.enckey, - parent->RouterEncryptionSecret()); - } - - bool - Session::RenegotiateSession() - { - LinkIntroMessage lim; - lim.rc = parent->GetOurRC(); - lim.N.Randomize(); - lim.P = 60 * 1000 * 10; - if(!lim.Sign(parent->Sign)) - return false; - - std::array< byte_t, LinkIntroMessage::MaxSize > tmp; - llarp_buffer_t buf(tmp); - if(!lim.BEncode(&buf)) - return false; - // rewind and resize buffer - buf.sz = buf.cur - buf.base; - buf.cur = buf.base; - // send message - if(!SendMessageBuffer(buf, nullptr)) - return false; - // regen our tx Key - return DoClientKeyExchange(txKey, lim.N, remoteRC.enckey, - parent->RouterEncryptionSecret()); - } - - bool - Session::VerifyThenDecrypt(const byte_t* ptr) - { - LogDebug("verify then decrypt ", remoteAddr); - ShortHash digest; - - llarp_buffer_t hbuf(ptr + FragmentHashSize, - FragmentBufferSize - FragmentHashSize); - if(!CryptoManager::instance()->hmac(digest.data(), hbuf, rxKey)) - { - LogError("keyed hash failed"); - return false; - } - const ShortHash expected(ptr); - if(expected != digest) - { - LogError("Message Integrity Failed: got ", digest, " from ", remoteAddr, - " instead of ", expected); - Close(); - return false; - } - - llarp_buffer_t in(ptr + FragmentOverheadSize, - FragmentBufferSize - FragmentOverheadSize); - - llarp_buffer_t out(rxFragBody); - - // decrypt - if(!CryptoManager::instance()->xchacha20_alt(out, in, rxKey, - ptr + FragmentHashSize)) - { - LogError("failed to decrypt message from ", remoteAddr); - return false; - } - // get inner nonce - AlignedBuffer< 24 > A(out.base); - // advance buffer - out.cur += A.size(); - // read msgid - uint32_t msgid; - if(!out.read_uint32(msgid)) - { - LogError("failed to read msgid"); - return false; - } - // read length and remaining - uint16_t length, remaining; - if(!(out.read_uint16(length) && out.read_uint16(remaining))) - { - LogError("failed to read the rest of the header"); - return false; - } - if(length > (out.sz - (out.cur - out.base))) - { - // too big length - LogError("fragment body too big"); - return false; - } - if(msgid < m_NextRXMsgID) - return false; - m_NextRXMsgID = msgid; - - // get message - if(m_RecvMsgs.find(msgid) == m_RecvMsgs.end()) - { - m_RecvMsgs.emplace(msgid, InboundMessage()); - } - - auto itr = m_RecvMsgs.find(msgid); - // add message activity - itr->second.lastActive = parent->Now(); - // append data - if(!itr->second.AppendData(out.cur, length)) - { - LogError("inbound buffer is full"); - m_RecvMsgs.erase(itr); - return false; // not enough room - } - // mutate key - if(!MutateKey(rxKey, A)) - { - LogError("failed to mutate rx key"); - return false; - } - - if(remaining == 0) - { - ManagedBuffer buf{itr->second.buffer}; - // resize - buf.underlying.sz = buf.underlying.cur - buf.underlying.base; - // rewind - buf.underlying.cur = buf.underlying.base; - // process buffer - LogDebug("got message ", msgid, " from ", remoteAddr); - parent->HandleMessage(this, buf.underlying); - m_RecvMsgs.erase(itr); - } - return true; - } - - void - Session::Close() - { - if(state != eClose) - { - if(sock) - { - if(state == eLinkEstablished || state == eSessionReady) - { - // only call shutdown when we are actually connected - utp_shutdown(sock, SHUT_RDWR); - } - utp_close(sock); - utp_set_userdata(sock, nullptr); - sock = nullptr; - LogDebug("utp_close ", remoteAddr); - if(remoteRC.IsPublicRouter()) - { - metrics::integerTick("utp.session.close", "to", 1, "id", - RouterID(remoteRC.pubkey).ToString()); - } - // discard sendq - // TODO: retry on another session ? - while(sendq.size()) - { - sendq.front().Dropped(); - sendq.pop_front(); - } - } - } - EnterState(eClose); - } - - void - Session::Alive() - { - lastActive = parent->Now(); - } - - InboundSession::InboundSession(LinkLayer* p, utp_socket* s, - const Addr& addr) - : Session(p) - { - sock = s; - remoteAddr = addr; - RouterID rid = p->GetOurRC().pubkey; - CryptoManager::instance()->shorthash(rxKey, llarp_buffer_t(rid)); - remoteRC.Clear(); - - ABSL_ATTRIBUTE_UNUSED void* res = utp_set_userdata(sock, this); - assert(res == this); - assert(s == sock); - GotLIM = util::memFn(&InboundSession::InboundLIM, this); - } - - bool - InboundSession::InboundLIM(const LinkIntroMessage* msg) - { - if(gotLIM && remoteRC.pubkey != msg->rc.pubkey) - { - Close(); - return false; - } - if(!gotLIM) - { - remoteRC = msg->rc; - CryptoManager::instance()->shorthash(txKey, - llarp_buffer_t(remoteRC.pubkey)); - - if(!DoServerKeyExchange(rxKey, msg->N, remoteRC.enckey, - parent->TransportSecretKey())) - return false; - - std::array< byte_t, LinkIntroMessage::MaxSize > tmp; - llarp_buffer_t buf(tmp); - LinkIntroMessage replymsg; - replymsg.rc = parent->GetOurRC(); - if(!replymsg.rc.Verify(parent->Now())) - { - LogError("our RC is invalid? closing session to", remoteAddr); - Close(); - return false; - } - replymsg.N.Randomize(); - replymsg.P = DefaultLinkSessionLifetime; - if(!replymsg.Sign(parent->Sign)) - { - LogError("failed to sign LIM for inbound handshake from ", - remoteAddr); - Close(); - return false; - } - // encode - if(!replymsg.BEncode(&buf)) - { - LogError("failed to encode LIM for handshake from ", remoteAddr); - Close(); - return false; - } - // rewind - buf.sz = buf.cur - buf.base; - buf.cur = buf.base; - // send - if(!SendMessageBuffer(buf, nullptr)) - { - LogError("failed to repl to handshake from ", remoteAddr); - Close(); - return false; - } - if(!DoClientKeyExchange(txKey, replymsg.N, remoteRC.enckey, - parent->RouterEncryptionSecret())) - - return false; - LogDebug("Sent reply LIM"); - gotLIM = true; - EnterState(eSessionReady); - /// future LIM are used for session renegotiation - GotLIM = util::memFn(&Session::GotSessionRenegotiate, this); - } - return true; - } - - OutboundSession::OutboundSession(LinkLayer* p, utp_socket* s, - const RouterContact& rc, - const AddressInfo& addr) - : Session(p) - { - remoteTransportPubKey = addr.pubkey; - remoteRC = rc; - sock = s; - remoteAddr = addr; - - RouterID rid = remoteRC.pubkey; - CryptoManager::instance()->shorthash(txKey, llarp_buffer_t(rid)); - rid = p->GetOurRC().pubkey; - CryptoManager::instance()->shorthash(rxKey, llarp_buffer_t(rid)); - - ABSL_ATTRIBUTE_UNUSED void* res = utp_set_userdata(sock, this); - assert(res == this); - assert(s == sock); - - GotLIM = util::memFn(&OutboundSession::OutboundLIM, this); - } - - void - OutboundSession::Start() - { - utp_connect(sock, remoteAddr, remoteAddr.SockLen()); - EnterState(eConnecting); - } - - bool - OutboundSession::OutboundLIM(const LinkIntroMessage* msg) - { - if(gotLIM && remoteRC.pubkey != msg->rc.pubkey) - { - return false; - } - remoteRC = msg->rc; - gotLIM = true; - - if(!DoServerKeyExchange(rxKey, msg->N, remoteRC.enckey, - parent->RouterEncryptionSecret())) - { - Close(); - return false; - } - /// future LIM are used for session renegotiation - GotLIM = util::memFn(&Session::GotSessionRenegotiate, this); - EnterState(eSessionReady); - return true; - } - } // namespace utp -} // namespace llarp diff --git a/llarp/utp/session.hpp b/llarp/utp/session.hpp deleted file mode 100644 index a275a64db..000000000 --- a/llarp/utp/session.hpp +++ /dev/null @@ -1,301 +0,0 @@ -#ifndef LLARP_UTP_SESSION_HPP -#define LLARP_UTP_SESSION_HPP - -#include -#include -#include -#include -#include - -#include - -namespace llarp -{ - namespace utp - { - struct LinkLayer; - - struct Session : public ILinkSession, - public std::enable_shared_from_this< Session > - { - /// remote router's rc - RouterContact remoteRC; - /// underlying socket - utp_socket* sock; - /// link layer parent - ILinkLayer* parent; - /// did we get a LIM from the remote yet? - bool gotLIM; - /// remote router's transport pubkey - PubKey remoteTransportPubKey; - /// remote router's transport ip - Addr remoteAddr; - /// rx session key - SharedSecret rxKey; - /// tx session key - SharedSecret txKey; - /// timestamp last active - llarp_time_t lastActive = 0; - /// timestamp last send success - llarp_time_t lastSend = 0; - /// session timeout (60s) - const static llarp_time_t sessionTimeout = DefaultLinkSessionLifetime; - - struct OutboundMessage - { - OutboundMessage(uint32_t id, CompletionHandler func) - : msgid{id}, completed{std::move(func)} - { - } - - const uint32_t msgid; - std::deque< utp_iovec > vecs; - std::deque< FragmentBuffer > fragments; - CompletionHandler completed; - - void - Dropped() - { - if(completed) - { - completed(DeliveryStatus::eDeliveryDropped); - completed = nullptr; - } - } - - void - Delivered() - { - if(completed) - { - completed(DeliveryStatus::eDeliverySuccess); - completed = nullptr; - } - } - - bool - operator<(const OutboundMessage& other) const - { - return msgid < other.msgid; - } - }; - - /// current rx fragment buffer - FragmentBuffer recvBuf; - /// current offset in current rx fragment buffer - size_t recvBufOffset; - /// rx fragment message body - AlignedBuffer< FragmentBodySize > rxFragBody; - - /// the next message id for tx - uint32_t m_NextTXMsgID; - /// the next message id for rx - uint32_t m_NextRXMsgID; - - using SendQueue_t = std::deque< OutboundMessage >; - /// messages we are currently sending - SendQueue_t sendq; - /// messages we are recving right now - std::unordered_map< uint32_t, InboundMessage > m_RecvMsgs; - /// are we stalled or nah? - bool stalled = false; - - uint64_t m_RXRate = 0; - uint64_t m_TXRate = 0; - - llarp_time_t m_LastTick = 0; - - /// mark session as alive - void - Alive(); - - util::StatusObject - ExtractStatus() const override; - - ~Session() override = 0; - - /// base - explicit Session(LinkLayer* p); - - enum State - { - eInitial, // initial state - eConnecting, // we are connecting - eLinkEstablished, // when utp connection is established - eCryptoHandshake, // crypto handshake initiated - eSessionReady, // session is ready - eClose // utp connection is closed - }; - - /// session state, call EnterState(State) to set - State state; - - /// hook for utp for when we have established a connection - void - OnLinkEstablished(ILinkLayer* p) override; - - /// switch states - void - EnterState(State st); - - /// handle LIM after handshake - bool - GotSessionRenegotiate(const LinkIntroMessage* msg); - - /// re negotiate session with our new local RC - bool - RenegotiateSession() override; - - bool - ShouldPing() const override; - - /// pump tx queue - void - PumpWrite(size_t numMessages); - - void - Pump() override; - - std::shared_ptr< ILinkSession > - BorrowSelf() override - { - return shared_from_this(); - } - - bool - SendKeepAlive() override; - - bool - IsEstablished() const override - { - return state == eSessionReady; - } - - bool - TimedOut(llarp_time_t now) const override; - - /// verify a fragment buffer and the decrypt it - /// buf is assumed to be FragmentBufferSize bytes long - bool - VerifyThenDecrypt(const byte_t* buf); - - /// encrypt a fragment then hash the ciphertext - bool - EncryptThenHash(const byte_t* ptr, uint32_t msgid, uint16_t sz, - uint16_t remain); - - /// queue a fully formed message - bool - SendMessageBuffer(const llarp_buffer_t& buf, - ILinkSession::CompletionHandler) override; - - /// prune expired inbound messages - void - PruneInboundMessages(llarp_time_t now); - - /// do low level connect - void - Connect(); - - /// handle outbound connection made - void - OutboundLinkEstablished(LinkLayer* p); - - // send first message - void - OutboundHandshake(); - - // do key exchange for handshake - template < bool (Crypto::*dh_func)(SharedSecret&, const PubKey&, - const SecretKey&, const TunnelNonce&) > - bool - DoKeyExchange(SharedSecret& K, const KeyExchangeNonce& n, - const PubKey& other, const SecretKey& secret); - - bool - DoClientKeyExchange(SharedSecret& K, const KeyExchangeNonce& n, - const PubKey& other, const SecretKey& secret) - { - return DoKeyExchange< &Crypto::transport_dh_client >(K, n, other, - secret); - } - - bool - DoServerKeyExchange(SharedSecret& K, const KeyExchangeNonce& n, - const PubKey& other, const SecretKey& secret) - { - return DoKeyExchange< &Crypto::transport_dh_server >(K, n, other, - secret); - } - - /// does K = HS(K + A) - bool - MutateKey(SharedSecret& K, const AlignedBuffer< 24 >& A); - - void - Tick(llarp_time_t now) override; - - /// close session - void - Close() override; - - /// low level read - bool - Recv(const byte_t* buf, size_t sz); - - /// get remote identity pubkey - PubKey - GetPubKey() const override; - - /// get remote address - Addr - GetRemoteEndpoint() const override; - - RouterContact - GetRemoteRC() const override - { - return remoteRC; - } - - /// get parent link - ILinkLayer* - GetLinkLayer() const override; - - void - MarkEstablished(); - - size_t - SendQueueBacklog() const override - { - return sendq.size(); - } - }; - - struct InboundSession final : public Session - { - InboundSession(LinkLayer* p, utp_socket* s, const Addr& addr); - - bool - InboundLIM(const LinkIntroMessage* msg); - - void - Start() override - { - } - }; - - struct OutboundSession final : public Session - { - OutboundSession(LinkLayer* p, utp_socket* s, const RouterContact& rc, - const AddressInfo& addr); - - bool - OutboundLIM(const LinkIntroMessage* msg); - - void - Start() override; - }; - } // namespace utp -} // namespace llarp - -#endif diff --git a/llarp/utp/utp.cpp b/llarp/utp/utp.cpp deleted file mode 100644 index ab11c79e8..000000000 --- a/llarp/utp/utp.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include - -#include -#include -#include - -namespace llarp -{ - namespace utp - { - LinkLayer_ptr - NewOutboundLink(const SecretKey& routerEncSecret, GetRCFunc getrc, - LinkMessageHandler h, SignBufferFunc sign, - SessionEstablishedHandler est, - SessionRenegotiateHandler reneg, TimeoutHandler timeout, - SessionClosedHandler closed) - { - return std::make_shared< LinkLayer >(routerEncSecret, getrc, h, sign, est, - reneg, timeout, closed, false); - } - - LinkLayer_ptr - NewInboundLink(const SecretKey& routerEncSecret, GetRCFunc getrc, - LinkMessageHandler h, SignBufferFunc sign, - SessionEstablishedHandler est, - SessionRenegotiateHandler reneg, TimeoutHandler timeout, - SessionClosedHandler closed) - { - return std::make_shared< LinkLayer >(routerEncSecret, getrc, h, sign, est, - reneg, timeout, closed, true); - } - - } // namespace utp - -} // namespace llarp diff --git a/llarp/utp/utp.hpp b/llarp/utp/utp.hpp deleted file mode 100644 index d368065e2..000000000 --- a/llarp/utp/utp.hpp +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef LLARP_UTP_UTP_HPP -#define LLARP_UTP_UTP_HPP - -#include -#include - -namespace llarp -{ - namespace utp - { - LinkLayer_ptr - NewInboundLink(const SecretKey& routerEncSecret, GetRCFunc getrc, - LinkMessageHandler h, SignBufferFunc sign, - SessionEstablishedHandler est, - SessionRenegotiateHandler reneg, TimeoutHandler timeout, - SessionClosedHandler closed); - LinkLayer_ptr - NewOutboundLink(const SecretKey& routerEncSecret, GetRCFunc getrc, - LinkMessageHandler h, SignBufferFunc sign, - SessionEstablishedHandler est, - SessionRenegotiateHandler reneg, TimeoutHandler timeout, - SessionClosedHandler closed); - /// shim - const auto NewServer = NewInboundLink; - } // namespace utp -} // namespace llarp - -#endif diff --git a/test/link/test_llarp_link.cpp b/test/link/test_llarp_link.cpp index 958e85da8..1309aa538 100644 --- a/test/link/test_llarp_link.cpp +++ b/test/link/test_llarp_link.cpp @@ -5,7 +5,7 @@ #include #include #include -#include + #include @@ -261,188 +261,3 @@ TEST_F(LinkLayerTest, TestIWP) ASSERT_TRUE(Bob.gotLIM); #endif }; - -TEST_F(LinkLayerTest, TestUTPAliceRenegWithBob) -{ -#ifdef WIN32 - GTEST_SKIP(); -#else - Alice.link = utp::NewServer( - Alice.encryptionKey, - [&]() -> const RouterContact& { return Alice.GetRC(); }, - [&](ILinkSession* s, const llarp_buffer_t& buf) -> bool { - if(Alice.gotLIM) - { - Alice.Regen(); - return s->RenegotiateSession(); - } - else - { - LinkIntroMessage msg; - ManagedBuffer copy{buf}; - if(!msg.BDecode(©.underlying)) - return false; - if(!s->GotLIM(&msg)) - return false; - Alice.gotLIM = true; - return true; - } - }, - [&](Signature& sig, const llarp_buffer_t& buf) -> bool { - return m_crypto.sign(sig, Alice.signingKey, buf); - }, - [&](ILinkSession* s) -> bool { - const auto rc = s->GetRemoteRC(); - return rc.pubkey == Bob.GetRC().pubkey; - }, - [&](RouterContact, RouterContact) -> bool { return true; }, - - [&](ILinkSession* session) { - ASSERT_FALSE(session->IsEstablished()); - Stop(); - }, - [&](RouterID router) { ASSERT_EQ(router, Bob.GetRouterID()); }); - - auto sendDiscardMessage = [](ILinkSession* s) -> bool { - // send discard message in reply to complete unit test - std::array< byte_t, 32 > tmp; - llarp_buffer_t otherBuf(tmp); - DiscardMessage discard; - if(!discard.BEncode(&otherBuf)) - return false; - otherBuf.sz = otherBuf.cur - otherBuf.base; - otherBuf.cur = otherBuf.base; - return s->SendMessageBuffer(otherBuf, nullptr); - }; - - Bob.link = utp::NewServer( - Bob.encryptionKey, [&]() -> const RouterContact& { return Bob.GetRC(); }, - [&](ILinkSession* s, const llarp_buffer_t& buf) -> bool { - LinkIntroMessage msg; - ManagedBuffer copy{buf}; - if(!msg.BDecode(©.underlying)) - return false; - if(!s->GotLIM(&msg)) - return false; - Bob.gotLIM = true; - return sendDiscardMessage(s); - }, - - [&](Signature& sig, const llarp_buffer_t& buf) -> bool { - return m_crypto.sign(sig, Bob.signingKey, buf); - }, - [&](ILinkSession* s) -> bool { - if(s->GetRemoteRC().pubkey != Alice.GetRC().pubkey) - return false; - LogInfo("bob established with alice"); - return Bob.link->VisitSessionByPubkey(Alice.GetRC().pubkey.as_array(), - sendDiscardMessage); - }, - [&](RouterContact newrc, RouterContact oldrc) -> bool { - success = newrc.pubkey == oldrc.pubkey; - return true; - }, - [&](ILinkSession* session) { ASSERT_FALSE(session->IsEstablished()); }, - [&](RouterID router) { ASSERT_EQ(router, Alice.GetRouterID()); }); - - ASSERT_TRUE(Alice.Start(m_logic, netLoop, AlicePort)); - ASSERT_TRUE(Bob.Start(m_logic, netLoop, BobPort)); - - ASSERT_TRUE(Alice.link->TryEstablishTo(Bob.GetRC())); - - RunMainloop(); - ASSERT_TRUE(Bob.gotLIM); - ASSERT_TRUE(success); -#endif -} - -TEST_F(LinkLayerTest, TestUTPAliceConnectToBob) -{ -#ifdef WIN32 - GTEST_SKIP(); -#else - Alice.link = utp::NewServer( - Alice.encryptionKey, - [&]() -> const RouterContact& { return Alice.GetRC(); }, - [&](ILinkSession* s, const llarp_buffer_t& buf) -> bool { - LinkIntroMessage lim; - llarp_buffer_t copy(buf.base, buf.sz); - if(lim.BDecode(©)) - { - if(s->GotLIM(&lim)) - { - Alice.gotLIM = true; - return true; - } - return false; - } - return AliceGotMessage(buf); - }, - [&](Signature& sig, const llarp_buffer_t& buf) -> bool { - return m_crypto.sign(sig, Alice.signingKey, buf); - }, - [&](ILinkSession* s) -> bool { - if(s->GetRemoteRC().pubkey != Bob.GetRC().pubkey) - return false; - LogInfo("alice established with bob"); - return true; - }, - [&](RouterContact, RouterContact) -> bool { return true; }, - - [&](ILinkSession* session) { - ASSERT_FALSE(session->IsEstablished()); - Stop(); - }, - [&](RouterID router) { ASSERT_EQ(router, Bob.GetRouterID()); }); - - Bob.link = utp::NewServer( - Bob.encryptionKey, [&]() -> const RouterContact& { return Bob.GetRC(); }, - [&](ILinkSession* s, const llarp_buffer_t& buf) -> bool { - LinkIntroMessage lim; - llarp_buffer_t copy(buf.base, buf.sz); - if(lim.BDecode(©)) - { - if(s->GotLIM(&lim)) - { - Bob.gotLIM = true; - return true; - } - return false; - } - return true; - }, - [&](Signature& sig, const llarp_buffer_t& buf) -> bool { - return m_crypto.sign(sig, Bob.signingKey, buf); - }, - [&](ILinkSession* s) -> bool { - if(s->GetRemoteRC().pubkey != Alice.GetRC().pubkey) - return false; - LogInfo("bob established with alice"); - m_logic->queue_job({s, [](void* u) { - ILinkSession* self = - static_cast< ILinkSession* >(u); - std::array< byte_t, 32 > tmp; - llarp_buffer_t otherBuf(tmp); - DiscardMessage discard; - if(!discard.BEncode(&otherBuf)) - return; - otherBuf.sz = otherBuf.cur - otherBuf.base; - otherBuf.cur = otherBuf.base; - self->SendMessageBuffer(otherBuf, nullptr); - }}); - return true; - }, - [&](RouterContact, RouterContact) -> bool { return true; }, - [&](ILinkSession* session) { ASSERT_FALSE(session->IsEstablished()); }, - [&](RouterID router) { ASSERT_EQ(router, Alice.GetRouterID()); }); - - ASSERT_TRUE(Alice.Start(m_logic, netLoop, AlicePort)); - ASSERT_TRUE(Bob.Start(m_logic, netLoop, BobPort)); - - ASSERT_TRUE(Alice.link->TryEstablishTo(Bob.GetRC())); - - RunMainloop(); - ASSERT_TRUE(Bob.gotLIM); - ASSERT_TRUE(success); -#endif -} From 993e4c26378d061fb20a909317ed0b1dc7193434 Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Thu, 19 Sep 2019 14:34:41 -0400 Subject: [PATCH 03/38] try fixing handover --- llarp/service/outbound_context.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/llarp/service/outbound_context.cpp b/llarp/service/outbound_context.cpp index 36d7e4cd7..be32352c1 100644 --- a/llarp/service/outbound_context.cpp +++ b/llarp/service/outbound_context.cpp @@ -64,6 +64,7 @@ namespace llarp if(intro.expiresAt > m_NextIntro.expiresAt) m_NextIntro = intro; } + currentConvoTag.Randomize(); } OutboundContext::~OutboundContext() = default; @@ -160,7 +161,6 @@ namespace llarp return; } } - currentConvoTag.Randomize(); AsyncKeyExchange* ex = new AsyncKeyExchange( m_Endpoint->RouterLogic(), remoteIdent, m_Endpoint->GetIdentity(), currentIntroSet.K, remoteIntro, m_DataHandler, currentConvoTag, t); @@ -245,7 +245,8 @@ namespace llarp if(remoteIntro.ExpiresSoon(now)) { // shift intro if it expires "soon" - ShiftIntroduction(); + if(ShiftIntroduction()) + SwapIntros(); // swap intros if we shifted } // lookup router in intro if set and unknown m_Endpoint->EnsureRouterIsKnown(remoteIntro.router); @@ -253,7 +254,7 @@ namespace llarp auto itr = m_BadIntros.begin(); while(itr != m_BadIntros.end()) { - if(now - itr->second > path::default_lifetime) + if(now > itr->second && now - itr->second > path::default_lifetime) itr = m_BadIntros.erase(itr); else ++itr; @@ -274,8 +275,6 @@ namespace llarp tmp.Randomize(); llarp_buffer_t buf(tmp.data(), tmp.size()); AsyncEncryptAndSendTo(buf, eProtocolControl); - if(currentConvoTag.IsZero()) - return false; return !m_DataHandler->HasConvoTag(currentConvoTag); } } From 7c691cf334c05e3110693106c8cec764aabff3dd Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 19 Sep 2019 16:28:12 -0400 Subject: [PATCH 04/38] handover should be fixed now --- llarp/service/endpoint.cpp | 13 +++++++++++++ llarp/service/endpoint.hpp | 3 +++ llarp/service/endpoint_util.cpp | 1 + llarp/service/handler.hpp | 3 +++ llarp/service/outbound_context.cpp | 10 +++++----- llarp/service/sendcontext.cpp | 1 + llarp/service/session.cpp | 5 ++--- 7 files changed, 28 insertions(+), 8 deletions(-) diff --git a/llarp/service/endpoint.cpp b/llarp/service/endpoint.cpp index 585826cc9..00057409d 100644 --- a/llarp/service/endpoint.cpp +++ b/llarp/service/endpoint.cpp @@ -434,6 +434,16 @@ namespace llarp itr->second.lastUsed = Now(); } + void + Endpoint::MarkConvoTagActive(const ConvoTag& tag) + { + auto itr = Sessions().find(tag); + if(itr != Sessions().end()) + { + itr->second.lastUsed = Now(); + } + } + bool Endpoint::LoadKeyFile() { @@ -1048,7 +1058,10 @@ namespace llarp util::Lock lock(&m_state->m_SendQueueMutex); // send outbound traffic for(const auto& item : m_state->m_SendQueue) + { item.second->SendRoutingMessage(*item.first, router); + MarkConvoTagActive(item.first->T.T); + } m_state->m_SendQueue.clear(); } diff --git a/llarp/service/endpoint.hpp b/llarp/service/endpoint.hpp index ebd25e78f..53df3762d 100644 --- a/llarp/service/endpoint.hpp +++ b/llarp/service/endpoint.hpp @@ -317,6 +317,9 @@ namespace llarp void RemoveConvoTag(const ConvoTag& remote) override; + void + MarkConvoTagActive(const ConvoTag& remote) override; + void PutReplyIntroFor(const ConvoTag& remote, const Introduction& intro) override; diff --git a/llarp/service/endpoint_util.cpp b/llarp/service/endpoint_util.cpp index ecf41f45b..6ca81bbe0 100644 --- a/llarp/service/endpoint_util.cpp +++ b/llarp/service/endpoint_util.cpp @@ -96,6 +96,7 @@ namespace llarp itr->second->Tick(now); if(itr->second->Pump(now)) { + LogInfo("marking session as dead T=", itr->first); itr->second->Stop(); deadSessions.emplace(std::move(*itr)); itr = remoteSessions.erase(itr); diff --git a/llarp/service/handler.hpp b/llarp/service/handler.hpp index 9e029e720..3c20aea47 100644 --- a/llarp/service/handler.hpp +++ b/llarp/service/handler.hpp @@ -29,6 +29,9 @@ namespace llarp PutCachedSessionKeyFor(const ConvoTag& remote, const SharedSecret& secret) = 0; + virtual void + MarkConvoTagActive(const ConvoTag& tag) = 0; + virtual void RemoveConvoTag(const ConvoTag& remote) = 0; diff --git a/llarp/service/outbound_context.cpp b/llarp/service/outbound_context.cpp index be32352c1..255220001 100644 --- a/llarp/service/outbound_context.cpp +++ b/llarp/service/outbound_context.cpp @@ -259,6 +259,10 @@ namespace llarp else ++itr; } + if(currentIntroSet.HasExpiredIntros(now)) + { + UpdateIntroSet(true); + } // send control message if we look too quiet if(lastGoodSend) { @@ -275,7 +279,6 @@ namespace llarp tmp.Randomize(); llarp_buffer_t buf(tmp.data(), tmp.size()); AsyncEncryptAndSendTo(buf, eProtocolControl); - return !m_DataHandler->HasConvoTag(currentConvoTag); } } } @@ -316,10 +319,7 @@ namespace llarp { if(markedBad) return false; - const bool should = - (!(path::Builder::BuildCooldownHit(now) - || path::Builder::NumInStatus(path::ePathBuilding) >= numPaths)) - && path::Builder::ShouldBuildMore(now); + const bool should = path::Builder::BuildCooldownHit(now); if(!ReadyToSend()) { diff --git a/llarp/service/sendcontext.cpp b/llarp/service/sendcontext.cpp index 9571caffa..2bdb638d6 100644 --- a/llarp/service/sendcontext.cpp +++ b/llarp/service/sendcontext.cpp @@ -43,6 +43,7 @@ namespace llarp if(item.second->SendRoutingMessage(*item.first, r)) { lastGoodSend = r->Now(); + m_Endpoint->MarkConvoTagActive(item.first->T.T); } else LogError(m_Endpoint->Name(), " failed to send frame on path"); diff --git a/llarp/service/session.cpp b/llarp/service/session.cpp index 8bce8f7eb..d7c13ce19 100644 --- a/llarp/service/session.cpp +++ b/llarp/service/session.cpp @@ -18,9 +18,8 @@ namespace llarp bool Session::IsExpired(llarp_time_t now, llarp_time_t lifetime) const { - if(now <= lastUsed) - return intro.IsExpired(now); - return now - lastUsed > lifetime || intro.IsExpired(now); + return now > lastUsed + && (now - lastUsed > lifetime || intro.IsExpired(now)); } } // namespace service From f9fb40f590182a39f4149d391e0f98d4a3c3b51c Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 20 Sep 2019 12:56:19 -0400 Subject: [PATCH 05/38] final touches --- llarp/path/pathbuilder.hpp | 6 ++-- llarp/service/endpoint_util.cpp | 1 + llarp/service/outbound_context.cpp | 54 ++++++++++++++++++++++++++---- llarp/service/outbound_context.hpp | 11 ++++++ llarp/service/sendcontext.cpp | 1 - 5 files changed, 62 insertions(+), 11 deletions(-) diff --git a/llarp/path/pathbuilder.hpp b/llarp/path/pathbuilder.hpp index 8e35f89d8..6e1a9d78d 100644 --- a/llarp/path/pathbuilder.hpp +++ b/llarp/path/pathbuilder.hpp @@ -113,13 +113,13 @@ namespace llarp virtual const SecretKey& GetTunnelEncryptionSecretKey() const; - void + virtual void HandlePathBuilt(Path_ptr p) override; - void + virtual void HandlePathBuildTimeout(Path_ptr p) override; - void + virtual void HandlePathBuildFailed(Path_ptr p) override; }; diff --git a/llarp/service/endpoint_util.cpp b/llarp/service/endpoint_util.cpp index 6ca81bbe0..25a4a5c46 100644 --- a/llarp/service/endpoint_util.cpp +++ b/llarp/service/endpoint_util.cpp @@ -116,6 +116,7 @@ namespace llarp { if(itr->second.IsExpired(now)) { + LogInfo("Expire session T=", itr->first); itr = sessions.erase(itr); } else diff --git a/llarp/service/outbound_context.cpp b/llarp/service/outbound_context.cpp index 255220001..cc0ff1a5d 100644 --- a/llarp/service/outbound_context.cpp +++ b/llarp/service/outbound_context.cpp @@ -44,8 +44,6 @@ namespace llarp if(MarkCurrentIntroBad(Now())) { SwapIntros(); - LogInfo(Name(), " switched intros to ", remoteIntro.router, " via ", - remoteIntro.pathID); } UpdateIntroSet(true); } @@ -53,13 +51,13 @@ namespace llarp } OutboundContext::OutboundContext(const IntroSet& introset, Endpoint* parent) - : path::Builder(parent->Router(), 3, path::default_len) + : path::Builder(parent->Router(), 4, path::default_len) , SendContext(introset.A, {}, this, parent) , currentIntroSet(introset) { updatingIntroSet = false; - for(const auto intro : introset.I) + for(const auto& intro : introset.I) { if(intro.expiresAt > m_NextIntro.expiresAt) m_NextIntro = intro; @@ -75,6 +73,7 @@ namespace llarp { if(remoteIntro != m_NextIntro) { + LogInfo(Name(), " swap intro to use ", RouterID(m_NextIntro.router)); remoteIntro = m_NextIntro; m_DataHandler->PutIntroFor(currentConvoTag, remoteIntro); ShiftIntroduction(false); @@ -114,7 +113,10 @@ namespace llarp BuildOneAlignedTo(m_NextIntro.router); } else + { ++m_LookupFails; + LogWarn(Name(), " failed to look up introset, fails=", m_LookupFails); + } return true; } @@ -125,6 +127,32 @@ namespace llarp && GetPathByRouter(remoteIntro.router) != nullptr; } + void + OutboundContext::ShiftIntroRouter(const RouterID r) + { + const auto now = Now(); + Introduction selectedIntro; + for(const auto& intro : currentIntroSet.I) + { + if(intro.expiresAt > selectedIntro.expiresAt && intro.router != r) + { + selectedIntro = intro; + } + } + if(selectedIntro.router.IsZero() || selectedIntro.ExpiresSoon(now)) + return; + LogWarn(Name(), " shfiting intro off of ", r, " to ", + RouterID(selectedIntro.router)); + m_NextIntro = selectedIntro; + } + + void + OutboundContext::HandlePathBuildTimeout(path::Path_ptr p) + { + ShiftIntroRouter(p->Endpoint()); + path::Builder::HandlePathBuildTimeout(p); + } + void OutboundContext::HandlePathBuilt(path::Path_ptr p) { @@ -138,6 +166,10 @@ namespace llarp // we now have a path to the next intro, swap intros if(p->Endpoint() == m_NextIntro.router) SwapIntros(); + else + { + LogInfo(Name(), " built to non aligned router: ", p->Endpoint()); + } } void @@ -241,6 +273,7 @@ namespace llarp // we are probably dead af if(m_LookupFails > 16 || m_BuildFails > 10) return true; + // check for expiration if(remoteIntro.ExpiresSoon(now)) { @@ -296,9 +329,10 @@ namespace llarp { if(m_NextIntro.router.IsZero() || prev.count(m_NextIntro.router)) { - if(!ShiftIntroduction(false)) - return false; + ShiftIntroduction(false); } + if(m_NextIntro.router.IsZero()) + return false; std::set< RouterID > exclude = prev; exclude.insert(m_NextIntro.router); for(const auto& snode : m_Endpoint->SnodeBlacklist()) @@ -337,9 +371,15 @@ namespace llarp bool OutboundContext::MarkCurrentIntroBad(llarp_time_t now) + { + return MarkIntroBad(remoteIntro, now); + } + + bool + OutboundContext::MarkIntroBad(const Introduction& intro, llarp_time_t now) { // insert bad intro - m_BadIntros[remoteIntro] = now; + m_BadIntros[intro] = now; // try shifting intro without rebuild if(ShiftIntroduction(false)) { diff --git a/llarp/service/outbound_context.hpp b/llarp/service/outbound_context.hpp index 1f591540b..0bde2abec 100644 --- a/llarp/service/outbound_context.hpp +++ b/llarp/service/outbound_context.hpp @@ -6,6 +6,7 @@ #include #include +#include namespace llarp { @@ -52,10 +53,17 @@ namespace llarp bool ShiftIntroduction(bool rebuild = true) override; + /// shift the intro off the current router it is using + void + ShiftIntroRouter(const RouterID remote); + /// mark the current remote intro as bad bool MarkCurrentIntroBad(llarp_time_t now) override; + bool + MarkIntroBad(const Introduction& marked, llarp_time_t now); + /// return true if we are ready to send bool ReadyToSend() const; @@ -85,6 +93,9 @@ namespace llarp void HandlePathBuilt(path::Path_ptr path) override; + void + HandlePathBuildTimeout(path::Path_ptr path) override; + bool SelectHop(llarp_nodedb* db, const std::set< RouterID >& prev, RouterContact& cur, size_t hop, path::PathRole roles) override; diff --git a/llarp/service/sendcontext.cpp b/llarp/service/sendcontext.cpp index 2bdb638d6..cb0b4c952 100644 --- a/llarp/service/sendcontext.cpp +++ b/llarp/service/sendcontext.cpp @@ -19,7 +19,6 @@ namespace llarp , m_Endpoint(ep) { createdAt = ep->Now(); - currentConvoTag.Zero(); } bool From cd9c4d9f1a78ca790bcf65f64b29bf3704e3488c Mon Sep 17 00:00:00 2001 From: jeff Date: Fri, 20 Sep 2019 15:21:04 -0400 Subject: [PATCH 06/38] bump version and motto --- llarp/constants/version.hpp | 4 ++-- motto.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/llarp/constants/version.hpp b/llarp/constants/version.hpp index 15da8b310..e875ebd9e 100644 --- a/llarp/constants/version.hpp +++ b/llarp/constants/version.hpp @@ -2,7 +2,7 @@ #define LLARP_VERSION_HPP #if defined(_WIN32) && defined(RC_INVOKED) -#define LLARP_VERSION 0, 5, 0, 0 +#define LLARP_VERSION 0, 5, 2, 0 #else #ifndef LLARP_VERSION_MAJ @@ -14,7 +14,7 @@ #endif #ifndef LLARP_VERSION_PATCH -#define LLARP_VERSION_PATCH "0" +#define LLARP_VERSION_PATCH "2" #endif #ifndef LLARP_VERSION_NUM diff --git a/motto.txt b/motto.txt index 40440a1ab..bd0069666 100644 --- a/motto.txt +++ b/motto.txt @@ -1 +1 @@ -bedrock edition +and boom goes the dynamite \ No newline at end of file From 86a07e2a80938d9cd3300853ac6c1bf1ee175e66 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 22 Sep 2019 15:32:03 +0100 Subject: [PATCH 07/38] Enable more sanitisers --- .travis.yml | 15 ++++++++++++++- CMakeLists.txt | 8 ++++---- Makefile | 8 ++++---- llarp/config/config.cpp | 6 +++--- llarp/iwp/linklayer.cpp | 1 + 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.travis.yml b/.travis.yml index d3a674fff..ff4ccdb96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -59,7 +59,20 @@ matrix: - name: "address sanitizer" os: osx osx_image: xcode10.2 - env: BUILD_TYPE=Debug ASAN=ON PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ + env: BUILD_TYPE=Debug XSAN=address PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ + - name: "thread sanitizer" + os: osx + osx_image: xcode10.2 + env: BUILD_TYPE=Debug XSAN=thread PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ + - name: "undefined sanitizer" + os: osx + osx_image: xcode10.2 + env: BUILD_TYPE=Debug XSAN=undefined PATH="/usr/local/opt/ccache/libexec:$PATH" CC=/usr/local/opt/llvm/bin/clang CXX=/usr/local/opt/llvm/bin/clang++ + - name: "memory sanitizer" + os: linux + dist: xenial + compiler: clang + env: BUILD_TYPE=Debug XSAN=memory - name: "native windows debug" os: windows env: BUILD_TYPE=Debug diff --git a/CMakeLists.txt b/CMakeLists.txt index 6699fb432..2351ea436 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,7 +21,7 @@ option(STATIC_LINK_RUNTIME "link statically against compiler runtime, standard l endif() option(NON_PC_TARGET "non-pc target build: iphone, andriod, embedded non-i386 SBC, etc" ) option(SHADOW "use shadow testing framework. linux only" ) -option(ASAN "use address sanitiser, if your system has it" ) +option(XSAN "use sanitiser, if your system has it" ) option(JEMALLOC "use jemalloc. Not required on BSD" ) option(DEBIAN "build for debian" ) option(TESTNET "testnet build" ) @@ -91,10 +91,10 @@ if(NOT DEBIAN AND NOT MSVC_VERSION) set(DEBUG_FLAGS -O0 -g3) endif() -if(ASAN) - set(DEBUG_FLAGS ${DEBUG_FLAGS} -fsanitize=address -fno-omit-frame-pointer) +if(XSAN) + set(DEBUG_FLAGS ${DEBUG_FLAGS} "-fsanitize=${XSAN}" -fno-omit-frame-pointer) set(OPTIMIZE_FLAGS "-O0") -endif(ASAN) +endif(XSAN) if(CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]") set(OPTIMIZE_FLAGS "") diff --git a/Makefile b/Makefile index 575be9f6a..f9081b175 100644 --- a/Makefile +++ b/Makefile @@ -80,8 +80,8 @@ SHARED_LIB ?= OFF # enable generating coverage COVERAGE ?= OFF COVERAGE_OUTDIR ?= "$(TMPDIR)/lokinet-coverage" -# enable ASAN -ASAN ?= OFF +# enable sanitizer +XSAN ?= False # cmake generator type CMAKE_GEN ?= Unix Makefiles @@ -109,9 +109,9 @@ else CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_SHELLHOOKS=$(SHELL_HOOKS) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'") CONFIG_CMD_WINDOWS = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=ON -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_SHELLHOOKS=$(SHELL_HOOKS) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'") -ANALYZE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DASAN=$(ASAN) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'") +ANALYZE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "$(SCAN_BUILD) cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DXSAN=$(XSAN) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'") -COVERAGE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DASAN=$(ASAN) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'") +COVERAGE_CONFIG_CMD = $(shell /bin/echo -n "cd '$(BUILD_ROOT)' && " ; /bin/echo -n "cmake -G'$(CMAKE_GEN)' -DCMAKE_CROSSCOMPILING=$(CROSS) -DSTATIC_LINK_RUNTIME=$(STATIC_LINK) -DUSE_NETNS=$(NETNS) -DUSE_AVX2=$(AVX2) -DNON_PC_TARGET=$(NON_PC_TARGET) -DWITH_SHARED=$(SHARED_LIB) -DWITH_COVERAGE=yes -DXSAN=$(XSAN) -DCMAKE_EXPORT_COMPILE_COMMANDS=ON '$(REPO)'") endif TARGETS = $(REPO)/lokinet diff --git a/llarp/config/config.cpp b/llarp/config/config.cpp index 0d6b85d48..ceca8dbac 100644 --- a/llarp/config/config.cpp +++ b/llarp/config/config.cpp @@ -227,9 +227,9 @@ namespace llarp idx = v.find_first_of(delimiter); if(idx != std::string::npos) { - std::string val = v.substr(0, idx); - absl::StripAsciiWhitespace(&val); - parsed_opts.emplace(std::move(val)); + std::string data = v.substr(0, idx); + absl::StripAsciiWhitespace(&data); + parsed_opts.emplace(std::move(data)); v = v.substr(idx + 1); } else diff --git a/llarp/iwp/linklayer.cpp b/llarp/iwp/linklayer.cpp index 882c4f684..bbe426e21 100644 --- a/llarp/iwp/linklayer.cpp +++ b/llarp/iwp/linklayer.cpp @@ -90,6 +90,7 @@ namespace llarp } else { + Lock lock(&m_AuthedLinksMutex); auto range = m_AuthedLinks.equal_range(itr->second); session = range.first->second; } From 8fd13577ba840c5829916971d08ed1c4408c1ac7 Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 13:04:49 -0500 Subject: [PATCH 08/38] Remove binaries, download them at runtime --- contrib/tuntapv9-ndis/README.md | 17 ----------------- contrib/tuntapv9-ndis/tap-windows-9.21.2.7z | Bin 124924 -> 0 bytes contrib/tuntapv9-ndis/tap-windows-9.9.2_3.7z | Bin 233298 -> 0 bytes lokinet-bootstrap-testnet.exe | Bin 718848 -> 0 bytes lokinet-bootstrap.exe | Bin 729102 -> 0 bytes win32-setup/7z.exe | Bin 563200 -> 0 bytes win32-setup/Makefile | 6 ++++++ win32-setup/dbghelp32.dll | Bin 1080656 -> 0 bytes win32-setup/dbghelp64.dll | Bin 1369936 -> 0 bytes win32-setup/lokinet-win32.iss | 15 +++++++++------ win32-setup/regdbhelper.dll | Bin 15872 -> 0 bytes 11 files changed, 15 insertions(+), 23 deletions(-) delete mode 100644 contrib/tuntapv9-ndis/README.md delete mode 100644 contrib/tuntapv9-ndis/tap-windows-9.21.2.7z delete mode 100644 contrib/tuntapv9-ndis/tap-windows-9.9.2_3.7z delete mode 100644 lokinet-bootstrap-testnet.exe delete mode 100644 lokinet-bootstrap.exe delete mode 100644 win32-setup/7z.exe create mode 100644 win32-setup/Makefile delete mode 100644 win32-setup/dbghelp32.dll delete mode 100644 win32-setup/dbghelp64.dll delete mode 100644 win32-setup/regdbhelper.dll diff --git a/contrib/tuntapv9-ndis/README.md b/contrib/tuntapv9-ndis/README.md deleted file mode 100644 index cf2d1b17c..000000000 --- a/contrib/tuntapv9-ndis/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# TUN/TAP driver v9 for Windows - -in order to set up tunnels on Windows, you will need -to instal this driver. - -* v9.9.2.3 is for Windows 2000/XP/2003 (NDIS 5.0-based) -* v9.21.2 is for Windows Vista/7/8.1 and 10 (NDIS 6.0, forward-compatible with NDIS 10.0) - -to instal, extract the corresponding version of the driver for your -platform and run `%ARCH%/install_tap.cmd` in an elevated shell - -to remove *ALL* virtual tunnel adapters, run `%ARCH%/del_tap.cmd` in an elevated shell. Use the -Device Manager snap-in to remove individual adapter instances. - -Both are signed by OpenVPN Inc, and are available for 32- and 64-bit archs. - --despair86 \ No newline at end of file diff --git a/contrib/tuntapv9-ndis/tap-windows-9.21.2.7z b/contrib/tuntapv9-ndis/tap-windows-9.21.2.7z deleted file mode 100644 index 9187b02bcdff7341b7df2116ee2cf25ad7f61fe0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124924 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 z 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 a00AQd0RaVF01yBG42J3o0X05vasU8c@);BW diff --git a/contrib/tuntapv9-ndis/tap-windows-9.9.2_3.7z b/contrib/tuntapv9-ndis/tap-windows-9.9.2_3.7z deleted file mode 100644 index a13e055ed92d10924614aaeab17220088490e9b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233298 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
d)-Rs%@pD5E)Gh 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 CErs3y diff --git a/lokinet-bootstrap-testnet.exe b/lokinet-bootstrap-testnet.exe deleted file mode 100644 index 7cea73dc78ac6d909a205ff046b2e8d1d01d3c6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718848 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

  • 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�ml1DJN4T!bULR_2axJM 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 z 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 diff --git a/lokinet-bootstrap.exe b/lokinet-bootstrap.exe deleted file mode 100644 index 8360f7e0b71e9e2051869402a0f8bc8b27685fb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729102 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�Nut!s*{3*TF11j#0PV?rdw`jH3U2A-L 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 lWxjbaH1(k!R6p7~;Z6_S>4E>b9?us5NF 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%0Ac%P0_55xs%UZsh$J71rB6i{nc$qT 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%0Dg-BbuuBG+Sn$R{ml;;mkl16*$RQ$^+ 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

    iXccASj!G4XIo~*qd@T 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 z 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 z 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 diff --git a/win32-setup/Makefile b/win32-setup/Makefile new file mode 100644 index 000000000..c34b72de9 --- /dev/null +++ b/win32-setup/Makefile @@ -0,0 +1,6 @@ +# Makefile for windows install pkg and helper library + +regdbhelper.dll: + i686-w64-mingw32-gcc regdb_helper.c -o $@ -shared -Os -s +clean: + rm *.dll *.exe diff --git a/win32-setup/dbghelp32.dll b/win32-setup/dbghelp32.dll deleted file mode 100644 index 62d850863e6a377d5c2534142f07bd528f9d524f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1080656 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%0A|sOOlgKTuHx^Z=?E2=D&f@5eOj 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

    J@Y*J)^1AIK3VJXrFSulF|Q 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%0AM$S8Oo)otNX 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 r)|UF~9j-ko^I+1}MDw&fPu2s2uX{c~$+Q-#srO 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 z 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%0A^I5f5jD79JIxTG)J-D$~)13 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དྷw;Qsqvm4Z8Gvfw6-vn4sm#w0g*zjcGB5}rqh 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

    `>B-;NP-dpoy6dkHWB%ZY#dPPh7m|N9`~Rq)g> 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%0AqJ~BhbD+q1Gt6KHzmIz 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

    ^lQ`J4+09OAGq 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⪚;$o4dtyBdNMd`p#PncODp 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�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≻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 B2W9{O diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index e46bc82dc..590153cea 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -68,14 +68,14 @@ Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescrip #ifdef SINGLE_ARCH Source: "{#DevPath}build\lokinet.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#DevPath}build\liblokinet-shared.dll"; DestDir: "{app}"; Flags: ignoreversion -Source: "dbghelp64.dll"; DestName: "dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion +Source: "{tmp}\dbghelp64.dll"; DestName: "dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion external #else Source: "{#DevPath}build\lokinet.exe"; DestDir: "{app}"; Flags: ignoreversion 32bit; Check: not IsWin64 Source: "{#DevPath}build\liblokinet-shared.dll"; DestDir: "{app}"; Flags: ignoreversion 32bit; Check: not IsWin64 -Source: "dbghelp32.dll"; DestName: "dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion; Check: not IsWin64 +Source: "{tmp}\dbghelp32.dll"; DestName: "dbghelp.dll"; DestDir: "{app}"; Flags: ignoreversion external; Check: not IsWin64 Source: "{#DevPath}build64\lokinet.exe"; DestDir: "{app}"; Flags: ignoreversion 64bit; Check: IsWin64 Source: "{#DevPath}build64\liblokinet-shared.dll"; DestDir: "{app}"; Flags: ignoreversion 64bit; Check: IsWin64 -Source: "dbghelp64.dll"; DestDir: "{app}"; DestName: "dbghelp.dll"; Flags: ignoreversion; Check: IsWin64 +Source: "{tmp}\dbghelp64.dll"; DestDir: "{app}"; DestName: "dbghelp.dll"; Flags: ignoreversion external; Check: IsWin64 #endif ; UI has landed! #ifndef RELEASE @@ -94,7 +94,7 @@ Source: "{#DevPath}LICENSE"; DestDir: "{app}"; Flags: ignoreversion ; delet this after finishing setup, we only need it to extract the drivers ; and download an initial RC. The UI has its own bootstrap built-in! Source: "{#DevPath}lokinet-bootstrap.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall -Source: "{#DevPath}win32-setup\7z.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall +Source: "{tmp}\7z.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall external ; if nonexistent, then inet6 was already installed Source: "{tmp}\inet6.7z"; DestDir: "{app}"; Flags: ignoreversion external deleteafterinstall skipifsourcedoesntexist; MinVersion: 0,5.0; OnlyBelowVersion: 0,5.1 ; Copy the correct tuntap driver for the selected platform @@ -192,15 +192,18 @@ begin begin // current versions of windows :-) // (Arguably, one could pull this from any of the forks.) - idpAddFile('https://github.com/despair86/loki-network/raw/master/contrib/tuntapv9-ndis/tap-windows-9.21.2.7z', ExpandConstant('{tmp}\tuntapv9_n6.7z')); + idpAddFile('https://snowlight.net/loki/win32-dist/tap-windows-9.21.2.7z', ExpandConstant('{tmp}\tuntapv9_n6.7z')); end; // Windows 2000 only, we need to install inet6 separately if (FileExists(ExpandConstant('{sys}\drivers\tcpip6.sys')) = false) and (Version.Major = 5) and (Version.Minor = 0) then begin idpAddFile('http://www.rvx86.net/files/inet6.7z', ExpandConstant('{tmp}\inet6.7z')); end; - idpDownloadAfter(wpReady); end; + idpAddFile('http://www.rvx86.net/files/7z.exe', ExpandConstant('{tmp}\7z.exe')); + idpAddFile('http://www.rvx86.net/files/dbghelp32.dll', ExpandConstant('{tmp}\dbghelp32.dll')); + idpAddFile('http://www.rvx86.net/files/dbghelp64.dll', ExpandConstant('{tmp}\dbghelp64.dll')); + idpDownloadAfter(wpReady); end; [Icons] diff --git a/win32-setup/regdbhelper.dll b/win32-setup/regdbhelper.dll deleted file mode 100644 index 97d6bf9d88036e114f0ff4abd56e7d5610c79299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15872 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 bVtv^%rabUp>mt2m From 70dea71db675c5bd1b94e803ad51809041226f8a Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 13:23:33 -0500 Subject: [PATCH 09/38] new http parser --- contrib/lokinet-bootstrap-winnt/chunk.c | 79 ++++++++ contrib/lokinet-bootstrap-winnt/chunk.h | 48 +++++ contrib/lokinet-bootstrap-winnt/client.c | 19 ++ contrib/lokinet-bootstrap-winnt/header.c | 72 +++++++ contrib/lokinet-bootstrap-winnt/header.h | 61 ++++++ contrib/lokinet-bootstrap-winnt/http.c | 227 +++++++++++++++++++++++ contrib/lokinet-bootstrap-winnt/http.h | 93 ++++++++++ 7 files changed, 599 insertions(+) create mode 100644 contrib/lokinet-bootstrap-winnt/chunk.c create mode 100644 contrib/lokinet-bootstrap-winnt/chunk.h create mode 100644 contrib/lokinet-bootstrap-winnt/client.c create mode 100644 contrib/lokinet-bootstrap-winnt/header.c create mode 100644 contrib/lokinet-bootstrap-winnt/header.h create mode 100644 contrib/lokinet-bootstrap-winnt/http.c create mode 100644 contrib/lokinet-bootstrap-winnt/http.h diff --git a/contrib/lokinet-bootstrap-winnt/chunk.c b/contrib/lokinet-bootstrap-winnt/chunk.c new file mode 100644 index 000000000..3f7c889ea --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/chunk.c @@ -0,0 +1,79 @@ +/*- + * Copyright 2012 Matthew Endsley + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +static const unsigned char http_chunk_state[] = { +/* * LF CR HEX */ + 0xC1, 0xC1, 0xC1, 1, /* s0: initial hex char */ + 0xC1, 0xC1, 2, 0x81, /* s1: additional hex chars, followed by CR */ + 0xC1, 0x83, 0xC1, 0xC1, /* s2: trailing LF */ + 0xC1, 0xC1, 4, 0xC1, /* s3: CR after chunk block */ + 0xC1, 0xC0, 0xC1, 0xC1, /* s4: LF after chunk block */ +}; + +int http_parse_chunked(int* state, int *size, char ch) +{ + int newstate, code = 0; + switch (ch) { + case '\n': code = 1; break; + case '\r': code = 2; break; + case '0': case '1': case '2': case '3': + case '4': case '5': case '6': case '7': + case '8': case '9': case 'a': case 'b': + case 'c': case 'd': case 'e': case 'f': + case 'A': case 'B': case 'C': case 'D': + case 'E': case 'F': code = 3; break; + } + + newstate = http_chunk_state[*state * 4 + code]; + *state = (newstate & 0xF); + + switch (newstate) { + case 0xC0: + return *size != 0; + + case 0xC1: /* error */ + *size = -1; + return 0; + + case 0x01: /* initial char */ + *size = 0; + /* fallthrough */ + case 0x81: /* size char */ + if (ch >= 'a') + *size = *size * 16 + (ch - 'a' + 10); + else if (ch >= 'A') + *size = *size * 16 + (ch - 'A' + 10); + else + *size = *size * 16 + (ch - '0'); + break; + + case 0x83: + return *size == 0; + } + + return 1; +} + diff --git a/contrib/lokinet-bootstrap-winnt/chunk.h b/contrib/lokinet-bootstrap-winnt/chunk.h new file mode 100644 index 000000000..9736e8364 --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/chunk.h @@ -0,0 +1,48 @@ +/*- + * Copyright 2012 Matthew Endsley + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef HTTP_CHUNK_H +#define HTTP_CHUNK_H + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * Parses the size out of a chunk-encoded HTTP response. Returns non-zero if it + * needs more data. Retuns zero success or error. When error: size == -1 On + * success, size = size of following chunk data excluding trailing \r\n. User is + * expected to process or otherwise seek past chunk data up to the trailing + * \r\n. The state parameter is used for internal state and should be + * initialized to zero the first call. + */ +int http_parse_chunked(int* state, int *size, char ch); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/contrib/lokinet-bootstrap-winnt/client.c b/contrib/lokinet-bootstrap-winnt/client.c new file mode 100644 index 000000000..968943966 --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/client.c @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2019 Rick V. All rights reserved. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * HTTP client for loki-msgr + */ + diff --git a/contrib/lokinet-bootstrap-winnt/header.c b/contrib/lokinet-bootstrap-winnt/header.c new file mode 100644 index 000000000..cda9eb54a --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/header.c @@ -0,0 +1,72 @@ +/*- + * Copyright 2012 Matthew Endsley + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "header.h" + +static unsigned char http_header_state[] = { +/* * \t \n \r ' ' , : PAD */ + 0x80, 1, 0xC1, 0xC1, 1, 0x80, 0x80, 0xC1, /* state 0: HTTP version */ + 0x81, 2, 0xC1, 0xC1, 2, 1, 1, 0xC1, /* state 1: Response code */ + 0x82, 0x82, 4, 3, 0x82, 0x82, 0x82, 0xC1, /* state 2: Response reason */ + 0xC1, 0xC1, 4, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 3: HTTP version newline */ + 0x84, 0xC1, 0xC0, 5, 0xC1, 0xC1, 6, 0xC1, /* state 4: Start of header field */ + 0xC1, 0xC1, 0xC0, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 5: Last CR before end of header */ + 0x87, 6, 0xC1, 0xC1, 6, 0x87, 0x87, 0xC1, /* state 6: leading whitespace before header value */ + 0x87, 0x87, 0xC4, 10, 0x87, 0x88, 0x87, 0xC1, /* state 7: header field value */ + 0x87, 0x88, 6, 9, 0x88, 0x88, 0x87, 0xC1, /* state 8: Split value field value */ + 0xC1, 0xC1, 6, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 9: CR after split value field */ + 0xC1, 0xC1, 0xC4, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 10:CR after header value */ +}; + +int http_parse_header_char(int* state, char ch) +{ + int newstate, code = 0; + switch (ch) { + case '\t': code = 1; break; + case '\n': code = 2; break; + case '\r': code = 3; break; + case ' ': code = 4; break; + case ',': code = 5; break; + case ':': code = 6; break; + } + + newstate = http_header_state[*state * 8 + code]; + *state = (newstate & 0xF); + + switch (newstate) { + case 0xC0: return http_header_status_done; + case 0xC1: return http_header_status_done; + case 0xC4: return http_header_status_store_keyvalue; + case 0x80: return http_header_status_version_character; + case 0x81: return http_header_status_code_character; + case 0x82: return http_header_status_status_character; + case 0x84: return http_header_status_key_character; + case 0x87: return http_header_status_value_character; + case 0x88: return http_header_status_value_character; + } + + return http_header_status_continue; +} diff --git a/contrib/lokinet-bootstrap-winnt/header.h b/contrib/lokinet-bootstrap-winnt/header.h new file mode 100644 index 000000000..7f8ee6ab6 --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/header.h @@ -0,0 +1,61 @@ +/*- + * Copyright 2012 Matthew Endsley + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef HTTP_HEADER_H +#define HTTP_HEADER_H + +#if defined(__cplusplus) +extern "C" { +#endif + +enum http_header_status +{ + http_header_status_done, + http_header_status_continue, + http_header_status_version_character, + http_header_status_code_character, + http_header_status_status_character, + http_header_status_key_character, + http_header_status_value_character, + http_header_status_store_keyvalue +}; + +/** + * Parses a single character of an HTTP header stream. The state parameter is + * used as internal state and should be initialized to zero for the first call. + * Return value is a value from the http_header_status enuemeration specifying + * the semantics of the character. If an error is encountered, + * http_header_status_done will be returned with a non-zero state parameter. On + * success http_header_status_done is returned with the state parameter set to + * zero. + */ +int http_parse_header_char(int* state, char ch); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/contrib/lokinet-bootstrap-winnt/http.c b/contrib/lokinet-bootstrap-winnt/http.c new file mode 100644 index 000000000..40eb1c798 --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/http.c @@ -0,0 +1,227 @@ +/*- + * Copyright 2012 Matthew Endsley + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "http.h" + +#include +#include + +#include "header.h" +#include "chunk.h" + +static void append_body(struct http_roundtripper* rt, const char* data, int ndata) +{ + rt->funcs.body(rt->opaque, data, ndata); +} + +static void grow_scratch(struct http_roundtripper* rt, int size) +{ + if (rt->nscratch >= size) + return; + + if (size < 64) + size = 64; + int nsize = (rt->nscratch * 3) / 2; + if (nsize < size) + nsize = size; + + rt->scratch = (char*)rt->funcs.realloc_scratch(rt->opaque, rt->scratch, nsize); + rt->nscratch = nsize; +} + +static int min(int a, int b) +{ + return a > b ? b : a; +} + +enum http_roundtripper_state { + http_roundtripper_header, + http_roundtripper_chunk_header, + http_roundtripper_chunk_data, + http_roundtripper_raw_data, + http_roundtripper_unknown_data, + http_roundtripper_close, + http_roundtripper_error, +}; + +void http_init(struct http_roundtripper* rt, struct http_funcs funcs, void* opaque) +{ + rt->funcs = funcs; + rt->scratch = 0; + rt->opaque = opaque; + rt->code = 0; + rt->parsestate = 0; + rt->contentlength = -1; + rt->state = http_roundtripper_header; + rt->nscratch = 0; + rt->nkey = 0; + rt->nvalue = 0; + rt->chunked = 0; +} + +void http_free(struct http_roundtripper* rt) +{ + if (rt->scratch) { + rt->funcs.realloc_scratch(rt->opaque, rt->scratch, 0); + rt->scratch = 0; + } +} + +int http_data(struct http_roundtripper* rt, const char* data, int size, int* read) +{ + const int initial_size = size; + while (size) { + switch (rt->state) { + case http_roundtripper_header: + switch (http_parse_header_char(&rt->parsestate, *data)) { + case http_header_status_done: + rt->funcs.code(rt->opaque, rt->code); + if (rt->parsestate != 0) + rt->state = http_roundtripper_error; + else if (rt->chunked) { + rt->contentlength = 0; + rt->state = http_roundtripper_chunk_header; + } else if (rt->contentlength == 0) + rt->state = http_roundtripper_close; + else if (rt->contentlength > 0) + rt->state = http_roundtripper_raw_data; + else if (rt->contentlength == -1) + rt->state = http_roundtripper_unknown_data; + else + rt->state = http_roundtripper_error; + break; + + case http_header_status_code_character: + rt->code = rt->code * 10 + *data - '0'; + break; + + case http_header_status_key_character: + grow_scratch(rt, rt->nkey + 1); + rt->scratch[rt->nkey] = tolower(*data); + ++rt->nkey; + break; + + case http_header_status_value_character: + grow_scratch(rt, rt->nkey + rt->nvalue + 1); + rt->scratch[rt->nkey+rt->nvalue] = *data; + ++rt->nvalue; + break; + + case http_header_status_store_keyvalue: + if (rt->nkey == 17 && 0 == strncmp(rt->scratch, "transfer-encoding", rt->nkey)) + rt->chunked = (rt->nvalue == 7 && 0 == strncmp(rt->scratch + rt->nkey, "chunked", rt->nvalue)); + else if (rt->nkey == 14 && 0 == strncmp(rt->scratch, "content-length", rt->nkey)) { + int ii, end; + rt->contentlength = 0; + for (ii = rt->nkey, end = rt->nkey + rt->nvalue; ii != end; ++ii) + rt->contentlength = rt->contentlength * 10 + rt->scratch[ii] - '0'; + } + + rt->funcs.header(rt->opaque, rt->scratch, rt->nkey, rt->scratch + rt->nkey, rt->nvalue); + + rt->nkey = 0; + rt->nvalue = 0; + break; + } + + --size; + ++data; + break; + + case http_roundtripper_chunk_header: + if (!http_parse_chunked(&rt->parsestate, &rt->contentlength, *data)) { + if (rt->contentlength == -1) + rt->state = http_roundtripper_error; + else if (rt->contentlength == 0) + rt->state = http_roundtripper_close; + else + rt->state = http_roundtripper_chunk_data; + } + + --size; + ++data; + break; + + case http_roundtripper_chunk_data: { + const int chunksize = min(size, rt->contentlength); + append_body(rt, data, chunksize); + rt->contentlength -= chunksize; + size -= chunksize; + data += chunksize; + + if (rt->contentlength == 0) { + rt->contentlength = 1; + rt->state = http_roundtripper_chunk_header; + } + } + break; + + case http_roundtripper_raw_data: { + const int chunksize = min(size, rt->contentlength); + append_body(rt, data, chunksize); + rt->contentlength -= chunksize; + size -= chunksize; + data += chunksize; + + if (rt->contentlength == 0) + rt->state = http_roundtripper_close; + } + break; + + case http_roundtripper_unknown_data: { + if (size == 0) + rt->state = http_roundtripper_close; + else { + append_body(rt, data, size); + size -= size; + data += size; + } + } + break; + + case http_roundtripper_close: + case http_roundtripper_error: + break; + } + + if (rt->state == http_roundtripper_error || rt->state == http_roundtripper_close) { + if (rt->scratch) { + rt->funcs.realloc_scratch(rt->opaque, rt->scratch, 0); + rt->scratch = 0; + } + *read = initial_size - size; + return 0; + } + } + + *read = initial_size - size; + return 1; +} + +int http_iserror(struct http_roundtripper* rt) +{ + return rt->state == http_roundtripper_error; +} diff --git a/contrib/lokinet-bootstrap-winnt/http.h b/contrib/lokinet-bootstrap-winnt/http.h new file mode 100644 index 000000000..ba7e4cfb3 --- /dev/null +++ b/contrib/lokinet-bootstrap-winnt/http.h @@ -0,0 +1,93 @@ +/*- + * Copyright 2012 Matthew Endsley + * All rights reserved + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted providing that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef HTTP_HTTP_H +#define HTTP_HTTP_H + +#if defined(__cplusplus) +extern "C" { +#endif + +/** + * Callbacks for handling response data. + * realloc_scratch - reallocate memory, cannot fail. There will only + * be one scratch buffer. Implemnentation may take + * advantage of this fact. + * body - handle HTTP response body data + * header - handle an HTTP header key/value pair + * code - handle the HTTP status code for the response + */ +struct http_funcs { + void* (*realloc_scratch)(void* opaque, void* ptr, int size); + void (*body)(void* opaque, const char* data, int size); + void (*header)(void* opaque, const char* key, int nkey, const char* value, int nvalue); + void (*code)(void* opqaue, int code); +}; + +struct http_roundtripper { + struct http_funcs funcs; + void *opaque; + char *scratch; + int code; + int parsestate; + int contentlength; + int state; + int nscratch; + int nkey; + int nvalue; + int chunked; +}; + +/** + * Initializes a rountripper with the specified response functions. This must + * be called before the rt object is used. + */ +void http_init(struct http_roundtripper* rt, struct http_funcs, void* opaque); + +/** + * Frees any scratch memory allocated during parsing. + */ +void http_free(struct http_roundtripper* rt); + +/** + * Parses a block of HTTP response data. Returns zero if the parser reached the + * end of the response, or an error was encountered. Use http_iserror to check + * for the presence of an error. Returns non-zero if more data is required for + * the response. + */ +int http_data(struct http_roundtripper* rt, const char* data, int size, int* read); + +/** + * Returns non-zero if a completed parser encounted an error. If http_data did + * not return non-zero, the results of this function are undefined. + */ +int http_iserror(struct http_roundtripper* rt); + +#if defined(__cplusplus) +} +#endif + +#endif From 9ba4ecc42dc6b698836c09536360f3cb48b7319f Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 14:27:25 -0500 Subject: [PATCH 10/38] refactor lokinet-bootstrap clean up and make more robust --- contrib/lokinet-bootstrap-winnt/Makefile | 15 +- contrib/lokinet-bootstrap-winnt/bootstrap.c | 212 +- contrib/lokinet-bootstrap-winnt/testnet.c | 2347 ------------------- 3 files changed, 151 insertions(+), 2423 deletions(-) delete mode 100644 contrib/lokinet-bootstrap-winnt/testnet.c diff --git a/contrib/lokinet-bootstrap-winnt/Makefile b/contrib/lokinet-bootstrap-winnt/Makefile index b62599add..1587bad15 100644 --- a/contrib/lokinet-bootstrap-winnt/Makefile +++ b/contrib/lokinet-bootstrap-winnt/Makefile @@ -22,11 +22,18 @@ LTO_FLAG = -flto LTO_LDFLAG = -flto -march=nocona -mfpmath=sse -Ofast endif +ifndef DEBUG +CFLAGS = -Ofast -march=nocona -mfpmath=sse +LDFLAGS = -s +else +CFLAGS = -O0 -g3 +endif + .PHONY: download prepare all default # windows target only .c.o: - $(CC) $(WINNT_INCLUDE) -Iinclude $(LTO_FLAG) -Ofast -march=nocona -mfpmath=sse $< -c + $(CC) $(WINNT_INCLUDE) -Iinclude $(LTO_FLAG) $(CFLAGS) $< -c zpipe: zpipe.c miniz.c $(NATIVE_CC) $(INCLUDE) -Iinclude $(LIBS) $^ -s -static -o $@ @@ -56,11 +63,9 @@ prepare-testnet: zpipe base64enc download echo ';' >> out.bin sed -i '57r out.bin' testnet.c -lokinet-bootstrap: bootstrap.o miniz.o - $(CC) $(WINNT_LIBS) -s -static $^ -o $@.exe $(LTO_LDFLAG) -lmbedx509 -lmbedtls -lmbedcrypto -lws2_32 +lokinet-bootstrap: bootstrap.o miniz.o http.o header.o chunk.o + $(CC) $(WINNT_LIBS) $(LDFLAGS) -static $^ -o $@.exe $(LTO_LDFLAG) -lmbedx509 -lmbedtls -lmbedcrypto -lws2_32 -lokinet-bootstrap-testnet: testnet.o miniz.o - $(CC) $(WINNT_LIBS) -s -static $^ -o $@.exe $(LTO_LDFLAG) -lmbedx509 -lmbedtls -lmbedcrypto -lws2_32 clean: -@rm lokinet*.exe -@rm base64enc diff --git a/contrib/lokinet-bootstrap-winnt/bootstrap.c b/contrib/lokinet-bootstrap-winnt/bootstrap.c index 5415b2720..3b97855a6 100644 --- a/contrib/lokinet-bootstrap-winnt/bootstrap.c +++ b/contrib/lokinet-bootstrap-winnt/bootstrap.c @@ -34,6 +34,7 @@ #include #include #include "miniz.h" +#include "http.h" /* PolarSSL */ #include @@ -2452,22 +2453,136 @@ const void *b; size_t bn; size_t s; { - char *p = malloc(s * (an + bn)); - memset(p, '\0', s * (an + bn)); - memcpy(p, a, an*s); - memcpy(p + an*s, b, bn*s); - return p; + char *p = malloc(s * (an + bn)); + memset(p, '\0', s * (an + bn)); + memcpy(p, a, an*s); + memcpy(p + an*s, b, bn*s); + return p; } +bool open_tls_sock(host, port) +char* host, *port; +{ + int r; + DWORD flags; + + r = mbedtls_net_connect(&server_fd, host, port, MBEDTLS_NET_PROTO_TCP); + if (r) + { + printf("error - failed to connect to server: %d\n", r); + return false; + } + + r = mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT); + if (r) + { + printf("error - failed to set TLS options: %d\n", r); + return false; + } + + mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_REQUIRED); + mbedtls_ssl_conf_ca_chain(&conf, &cacert, NULL); + mbedtls_ssl_conf_rng(&conf, mbedtls_ctr_drbg_random, &ctr_drbg); + + r = mbedtls_ssl_setup(&ssl, &conf); + if (r) + { + printf("error - failed to setup TLS session: %d\n", r); + return false; + } + + r = mbedtls_ssl_set_hostname(&ssl, host); + + if (r) + { + printf("error - failed to perform SNI: %d\n", r); + return false; + } + + mbedtls_ssl_set_bio(&ssl, &server_fd, mbedtls_net_send, mbedtls_net_recv, NULL); + + while ((r = mbedtls_ssl_handshake(&ssl)) != 0) + { + if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) + { + printf(" failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -r); + return false; + } + } + if ((flags = mbedtls_ssl_get_verify_result(&ssl)) != 0) + { + char vrfy_buf[512]; + printf(" failed\n"); + mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), " ! ", flags); + printf("%s\n", vrfy_buf); + return false; + } + return true; +} + +// Response data/funcs +struct HttpResponse { + char* body; + int code; + size_t size; +}; + +static void* response_realloc(opaque, ptr, size) +void* opaque, *ptr; +{ + return realloc(ptr, size); +} + +static void response_body(opaque, data, size) +void* opaque; +const char* data; +{ + struct HttpResponse* response = (struct HttpResponse*)opaque; + response->body = memncat(response->body, response->size, data, size, sizeof(char)); + response->size += size; +} + +static void response_header(opaque, ckey, nkey, cvalue, nvalue) +void* opaque; +const char* ckey, *cvalue; +{ +#if 0 + printf("%s, %d, %s, %d\n", ckey, nkey, cvalue, nvalue); +#endif +} + +static void response_code(opaque, code) +void* opaque; +{ + struct HttpResponse* response = (struct HttpResponse*)opaque; + response->code = code; +} + +static const struct http_funcs callbacks = +{ + response_realloc, + response_body, + response_header, + response_code, +}; + main(argc, argv) char** argv; /* It never occurred to me that this was writable to begin with... */ { - DWORD version, major, minor, build, flags; - int r, len; + DWORD version, major, minor, build; + int r, s, len; FILE *bootstrapRC; char path[MAX_PATH], buf[1024], port[8]; - char *ua, *rq, *resp, *uri, *savePath; + char *ua, *resp, *uri, *savePath; + char rq[1024]; url_parser_url_t *parsed_uri; + struct HttpResponse rsp; + struct http_roundtripper rt; + + http_init(&rt, callbacks, &rsp); + rsp.size = 0; + rsp.body = malloc(0); + rsp.code = 0; if (argc == 1) { @@ -2494,7 +2609,7 @@ char** argv; /* It never occurred to me that this was writable to begin with... printf("Failed to initialise polarssl\n"); return -1; } - + /* fill in user-agent string */ version = GetVersion(); major = (DWORD)(LOBYTE(LOWORD(version))); @@ -2502,7 +2617,6 @@ char** argv; /* It never occurred to me that this was writable to begin with... if (version < 0x80000000) build = (DWORD)(HIWORD(version)); ua = malloc(512); - rq = malloc(4096); snprintf(ua, 512, "%s%d.%d", userAgent, major, minor); /* get host name, set port if blank */ @@ -2510,53 +2624,14 @@ char** argv; /* It never occurred to me that this was writable to begin with... parsed_uri->port = 443; printf("connecting to %s on port %d...",parsed_uri->host, parsed_uri->port); + sprintf(port, "%d", parsed_uri->port); - r = mbedtls_net_connect(&server_fd, parsed_uri->host, port, MBEDTLS_NET_PROTO_TCP); - if (r) - { - printf("error - failed to connect to server: %d\n", r); - goto exit; - } - r = mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT); - if (r) - { - printf("error - failed to set TLS options: %d\n", r); + if (!open_tls_sock(parsed_uri->host, port)) goto exit; - } - mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_REQUIRED); - mbedtls_ssl_conf_ca_chain(&conf, &cacert, NULL); - mbedtls_ssl_conf_rng(&conf, mbedtls_ctr_drbg_random, &ctr_drbg); - r = mbedtls_ssl_setup(&ssl, &conf); - if (r) - { - printf("error - failed to setup TLS session: %d\n", r); - goto exit; - } - r = mbedtls_ssl_set_hostname(&ssl, parsed_uri->host); - if (r) - { - printf("error - failed to perform SNI: %d\n", r); - goto exit; - } - mbedtls_ssl_set_bio(&ssl, &server_fd, mbedtls_net_send, mbedtls_net_recv, NULL); - while ((r = mbedtls_ssl_handshake(&ssl)) != 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf(" failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -r); - goto exit; - } - } - if ((flags = mbedtls_ssl_get_verify_result(&ssl)) != 0) - { - char vrfy_buf[512]; - printf(" failed\n"); - mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), " ! ", flags); - printf("%s\n", vrfy_buf); - goto exit; - } - printf("\nDownloading %s...", &parsed_uri->path[1]); + + printf("\nDownloading %s...", argv[1]); + snprintf(rq, 512, "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n", parsed_uri->path, parsed_uri->host, ua); while ((r = mbedtls_ssl_write(&ssl, (unsigned char*)rq, strlen(rq))) <= 0) { @@ -2566,7 +2641,7 @@ char** argv; /* It never occurred to me that this was writable to begin with... goto exit; } } - memset(rq, 0, 4096); + len = 0; do { r = mbedtls_ssl_read(&ssl, (unsigned char*)buf, 1024); @@ -2574,29 +2649,24 @@ char** argv; /* It never occurred to me that this was writable to begin with... break; else { - rq = memncat(rq, len, buf, r, sizeof(char)); - len += r; + s = http_data(&rt, buf, r, &len); } - } while (r); - printf("%d bytes downloaded to core.\n", len); + } while (r && s); + + printf("%d bytes downloaded to core.\n", rsp.size); mbedtls_ssl_close_notify(&ssl); - if (!strstr(rq, "200 OK")) + + if (rsp.code != 200) { printf("An error occurred.\n"); - printf("Server response:\n%s", rq); + printf("Server response:\n%s", rsp.body); goto exit; } + snprintf(path, MAX_PATH, savePath); - resp = strstr(rq, "Content-Length"); - r = strcspn(resp, "0123456789"); - memcpy(buf, &resp[r], 4); - buf[3] = '\0'; - r = atoi(buf); - resp = strstr(rq, "\r\n\r\n"); - memcpy(buf, &resp[4], r); printf("Writing %s...\n", path); bootstrapRC = fopen(path, "wb"); - fwrite(buf, 1, r, bootstrapRC); + fwrite(rsp.body, 1, rsp.size, bootstrapRC); fclose(bootstrapRC); r = 0; @@ -2610,8 +2680,8 @@ exit: mbedtls_ctr_drbg_free(&ctr_drbg); mbedtls_entropy_free(&entropy); free(ua); - free(rq); free(ca_certs); free_parsed_url(parsed_uri); + http_free(&rt); return r; -} \ No newline at end of file +} diff --git a/contrib/lokinet-bootstrap-winnt/testnet.c b/contrib/lokinet-bootstrap-winnt/testnet.c deleted file mode 100644 index 5605cfd6b..000000000 --- a/contrib/lokinet-bootstrap-winnt/testnet.c +++ /dev/null @@ -1,2347 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* This is the LokiNET Windows NT bootstrap loader for internal use: -* it is hard-coded to download https://i2p.rocks/i2procks.signed -* and save it at $APPDATA/.lokinet/bootstrap.signed. -* -* For general/public use, see 'bootstrap.c' in the same folder, that one is a -* bootstrap loader that takes a URI and a local file path, to download a -* bootstrap RC from a trusted service node. -* -rick -*/ - -#include -#include -#include -#include -#include -#include "miniz.h" - -/* PolarSSL */ -#include -#include -#include -#include -#include -#include -#include - -/* PolarSSL internal state */ -mbedtls_net_context server_fd; -mbedtls_entropy_context entropy; -mbedtls_ctr_drbg_context ctr_drbg; -mbedtls_ssl_context ssl; -mbedtls_ssl_config conf; -mbedtls_x509_crt cacert; -unsigned char* ca_certs; - -static const char* request = "GET /i2procks.signed HTTP/1.0\r\n"; -static char userAgent[] = "NetRunner_Micro/0.1 PolarSSL/2.16.0;U;Windows NT "; -static const unsigned char ca_cert_store_encoded[] = -"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" -"aWpS2GvI0Lp/dPTfrN7/Nz7qCU4="; - -bool initTLS() -{ - int inf_status,r; - size_t out; - unsigned long inf_len; - HCRYPTPROV hprovider; - unsigned char* tmp; - char str[512], seed[64]; - - mbedtls_net_init(&server_fd); - mbedtls_ssl_init(&ssl); - mbedtls_ssl_config_init(&conf); - mbedtls_x509_crt_init(&cacert); - mbedtls_entropy_init(&entropy); - mbedtls_ctr_drbg_init(&ctr_drbg); - - tmp = malloc(524288); - - r = mbedtls_base64_decode(tmp, 524288, &out, ca_cert_store_encoded, sizeof(ca_cert_store_encoded)-1); - if (r) - { - mbedtls_strerror(r, (char*)tmp, 524288); - printf("decoding failed: %s\n", tmp); - free(tmp); - return false; - } - /* inflate ca certs, they are still compressed */ - ca_certs = malloc(524288); - inf_len = 524288; - - inf_status = uncompress(ca_certs, &inf_len, tmp, out); - if (inf_status != Z_OK) - { - printf("decompression failed: %s\n", mz_error(inf_status)); - free(tmp); - return false; - } - - free(tmp); - - /* On Windows NT 4.0 or later, use CryptoAPI to grab 64 bytes of random data */ - hprovider = 0; - CryptAcquireContext(&hprovider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT); - CryptGenRandom(hprovider, 64, (BYTE*)&seed); - CryptReleaseContext(hprovider, 0); - seed[63] = '\0'; /* null-terminate for safety */ - - if (mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char*)seed, 64) != 0) { - return false; - } - r = mbedtls_x509_crt_parse(&cacert, ca_certs, inf_len+1); - if (r < 0) { - mbedtls_strerror(r, str, 512); - printf("parse ca cert store failed\n ! mbedtls_x509_crt_parse returned: %s\n\n", str); - return false; - } - return true; -} - -void *memncat(a, an, b, bn, s) -const void *a; -size_t an; -const void *b; -size_t bn; -size_t s; -{ - char *p = malloc(s * (an + bn)); - memset(p, '\0', s * (an + bn)); - memcpy(p, a, an*s); - memcpy(p + an*s, b, bn*s); - return p; -} - -main(argc, argv) -char** argv; -{ - DWORD version, major, minor, build, flags; - int r, len; - FILE* bootstrapRC; - char path[MAX_PATH], buf[512]; - char* ua, *rq, *resp; - - if (!initTLS()) - { - printf("Failed to initialise polarssl\n"); - return -1; - } - - /* fill in user-agent string */ - version = GetVersion(); - major = (DWORD)(LOBYTE(LOWORD(version))); - minor = (DWORD)(HIBYTE(LOWORD(version))); - if (version < 0x80000000) - build = (DWORD)(HIWORD(version)); - ua = malloc(512); - rq = malloc(4096); - snprintf(ua, 512, "%s%d.%d", userAgent, major, minor); - - printf("connecting to http://i2p.rocks/..."); - r = mbedtls_net_connect(&server_fd, "i2p.rocks", "443", MBEDTLS_NET_PROTO_TCP); - if (r) - { - printf("error - failed to connect to bootstrap server: %d\n", r); - goto exit; - } - r = mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT); - if (r) - { - printf("error - failed to set TLS options: %d\n", r); - goto exit; - } - mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_REQUIRED); - mbedtls_ssl_conf_ca_chain(&conf, &cacert, NULL); - mbedtls_ssl_conf_rng(&conf, mbedtls_ctr_drbg_random, &ctr_drbg); - r = mbedtls_ssl_setup(&ssl, &conf); - if (r) - { - printf("error - failed to setup TLS session: %d\n", r); - goto exit; - } - r = mbedtls_ssl_set_hostname(&ssl, "i2p.rocks"); - if (r) - { - printf("error - failed to perform SNI: %d\n", r); - goto exit; - } - mbedtls_ssl_set_bio(&ssl, &server_fd, mbedtls_net_send, mbedtls_net_recv, NULL); - while ((r = mbedtls_ssl_handshake(&ssl)) != 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf(" failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -r); - goto exit; - } - } - if ((flags = mbedtls_ssl_get_verify_result(&ssl)) != 0) - { - char vrfy_buf[512]; - printf(" failed\n"); - mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), " ! ", flags); - printf("%s\n", vrfy_buf); - goto exit; - } - printf("\nDownloading i2procks.signed..."); - snprintf(rq, 512, "%sHost: i2p.rocks\r\nUser-Agent: %s\r\n\r\n", request, ua); - /* printf("%s",rq); */ - while ((r = mbedtls_ssl_write(&ssl, (unsigned char*)rq, strlen(rq))) <= 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf("failed! error %d\n\n", r); - goto exit; - } - } - memset(rq, 0, 1024); - len = 0; - do { - r = mbedtls_ssl_read(&ssl, (unsigned char*)buf, 512); - if (r <= 0) { - break; - } - else { - rq = memncat(rq, len, buf, r, sizeof(char)); - len += r; - } - } while (r != 0); - printf("%d bytes downloaded to core.\n", len); - mbedtls_ssl_close_notify(&ssl); - if (!strstr(rq, "200 OK")) - { - printf("An error occurred.\n"); - printf("Server response:\n%s", rq); - goto exit; - } - snprintf(path, MAX_PATH, "%s\\.lokinet\\bootstrap.signed", getenv("APPDATA")); - resp = strstr(rq, "Content-Length"); - r = strcspn(resp, "0123456789"); - memcpy(buf, &resp[r], 4); - buf[3] = '\0'; - r = atoi(buf); - resp = strstr(rq, "\r\n\r\n"); - memcpy(buf, &resp[4], r); - printf("Writing %s...\n", path); - bootstrapRC = fopen(path, "wb"); - fwrite(buf, 1, r, bootstrapRC); - fclose(bootstrapRC); - - r = 0; - -exit: - mbedtls_ssl_close_notify(&ssl); - mbedtls_net_free(&server_fd); - mbedtls_x509_crt_free(&cacert); - mbedtls_ssl_free(&ssl); - mbedtls_ssl_config_free(&conf); - mbedtls_ctr_drbg_free(&ctr_drbg); - mbedtls_entropy_free(&entropy); - free(ua); - free(rq); - free(ca_certs); - return r; -} \ No newline at end of file From b002d09f80c62969426133c6b9686e877df546f9 Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 15:18:48 -0500 Subject: [PATCH 11/38] we grab a prebuilt bootstrap at build time fix iss makefile --- .gitignore | 3 +++ win32-setup/Makefile | 8 ++++++++ win32-setup/lokinet-win32.iss | 2 +- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d21ebf252..06bd92264 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ GTAGS GRTAGS GPATH version.txt + +lokinet-bootstrap.exe +regdbhelper.dll diff --git a/win32-setup/Makefile b/win32-setup/Makefile index c34b72de9..ef3412a62 100644 --- a/win32-setup/Makefile +++ b/win32-setup/Makefile @@ -1,6 +1,14 @@ # Makefile for windows install pkg and helper library +all: regdbhelper.dll lokinet-bootstrap.exe + +default: all + regdbhelper.dll: i686-w64-mingw32-gcc regdb_helper.c -o $@ -shared -Os -s + +lokinet-bootstrap.exe: + wget https://snowlight.net/loki/win32-dist/lokinet-bootstrap.exe + clean: rm *.dll *.exe diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index 590153cea..b048fddee 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -93,7 +93,7 @@ Source: "{#DevPath}build\lokinet-rcutil.exe"; DestDir: "{app}"; Flags: ignorever Source: "{#DevPath}LICENSE"; DestDir: "{app}"; Flags: ignoreversion ; delet this after finishing setup, we only need it to extract the drivers ; and download an initial RC. The UI has its own bootstrap built-in! -Source: "{#DevPath}lokinet-bootstrap.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall +Source: "lokinet-bootstrap.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall Source: "{tmp}\7z.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall external ; if nonexistent, then inet6 was already installed Source: "{tmp}\inet6.7z"; DestDir: "{app}"; Flags: ignoreversion external deleteafterinstall skipifsourcedoesntexist; MinVersion: 0,5.0; OnlyBelowVersion: 0,5.1 From dd29f06b92f48fd36a96040d2f7a1e35245a4436 Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 16:54:21 -0500 Subject: [PATCH 12/38] try set up environment for travis installer build aaa ok we can stick these in when we're ready to test inno-setup --- .travis.yml | 4 +++- win32-setup/lokinet-win32.iss | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index ff4ccdb96..10ca52123 100644 --- a/.travis.yml +++ b/.travis.yml @@ -144,8 +144,10 @@ addons: before_install: - if [ "$TRAVIS_OS_NAME" == "windows" ]; then - choco install make ninja; + choco install make ninja dotnet3.5; choco upgrade cmake.install; + choco install innosetup --version 5.6.1.20190126; + choco install inno-download-plugin; export CC="/c/Program Files/LLVM/bin/clang-cl"; export CXX="/c/Program Files/LLVM/bin/clang-cl"; fi diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index b048fddee..2f618c6f4 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -1,7 +1,7 @@ ; Script generated by the Inno Script Studio Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! -#define MyAppName "loki-network" +#define MyAppName "Lokinet" #define MyAppVersion "0.5.0" #define MyAppPublisher "Loki Project" #define MyAppURL "https://loki.network" @@ -37,7 +37,7 @@ AllowNoIcons=yes LicenseFile={#DevPath}LICENSE OutputDir={#DevPath}win32-setup OutputBaseFilename=lokinet-win32 -Compression=lzma +Compression=lzma2/ultra64 SolidCompression=yes VersionInfoVersion=0.5.0 VersionInfoCompany=Loki Project @@ -103,6 +103,10 @@ Source: "{tmp}\tuntapv9_n6.7z"; DestDir: "{app}"; Flags: ignoreversion external ; NOTE: Don't use "Flags: ignoreversion" on any shared system files Source: "regdbhelper.dll"; Flags: dontcopy + +; build only if we have the 32-bit bins as well +; (i.e. *not* a Travis CI build, travis isn't expected to have these around) +#ifndef SINGLE_ARCH Source: "C:\Windows\Fonts\iosevka-term-bold.ttf"; DestDir: "{fonts}"; FontInstall: "Iosevka Term Bold"; Flags: onlyifdoesntexist uninsneveruninstall Source: "C:\Windows\Fonts\iosevka-term-bolditalic.ttf"; DestDir: "{fonts}"; FontInstall: "Iosevka Term Bold Italic"; Flags: onlyifdoesntexist uninsneveruninstall Source: "C:\Windows\Fonts\iosevka-term-boldoblique.ttf"; DestDir: "{fonts}"; FontInstall: "Iosevka Term Bold Oblique"; Flags: onlyifdoesntexist uninsneveruninstall @@ -124,6 +128,7 @@ Source: "C:\Windows\Fonts\iosevka-term-regular.ttf"; DestDir: "{fonts}"; FontIns Source: "C:\Windows\Fonts\iosevka-term-thin.ttf"; DestDir: "{fonts}"; FontInstall: "Iosevka Term Thin"; Flags: onlyifdoesntexist uninsneveruninstall Source: "C:\Windows\Fonts\iosevka-term-thinitalic.ttf"; DestDir: "{fonts}"; FontInstall: "Iosevka Term Thin Italic"; Flags: onlyifdoesntexist uninsneveruninstall Source: "C:\Windows\Fonts\iosevka-term-thinoblique.ttf"; DestDir: "{fonts}"; FontInstall: "Iosevka Term Thin Oblique"; Flags: onlyifdoesntexist uninsneveruninstall +#endif [UninstallDelete] Type: filesandordirs; Name: "{app}\tap-windows*" From 4389e3fee2021c73b344cb2ad754d143861d37c7 Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 18:45:07 -0500 Subject: [PATCH 13/38] try install .net manually use full path test --- .travis.yml | 3 ++- llarp/net/net.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 10ca52123..eddbd0e1d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -147,7 +147,8 @@ before_install: choco install make ninja dotnet3.5; choco upgrade cmake.install; choco install innosetup --version 5.6.1.20190126; - choco install inno-download-plugin; + choco install inno-download-plugin; + /c/Windows/system32/dism.exe -online -enable-feature -featurename:NetFx3 -norestart -All export CC="/c/Program Files/LLVM/bin/clang-cl"; export CXX="/c/Program Files/LLVM/bin/clang-cl"; fi diff --git a/llarp/net/net.cpp b/llarp/net/net.cpp index c04de2a83..846cb5097 100644 --- a/llarp/net/net.cpp +++ b/llarp/net/net.cpp @@ -856,7 +856,7 @@ namespace llarp { std::vector< IPRange > currentRanges; IterAllNetworkInterfaces([&](ifaddrs* i) { - if(i && i->ifa_addr) + if(i) { const auto fam = i->ifa_addr->sa_family; if(fam != AF_INET) From ade2ae1e9ae7daeffe5cccf38bc7cddcd9822c86 Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 20:57:58 -0500 Subject: [PATCH 14/38] ok let's see how we're locked up more debug --- llarp/net/net.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/llarp/net/net.cpp b/llarp/net/net.cpp index 846cb5097..dd4108d71 100644 --- a/llarp/net/net.cpp +++ b/llarp/net/net.cpp @@ -856,15 +856,16 @@ namespace llarp { std::vector< IPRange > currentRanges; IterAllNetworkInterfaces([&](ifaddrs* i) { - if(i) + if(i && i->ifa_addr) { const auto fam = i->ifa_addr->sa_family; if(fam != AF_INET) - return; + return ""; auto* addr = (sockaddr_in*)i->ifa_addr; auto* mask = (sockaddr_in*)i->ifa_netmask; nuint32_t ifaddr{addr->sin_addr.s_addr}; - nuint32_t ifmask{mask->sin_addr.s_addr}; + nuint32_t ifmask{mask->sin_addr.s_addr}; + LogInfo("found ", ifaddr, "with mask ", ifmask); currentRanges.emplace_back( IPRange{net::IPPacket::ExpandV4(xntohl(ifaddr)), net::IPPacket::ExpandV4(xntohl(ifmask))}); @@ -878,7 +879,8 @@ namespace llarp const huint32_t hiaddr = ipaddr_ipv4_bits(10, oct, 255, 255); bool hit = false; for(const auto& range : currentRanges) - { + { + LogInfo("testing ", loaddr.ToString()); hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } if(!hit) @@ -893,7 +895,7 @@ namespace llarp const huint32_t hiaddr = ipaddr_ipv4_bits(192, 168, oct, 255); bool hit = false; for(const auto& range : currentRanges) - { + { hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } if(!hit) @@ -907,7 +909,7 @@ namespace llarp const huint32_t hiaddr = ipaddr_ipv4_bits(172, 16, oct, 255); bool hit = false; for(const auto& range : currentRanges) - { + { hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } if(!hit) From cbdbe94babd8d948f6da8ed5b7b04d38d889012e Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 21:14:04 -0500 Subject: [PATCH 15/38] skip null adapters --- llarp/net/net.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/llarp/net/net.cpp b/llarp/net/net.cpp index dd4108d71..6c2e303e2 100644 --- a/llarp/net/net.cpp +++ b/llarp/net/net.cpp @@ -864,11 +864,13 @@ namespace llarp auto* addr = (sockaddr_in*)i->ifa_addr; auto* mask = (sockaddr_in*)i->ifa_netmask; nuint32_t ifaddr{addr->sin_addr.s_addr}; - nuint32_t ifmask{mask->sin_addr.s_addr}; + nuint32_t ifmask{mask->sin_addr.s_addr}; LogInfo("found ", ifaddr, "with mask ", ifmask); - currentRanges.emplace_back( - IPRange{net::IPPacket::ExpandV4(xntohl(ifaddr)), - net::IPPacket::ExpandV4(xntohl(ifmask))}); + if(addr->sin_addr.s_addr) + // skip unconfig'd adapters (windows passes these through the unix-y wrapper) + currentRanges.emplace_back( + IPRange{net::IPPacket::ExpandV4(xntohl(ifaddr)), + net::IPPacket::ExpandV4(xntohl(ifmask))}); } }); // try 10.x.0.0/16 @@ -879,7 +881,7 @@ namespace llarp const huint32_t hiaddr = ipaddr_ipv4_bits(10, oct, 255, 255); bool hit = false; for(const auto& range : currentRanges) - { + { LogInfo("testing ", loaddr.ToString()); hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } @@ -895,7 +897,7 @@ namespace llarp const huint32_t hiaddr = ipaddr_ipv4_bits(192, 168, oct, 255); bool hit = false; for(const auto& range : currentRanges) - { + { hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } if(!hit) @@ -909,7 +911,7 @@ namespace llarp const huint32_t hiaddr = ipaddr_ipv4_bits(172, 16, oct, 255); bool hit = false; for(const auto& range : currentRanges) - { + { hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } if(!hit) From ed6ef2d52749e9f950b776969753f88932a9f918 Mon Sep 17 00:00:00 2001 From: Rick V Date: Mon, 9 Sep 2019 21:28:23 -0500 Subject: [PATCH 16/38] clang-format --- llarp/net/net.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/llarp/net/net.cpp b/llarp/net/net.cpp index 6c2e303e2..36e85e790 100644 --- a/llarp/net/net.cpp +++ b/llarp/net/net.cpp @@ -860,14 +860,18 @@ namespace llarp { const auto fam = i->ifa_addr->sa_family; if(fam != AF_INET) - return ""; + return; auto* addr = (sockaddr_in*)i->ifa_addr; auto* mask = (sockaddr_in*)i->ifa_netmask; nuint32_t ifaddr{addr->sin_addr.s_addr}; nuint32_t ifmask{mask->sin_addr.s_addr}; - LogInfo("found ", ifaddr, "with mask ", ifmask); - if(addr->sin_addr.s_addr) - // skip unconfig'd adapters (windows passes these through the unix-y wrapper) +#ifdef _WIN32 + // do not delete, otherwise GCC will do horrible things to this lambda + LogDebug("found ", ifaddr, " with mask ", ifmask); +#endif + if(addr->sin_addr.s_addr) + // skip unconfig'd adapters (windows passes these through the unix-y + // wrapper) currentRanges.emplace_back( IPRange{net::IPPacket::ExpandV4(xntohl(ifaddr)), net::IPPacket::ExpandV4(xntohl(ifmask))}); @@ -882,7 +886,6 @@ namespace llarp bool hit = false; for(const auto& range : currentRanges) { - LogInfo("testing ", loaddr.ToString()); hit = hit || range.ContainsV4(loaddr) || range.ContainsV4(hiaddr); } if(!hit) From cb8d88326eb9dfbf080c3fb6f5dfdc5dc2329aa2 Mon Sep 17 00:00:00 2001 From: Rick V Date: Tue, 10 Sep 2019 18:26:54 -0500 Subject: [PATCH 17/38] undo travis changes --- .travis.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index eddbd0e1d..ff4ccdb96 100644 --- a/.travis.yml +++ b/.travis.yml @@ -144,11 +144,8 @@ addons: before_install: - if [ "$TRAVIS_OS_NAME" == "windows" ]; then - choco install make ninja dotnet3.5; + choco install make ninja; choco upgrade cmake.install; - choco install innosetup --version 5.6.1.20190126; - choco install inno-download-plugin; - /c/Windows/system32/dism.exe -online -enable-feature -featurename:NetFx3 -norestart -All export CC="/c/Program Files/LLVM/bin/clang-cl"; export CXX="/c/Program Files/LLVM/bin/clang-cl"; fi From bf2ecaa74ac123404e10f00369442cbdeab72ded Mon Sep 17 00:00:00 2001 From: Rick V Date: Tue, 10 Sep 2019 18:39:54 -0500 Subject: [PATCH 18/38] bump to 0.5.1 --- llarp/win32/version.rc | 8 ++++---- test/win32/test.rc | 12 ++++++------ ui-win32/Properties/AssemblyInfo.cs | 8 ++++---- win32-setup/lokinet-win32.iss | 14 +++++++------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/llarp/win32/version.rc b/llarp/win32/version.rc index ed9407ad5..5c7adba02 100644 --- a/llarp/win32/version.rc +++ b/llarp/win32/version.rc @@ -81,18 +81,18 @@ BEGIN VALUE "CompanyName", "Loki Foundation" VALUE "FileDescription", "LokiNET daemon for Microsoft® Windows® NT™" #ifdef LLARP_RELEASE_MOTTO - VALUE "FileVersion", VERSION_STRING(0.5.0, RELEASE_MOTTO, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) #else - VALUE "FileVersion", VERSION_STRING(0.5.0-dev-, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) #endif VALUE "InternalName", "llarpd" VALUE "LegalCopyright", "Copyright ©2018-2019 Jeff Becker, Rick V for the Loki Foundation. All rights reserved. This software is provided under the terms of the zlib-libpng licence; see the file LICENSE for details." VALUE "OriginalFilename", "llarpd.exe" VALUE "ProductName", "LokiNET for Windows" #ifdef LLARP_RELEASE_MOTTO - VALUE "ProductVersion", VERSION_STRING(0.5.0, RELEASE_MOTTO, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) #else - VALUE "ProductVersion", VERSION_STRING(0.5.0-dev-, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) #endif END END diff --git a/test/win32/test.rc b/test/win32/test.rc index 797ac51b3..69d24a218 100644 --- a/test/win32/test.rc +++ b/test/win32/test.rc @@ -81,12 +81,12 @@ BEGIN VALUE "CompanyName", "Loki Foundation" VALUE "FileDescription", "LokiNET for Microsoft® Windows® NT™" #ifdef LLARP_RELEASE_MOTTO - VALUE "FileVersion", VERSION_STRING(0.5.0, RELEASE_MOTTO, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) #else #ifdef __GNUC__ - VALUE "FileVersion", VERSION_STRING(0.5.0-dev-, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) #else - VALUE "FileVersion", "0.5.0-dev" + VALUE "FileVersion", "0.5.1-dev" #endif #endif VALUE "InternalName", "llarpd" @@ -94,12 +94,12 @@ BEGIN VALUE "OriginalFilename", "llarpd.exe" VALUE "ProductName", "LokiNET for Windows" #ifdef LLARP_RELEASE_MOTTO - VALUE "ProductVersion", VERSION_STRING(0.5.0, RELEASE_MOTTO, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) #else #ifdef __GNUC__ - VALUE "ProductVersion", VERSION_STRING(0.5.0-dev-, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) #else - VALUE "ProductVersion", "0.5.0-dev" + VALUE "ProductVersion", "0.5.1-dev" #endif #endif END diff --git a/ui-win32/Properties/AssemblyInfo.cs b/ui-win32/Properties/AssemblyInfo.cs index 831e060c0..d6291c7ee 100644 --- a/ui-win32/Properties/AssemblyInfo.cs +++ b/ui-win32/Properties/AssemblyInfo.cs @@ -37,10 +37,10 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.5.0")] -[assembly: AssemblyFileVersion("0.5.0")] +[assembly: AssemblyVersion("0.5.1")] +[assembly: AssemblyFileVersion("0.5.1")] #if DEBUG -[assembly: AssemblyInformationalVersion("0.5.0-dev-{chash:8}")] +[assembly: AssemblyInformationalVersion("0.5.1-dev-{chash:8}")] #else -[assembly: AssemblyInformationalVersion("0.5.0 (RELEASE_CODENAME)")] +[assembly: AssemblyInformationalVersion("0.5.1 (RELEASE_CODENAME)")] #endif \ No newline at end of file diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index 2f618c6f4..4c68d75be 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Lokinet" -#define MyAppVersion "0.5.0" +#define MyAppVersion "0.5.1" #define MyAppPublisher "Loki Project" #define MyAppURL "https://loki.network" #define MyAppExeName "lokinetui.exe" @@ -39,18 +39,18 @@ OutputDir={#DevPath}win32-setup OutputBaseFilename=lokinet-win32 Compression=lzma2/ultra64 SolidCompression=yes -VersionInfoVersion=0.5.0 +VersionInfoVersion=0.5.1 VersionInfoCompany=Loki Project VersionInfoDescription=LokiNET for Microsoft® Windows® NT™ #ifndef RELEASE -VersionInfoTextVersion=0.5.0-dev-{#VCSRev} -VersionInfoProductTextVersion=0.5.0-dev-{#VCSRev} +VersionInfoTextVersion=0.5.1-dev-{#VCSRev} +VersionInfoProductTextVersion=0.5.1-dev-{#VCSRev} #else -VersionInfoTextVersion=0.5.0 -VersionInfoProductTextVersion=0.5.0 ({#Codename}) +VersionInfoTextVersion=0.5.1 +VersionInfoProductTextVersion=0.5.1 ({#Codename}) #endif VersionInfoProductName=LokiNET -VersionInfoProductVersion=0.5.0 +VersionInfoProductVersion=0.5.1 InternalCompressLevel=ultra64 MinVersion=0,5.0 ArchitecturesInstallIn64BitMode=x64 From 00d34709eb3629cbfd0d89d2b518fddcbc143dac Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 16:33:30 -0500 Subject: [PATCH 19/38] bump to 0.5.2 --- llarp/win32/abyss.rc | 8 ++++---- llarp/win32/version.rc | 8 ++++---- test/win32/test.rc | 12 ++++++------ ui-win32/Properties/AssemblyInfo.cs | 8 ++++---- win32-setup/lokinet-win32.iss | 14 +++++++------- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/llarp/win32/abyss.rc b/llarp/win32/abyss.rc index 3280555c4..a3d464b14 100644 --- a/llarp/win32/abyss.rc +++ b/llarp/win32/abyss.rc @@ -81,18 +81,18 @@ BEGIN VALUE "CompanyName", "Loki Foundation" VALUE "FileDescription", "LokiNET for Microsoft® Windows® NT™" #ifdef LLARP_RELEASE_MOTTO - VALUE "FileVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.2, RELEASE_MOTTO, GIT_REV) #else - VALUE "FileVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.2-dev-, GIT_REV) #endif VALUE "InternalName", "llarpd" VALUE "LegalCopyright", "Copyright ©2018-2019 Jeff Becker, Rick V for the Loki Foundation. All rights reserved. This software is provided under the terms of the zlib-libpng licence; see the file LICENSE for details." VALUE "OriginalFilename", "abyss-main.exe" VALUE "ProductName", "LokiNET for Windows" #ifdef LLARP_RELEASE_MOTTO - VALUE "ProductVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.2, RELEASE_MOTTO, GIT_REV) #else - VALUE "ProductVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.2-dev-, GIT_REV) #endif END END diff --git a/llarp/win32/version.rc b/llarp/win32/version.rc index 5c7adba02..c4f76ac10 100644 --- a/llarp/win32/version.rc +++ b/llarp/win32/version.rc @@ -81,18 +81,18 @@ BEGIN VALUE "CompanyName", "Loki Foundation" VALUE "FileDescription", "LokiNET daemon for Microsoft® Windows® NT™" #ifdef LLARP_RELEASE_MOTTO - VALUE "FileVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.2, RELEASE_MOTTO, GIT_REV) #else - VALUE "FileVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.2-dev-, GIT_REV) #endif VALUE "InternalName", "llarpd" VALUE "LegalCopyright", "Copyright ©2018-2019 Jeff Becker, Rick V for the Loki Foundation. All rights reserved. This software is provided under the terms of the zlib-libpng licence; see the file LICENSE for details." VALUE "OriginalFilename", "llarpd.exe" VALUE "ProductName", "LokiNET for Windows" #ifdef LLARP_RELEASE_MOTTO - VALUE "ProductVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.2, RELEASE_MOTTO, GIT_REV) #else - VALUE "ProductVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.2-dev-, GIT_REV) #endif END END diff --git a/test/win32/test.rc b/test/win32/test.rc index 69d24a218..4be81a76f 100644 --- a/test/win32/test.rc +++ b/test/win32/test.rc @@ -81,12 +81,12 @@ BEGIN VALUE "CompanyName", "Loki Foundation" VALUE "FileDescription", "LokiNET for Microsoft® Windows® NT™" #ifdef LLARP_RELEASE_MOTTO - VALUE "FileVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.2, RELEASE_MOTTO, GIT_REV) #else #ifdef __GNUC__ - VALUE "FileVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) + VALUE "FileVersion", VERSION_STRING(0.5.2-dev-, GIT_REV) #else - VALUE "FileVersion", "0.5.1-dev" + VALUE "FileVersion", "0.5.2-dev" #endif #endif VALUE "InternalName", "llarpd" @@ -94,12 +94,12 @@ BEGIN VALUE "OriginalFilename", "llarpd.exe" VALUE "ProductName", "LokiNET for Windows" #ifdef LLARP_RELEASE_MOTTO - VALUE "ProductVersion", VERSION_STRING(0.5.1, RELEASE_MOTTO, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.2, RELEASE_MOTTO, GIT_REV) #else #ifdef __GNUC__ - VALUE "ProductVersion", VERSION_STRING(0.5.1-dev-, GIT_REV) + VALUE "ProductVersion", VERSION_STRING(0.5.2-dev-, GIT_REV) #else - VALUE "ProductVersion", "0.5.1-dev" + VALUE "ProductVersion", "0.5.2-dev" #endif #endif END diff --git a/ui-win32/Properties/AssemblyInfo.cs b/ui-win32/Properties/AssemblyInfo.cs index d6291c7ee..d09b6bde3 100644 --- a/ui-win32/Properties/AssemblyInfo.cs +++ b/ui-win32/Properties/AssemblyInfo.cs @@ -37,10 +37,10 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.5.1")] -[assembly: AssemblyFileVersion("0.5.1")] +[assembly: AssemblyVersion("0.5.2")] +[assembly: AssemblyFileVersion("0.5.2")] #if DEBUG -[assembly: AssemblyInformationalVersion("0.5.1-dev-{chash:8}")] +[assembly: AssemblyInformationalVersion("0.5.2-dev-{chash:8}")] #else -[assembly: AssemblyInformationalVersion("0.5.1 (RELEASE_CODENAME)")] +[assembly: AssemblyInformationalVersion("0.5.2 (RELEASE_CODENAME)")] #endif \ No newline at end of file diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index 4c68d75be..e4b61488b 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -2,7 +2,7 @@ ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! #define MyAppName "Lokinet" -#define MyAppVersion "0.5.1" +#define MyAppVersion "0.5.2" #define MyAppPublisher "Loki Project" #define MyAppURL "https://loki.network" #define MyAppExeName "lokinetui.exe" @@ -39,18 +39,18 @@ OutputDir={#DevPath}win32-setup OutputBaseFilename=lokinet-win32 Compression=lzma2/ultra64 SolidCompression=yes -VersionInfoVersion=0.5.1 +VersionInfoVersion=0.5.2 VersionInfoCompany=Loki Project VersionInfoDescription=LokiNET for Microsoft® Windows® NT™ #ifndef RELEASE -VersionInfoTextVersion=0.5.1-dev-{#VCSRev} -VersionInfoProductTextVersion=0.5.1-dev-{#VCSRev} +VersionInfoTextVersion=0.5.2-dev-{#VCSRev} +VersionInfoProductTextVersion=0.5.2-dev-{#VCSRev} #else -VersionInfoTextVersion=0.5.1 -VersionInfoProductTextVersion=0.5.1 ({#Codename}) +VersionInfoTextVersion=0.5.2 +VersionInfoProductTextVersion=0.5.2 ({#Codename}) #endif VersionInfoProductName=LokiNET -VersionInfoProductVersion=0.5.1 +VersionInfoProductVersion=0.5.2 InternalCompressLevel=ultra64 MinVersion=0,5.0 ArchitecturesInstallIn64BitMode=x64 From 9232cef3000506ac1091c46beb4a42cf8bf81759 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 16:36:06 -0500 Subject: [PATCH 20/38] remove old bootstrap code --- contrib/lokinet-bootstrap-winnt/.gitignore | 4 - contrib/lokinet-bootstrap-winnt/COPYING | 17 - contrib/lokinet-bootstrap-winnt/Makefile | 76 - contrib/lokinet-bootstrap-winnt/README.md | 35 - contrib/lokinet-bootstrap-winnt/base64enc.c | 64 - contrib/lokinet-bootstrap-winnt/bootstrap.c | 2687 ------ contrib/lokinet-bootstrap-winnt/chunk.c | 79 - contrib/lokinet-bootstrap-winnt/chunk.h | 48 - contrib/lokinet-bootstrap-winnt/client.c | 19 - contrib/lokinet-bootstrap-winnt/header.c | 72 - contrib/lokinet-bootstrap-winnt/header.h | 61 - contrib/lokinet-bootstrap-winnt/http.c | 227 - contrib/lokinet-bootstrap-winnt/http.h | 93 - .../lokinet-bootstrap-winnt/include/miniz.h | 1321 --- .../lokinet-bootstrap-winnt/include/sysconf.h | 95 - .../mbedtls-win32.patch | 205 - contrib/lokinet-bootstrap-winnt/miniz.c | 7564 ----------------- contrib/lokinet-bootstrap-winnt/zpipe.c | 209 - 18 files changed, 12876 deletions(-) delete mode 100644 contrib/lokinet-bootstrap-winnt/.gitignore delete mode 100644 contrib/lokinet-bootstrap-winnt/COPYING delete mode 100644 contrib/lokinet-bootstrap-winnt/Makefile delete mode 100644 contrib/lokinet-bootstrap-winnt/README.md delete mode 100644 contrib/lokinet-bootstrap-winnt/base64enc.c delete mode 100644 contrib/lokinet-bootstrap-winnt/bootstrap.c delete mode 100644 contrib/lokinet-bootstrap-winnt/chunk.c delete mode 100644 contrib/lokinet-bootstrap-winnt/chunk.h delete mode 100644 contrib/lokinet-bootstrap-winnt/client.c delete mode 100644 contrib/lokinet-bootstrap-winnt/header.c delete mode 100644 contrib/lokinet-bootstrap-winnt/header.h delete mode 100644 contrib/lokinet-bootstrap-winnt/http.c delete mode 100644 contrib/lokinet-bootstrap-winnt/http.h delete mode 100644 contrib/lokinet-bootstrap-winnt/include/miniz.h delete mode 100644 contrib/lokinet-bootstrap-winnt/include/sysconf.h delete mode 100644 contrib/lokinet-bootstrap-winnt/mbedtls-win32.patch delete mode 100644 contrib/lokinet-bootstrap-winnt/miniz.c delete mode 100644 contrib/lokinet-bootstrap-winnt/zpipe.c diff --git a/contrib/lokinet-bootstrap-winnt/.gitignore b/contrib/lokinet-bootstrap-winnt/.gitignore deleted file mode 100644 index 8f68928b9..000000000 --- a/contrib/lokinet-bootstrap-winnt/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.o -mbedtls/ -*.a -*.exe \ No newline at end of file diff --git a/contrib/lokinet-bootstrap-winnt/COPYING b/contrib/lokinet-bootstrap-winnt/COPYING deleted file mode 100644 index 184e964e2..000000000 --- a/contrib/lokinet-bootstrap-winnt/COPYING +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c)2018-2019 Rick V. All rights reserved. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software -in a product, an acknowledgment in the product documentation would be -appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. diff --git a/contrib/lokinet-bootstrap-winnt/Makefile b/contrib/lokinet-bootstrap-winnt/Makefile deleted file mode 100644 index 1587bad15..000000000 --- a/contrib/lokinet-bootstrap-winnt/Makefile +++ /dev/null @@ -1,76 +0,0 @@ -# makefile for windows bootstrap -# requires mbedtls to be installed somewhere, for both native and windows targets -# requires wget to be installed for ca bundle download - -# to build: -# $ [g]make prepare;[g]make lokinet-bootstrap - -# set this beforehand if you use clang -CC ?= i686-w64-mingw32-gcc -NATIVE_CC ?= cc - -# set these for the native system -INCLUDE ?= -LIBS ?= - -# set these for 32-bit windows if cross-compiling -WINNT_INCLUDE ?= -WINNT_LIBS ?= - -ifdef LTO -LTO_FLAG = -flto -LTO_LDFLAG = -flto -march=nocona -mfpmath=sse -Ofast -endif - -ifndef DEBUG -CFLAGS = -Ofast -march=nocona -mfpmath=sse -LDFLAGS = -s -else -CFLAGS = -O0 -g3 -endif - -.PHONY: download prepare all default - -# windows target only -.c.o: - $(CC) $(WINNT_INCLUDE) -Iinclude $(LTO_FLAG) $(CFLAGS) $< -c - -zpipe: zpipe.c miniz.c - $(NATIVE_CC) $(INCLUDE) -Iinclude $(LIBS) $^ -s -static -o $@ - -base64enc: base64enc.c - $(NATIVE_CC) $(INCLUDE) -Iinclude $(LIBS) $^ -s -static -o $@ -lmbedx509 -lmbedtls -lmbedcrypto - -download: - wget -O ./cacert.pem https://curl.haxx.se/ca/cacert.pem - -# I *think* this only work with GNU sed... -prepare: zpipe base64enc download - ./zpipe < cacert.pem > data.enc - ./base64enc < data.enc > out.bin - sed -ie "s/.\{76\}/&\n/g" out.bin - sed -i 's/.*/\"&\"/g' out.bin - sed -i '61,2268d' bootstrap.c - echo ';' >> out.bin - sed -i '60r out.bin' bootstrap.c - -prepare-testnet: zpipe base64enc download - ./zpipe < cacert.pem > data.enc - ./base64enc < data.enc > out.bin - sed -ie "s/.\{76\}/&\n/g" out.bin - sed -i 's/.*/\"&\"/g' out.bin - sed -i '58,2144d' testnet.c - echo ';' >> out.bin - sed -i '57r out.bin' testnet.c - -lokinet-bootstrap: bootstrap.o miniz.o http.o header.o chunk.o - $(CC) $(WINNT_LIBS) $(LDFLAGS) -static $^ -o $@.exe $(LTO_LDFLAG) -lmbedx509 -lmbedtls -lmbedcrypto -lws2_32 - -clean: - -@rm lokinet*.exe - -@rm base64enc - -@rm zpipe - -@rm cacert.pem - -@rm data.enc - -@rm out.* - -@rm *.o diff --git a/contrib/lokinet-bootstrap-winnt/README.md b/contrib/lokinet-bootstrap-winnt/README.md deleted file mode 100644 index 6787146f9..000000000 --- a/contrib/lokinet-bootstrap-winnt/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# LokiNET bootstrap for Windows - -This is a tiny executable that does the same thing as the `lokinet-bootstrap` shell script for Linux, specifically for the purpose of bypassing broken or outdated versions of Schannel that do not support current versions of TLS. - -# Building - -## requirements - -- mbedtls 2.13.0 or later, for both host and windows -- wget for host (to download Netscape CA bundle from cURL website) -- Also included is a patch that can be applied to the mbedtls source to enable features like AES-NI in protected mode, plus some networking fixes for win32 - -native build: - - $ export INCLUDE=/mingw32/include LIBS=/mingw32/lib # or a different path - $ export CC=cc # change these if you use clang - $ export NATIVE_CC=$CC - $ export WINNT_INCLUDE=$INCLUDE WINNT_LIBS=$LIBS - $ make prepare;make lokinet-bootstrap - -cross-compile build (If you have *GNU* sed, you can also update the certificate trust store with `make prepare`): - - $ export INCLUDE=/usr/local/include LIBS=/usr/local/lib # or a different path - $ export CC=i686-w64-mingw32-gcc # change these if you use clang, make sure these are in your system $PATH! - $ export NATIVE_CC=cc - $ export WINNT_INCLUDE=/path/to/win32/headers WINNT_LIBS=/path/to/win32/libs - $ make lokinet-bootstrap - -# Usage - - C:\>lokinet-bootstrap [uri] [local download path] - -this is also included in the lokinet installer package. - --rick \ No newline at end of file diff --git a/contrib/lokinet-bootstrap-winnt/base64enc.c b/contrib/lokinet-bootstrap-winnt/base64enc.c deleted file mode 100644 index 4bdcc1815..000000000 --- a/contrib/lokinet-bootstrap-winnt/base64enc.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -/* this is a tiny build-time utility that base64 encodes up to 512K - * of text/binary data from stdin. (On UNIX, we'd use GNU's [g]base64(1) - * to encode the stream. Can't guarantee that a windows user will have cygwin - * installed, so we bootstrap these at build-time instead.) - * - * here, it is used to encode the compressed zlib-stream of the - * Netscape root certificate trust store on behalf of the lokinet - * for NT bootstrap stubs. - */ - -#include -#include -#include -#include "sysconf.h" -#ifdef HAVE_SETMODE -# define SET_BINARY_MODE(handle) setmode(handle, O_BINARY) -#else -# define SET_BINARY_MODE(handle) ((void)0) -#endif -#include -#include - -main(argc, argv) -char** argv; -{ - int size,r, inl; - unsigned char in[524288]; - unsigned char out[1048576]; - unsigned char err[1024]; - memset(&in, 0, 524288); - memset(&out, 0, 1048576); - SET_BINARY_MODE(0); - /* Read up to 512K of data from stdin */ - inl = fread(in, 1, 524288, stdin); - r = mbedtls_base64_encode(out, 1048576, &size, in, inl); - if (r) - { - mbedtls_strerror(r, err, 1024); - printf("error: %s\n", err); - return r; - } - fprintf(stdout, "%s", out); - return 0; -} \ No newline at end of file diff --git a/contrib/lokinet-bootstrap-winnt/bootstrap.c b/contrib/lokinet-bootstrap-winnt/bootstrap.c deleted file mode 100644 index 3b97855a6..000000000 --- a/contrib/lokinet-bootstrap-winnt/bootstrap.c +++ /dev/null @@ -1,2687 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* lokinet-winnt bootstrap loader for public use. takes a URI and a file path -* as its arguments. -* -* HTTPS only; why the hell would you serve semi-sensitive data over an -* unencrypted channel? In fact, the polarssl integration is intended to -* bypass limitations in the native TLS stack (no TLS 1.1+ on some older -* platforms, lack of high-encryption ciphersuites other than ARC4 or -* Triple-DES, etc) -* -rick -*/ - -#include -#include -#include -#include -#include -#include "miniz.h" -#include "http.h" - -/* PolarSSL */ -#include -#include -#include -#include -#include -#include -#include - -/* PolarSSL internal state */ -mbedtls_net_context server_fd; -mbedtls_entropy_context entropy; -mbedtls_ctr_drbg_context ctr_drbg; -mbedtls_ssl_context ssl; -mbedtls_ssl_config conf; -mbedtls_x509_crt cacert; -unsigned char* ca_certs; - -/* imageboard ref just because */ -static char userAgent[] = "NetRunner_Micro/0.1 PolarSSL/2.16.0;U;Windows NT "; - -/* netscape ca bundle */ -static const unsigned char ca_cert_store_encoded[] = -"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"; - -typedef struct url_parser_url -{ - char *protocol; - char *host; - int port; - char *path; - char *query_string; - int host_exists; - char *host_ip; -} url_parser_url_t; - -bool initTLS() -{ - int inf_status,r; - size_t out; - unsigned long inf_len; - HCRYPTPROV hprovider; - unsigned char* tmp; - char str[512], seed[64]; - - mbedtls_net_init(&server_fd); - mbedtls_ssl_init(&ssl); - mbedtls_ssl_config_init(&conf); - mbedtls_x509_crt_init(&cacert); - mbedtls_entropy_init(&entropy); - mbedtls_ctr_drbg_init(&ctr_drbg); - - tmp = malloc(524288); - - r = mbedtls_base64_decode(tmp, 524288, &out, ca_cert_store_encoded, sizeof(ca_cert_store_encoded)-1); - if (r) - { - mbedtls_strerror(r, (char*)tmp, 524288); - printf("decoding failed: %s\n", tmp); - free(tmp); - return false; - } - /* inflate ca certs, they are still compressed */ - ca_certs = malloc(524288); - inf_len = 524288; - - inf_status = uncompress(ca_certs, &inf_len, tmp, out); - if (inf_status != Z_OK) - { - printf("decompression failed: %s\n", mz_error(inf_status)); - free(tmp); - return false; - } - - free(tmp); - - /* On Windows NT 4.0 or later, use CryptoAPI to grab 64 bytes of random data */ - hprovider = 0; - CryptAcquireContext(&hprovider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT); - CryptGenRandom(hprovider, 64, (BYTE*)&seed); - CryptReleaseContext(hprovider, 0); - seed[63] = '\0'; /* null-terminate for safety */ - - if (mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char*)seed, 64) != 0) { - return false; - } - r = mbedtls_x509_crt_parse(&cacert, ca_certs, inf_len+1); - if (r < 0) { - mbedtls_strerror(r, str, 512); - printf("parse ca cert store failed\n ! mbedtls_x509_crt_parse returned: %s\n\n", str); - return false; - } - return true; -} - -void free_parsed_url(url_parsed) -url_parser_url_t *url_parsed; -{ - if (url_parsed->protocol) - free(url_parsed->protocol); - if (url_parsed->host) - free(url_parsed->host); - if (url_parsed->path) - free(url_parsed->path); - if (url_parsed->query_string) - free(url_parsed->query_string); - - free(url_parsed); -} - -parse_url(url, verify_host, parsed_url) -char *url; -bool verify_host; -url_parser_url_t *parsed_url; -{ - char *local_url; - char *token; - char *token_host; - char *host_port; - char *host_ip; - - char *token_ptr; - char *host_token_ptr; - - char *path = NULL; - - /* Copy our string */ - local_url = strdup(url); - - token = strtok_r(local_url, ":", &token_ptr); - parsed_url->protocol = strdup(token); - - /* Host:Port */ - token = strtok_r(NULL, "/", &token_ptr); - if (token) - host_port = strdup(token); - else - host_port = (char *) calloc(1, sizeof(char)); - - token_host = strtok_r(host_port, ":", &host_token_ptr); - parsed_url->host_ip = NULL; - if (token_host) { - parsed_url->host = strdup(token_host); - - if (verify_host) { - struct hostent *host; - host = gethostbyname(parsed_url->host); - if (host != NULL) { - parsed_url->host_ip = inet_ntoa(* (struct in_addr *) host->h_addr); - parsed_url->host_exists = 1; - } else { - parsed_url->host_exists = 0; - } - } else { - parsed_url->host_exists = -1; - } - } else { - parsed_url->host_exists = -1; - parsed_url->host = NULL; - } - - /* Port */ - token_host = strtok_r(NULL, ":", &host_token_ptr); - if (token_host) - parsed_url->port = atoi(token_host); - else - parsed_url->port = 0; - - token_host = strtok_r(NULL, ":", &host_token_ptr); - assert(token_host == NULL); - - token = strtok_r(NULL, "?", &token_ptr); - parsed_url->path = NULL; - if (token) { - path = (char *) realloc(path, sizeof(char) * (strlen(token) + 2)); - memset(path, 0, sizeof(char) * (strlen(token)+2)); - strcpy(path, "/"); - strcat(path, token); - - parsed_url->path = strdup(path); - - free(path); - } else { - parsed_url->path = (char *) malloc(sizeof(char) * 2); - strcpy(parsed_url->path, "/"); - } - - token = strtok_r(NULL, "?", &token_ptr); - if (token) { - parsed_url->query_string = (char *) malloc(sizeof(char) * (strlen(token) + 1)); - strncpy(parsed_url->query_string, token, strlen(token)); - } else { - parsed_url->query_string = NULL; - } - - token = strtok_r(NULL, "?", &token_ptr); - assert(token == NULL); - - free(local_url); - free(host_port); - return 0; -} - -void *memncat(a, an, b, bn, s) -const void *a; -size_t an; -const void *b; -size_t bn; -size_t s; -{ - char *p = malloc(s * (an + bn)); - memset(p, '\0', s * (an + bn)); - memcpy(p, a, an*s); - memcpy(p + an*s, b, bn*s); - return p; -} - -bool open_tls_sock(host, port) -char* host, *port; -{ - int r; - DWORD flags; - - r = mbedtls_net_connect(&server_fd, host, port, MBEDTLS_NET_PROTO_TCP); - if (r) - { - printf("error - failed to connect to server: %d\n", r); - return false; - } - - r = mbedtls_ssl_config_defaults(&conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT); - if (r) - { - printf("error - failed to set TLS options: %d\n", r); - return false; - } - - mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_REQUIRED); - mbedtls_ssl_conf_ca_chain(&conf, &cacert, NULL); - mbedtls_ssl_conf_rng(&conf, mbedtls_ctr_drbg_random, &ctr_drbg); - - r = mbedtls_ssl_setup(&ssl, &conf); - if (r) - { - printf("error - failed to setup TLS session: %d\n", r); - return false; - } - - r = mbedtls_ssl_set_hostname(&ssl, host); - - if (r) - { - printf("error - failed to perform SNI: %d\n", r); - return false; - } - - mbedtls_ssl_set_bio(&ssl, &server_fd, mbedtls_net_send, mbedtls_net_recv, NULL); - - while ((r = mbedtls_ssl_handshake(&ssl)) != 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf(" failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -r); - return false; - } - } - if ((flags = mbedtls_ssl_get_verify_result(&ssl)) != 0) - { - char vrfy_buf[512]; - printf(" failed\n"); - mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), " ! ", flags); - printf("%s\n", vrfy_buf); - return false; - } - return true; -} - -// Response data/funcs -struct HttpResponse { - char* body; - int code; - size_t size; -}; - -static void* response_realloc(opaque, ptr, size) -void* opaque, *ptr; -{ - return realloc(ptr, size); -} - -static void response_body(opaque, data, size) -void* opaque; -const char* data; -{ - struct HttpResponse* response = (struct HttpResponse*)opaque; - response->body = memncat(response->body, response->size, data, size, sizeof(char)); - response->size += size; -} - -static void response_header(opaque, ckey, nkey, cvalue, nvalue) -void* opaque; -const char* ckey, *cvalue; -{ -#if 0 - printf("%s, %d, %s, %d\n", ckey, nkey, cvalue, nvalue); -#endif -} - -static void response_code(opaque, code) -void* opaque; -{ - struct HttpResponse* response = (struct HttpResponse*)opaque; - response->code = code; -} - -static const struct http_funcs callbacks = -{ - response_realloc, - response_body, - response_header, - response_code, -}; - -main(argc, argv) -char** argv; /* It never occurred to me that this was writable to begin with... */ -{ - DWORD version, major, minor, build; - int r, s, len; - FILE *bootstrapRC; - char path[MAX_PATH], buf[1024], port[8]; - char *ua, *resp, *uri, *savePath; - char rq[1024]; - url_parser_url_t *parsed_uri; - struct HttpResponse rsp; - struct http_roundtripper rt; - - http_init(&rt, callbacks, &rsp); - rsp.size = 0; - rsp.body = malloc(0); - rsp.code = 0; - - if (argc == 1) - { - printf("Usage: %s [uri] [savepath]\n", argv[0]); - return 1; - } - - if (argc >= 3) - { - uri = argv[1]; - savePath = argv[2]; - parsed_uri = malloc(sizeof(url_parser_url_t)); - memset(parsed_uri, 0, sizeof(url_parser_url_t)); - r = parse_url(uri, false, parsed_uri); - if (r) - { - printf("Invalid URI pathspec\n"); - return -1; - } - } - - if (!initTLS()) - { - printf("Failed to initialise polarssl\n"); - return -1; - } - - /* fill in user-agent string */ - version = GetVersion(); - major = (DWORD)(LOBYTE(LOWORD(version))); - minor = (DWORD)(HIBYTE(LOWORD(version))); - if (version < 0x80000000) - build = (DWORD)(HIWORD(version)); - ua = malloc(512); - snprintf(ua, 512, "%s%d.%d", userAgent, major, minor); - - /* get host name, set port if blank */ - if (!strcmp("https", parsed_uri->protocol) && !parsed_uri->port) - parsed_uri->port = 443; - - printf("connecting to %s on port %d...",parsed_uri->host, parsed_uri->port); - - sprintf(port, "%d", parsed_uri->port); - - if (!open_tls_sock(parsed_uri->host, port)) - goto exit; - - printf("\nDownloading %s...", argv[1]); - - snprintf(rq, 512, "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n", parsed_uri->path, parsed_uri->host, ua); - while ((r = mbedtls_ssl_write(&ssl, (unsigned char*)rq, strlen(rq))) <= 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf("failed! error %d\n\n", r); - goto exit; - } - } - - len = 0; - do { - r = mbedtls_ssl_read(&ssl, (unsigned char*)buf, 1024); - if (r <= 0) - break; - else - { - s = http_data(&rt, buf, r, &len); - } - } while (r && s); - - printf("%d bytes downloaded to core.\n", rsp.size); - mbedtls_ssl_close_notify(&ssl); - - if (rsp.code != 200) - { - printf("An error occurred.\n"); - printf("Server response:\n%s", rsp.body); - goto exit; - } - - snprintf(path, MAX_PATH, savePath); - printf("Writing %s...\n", path); - bootstrapRC = fopen(path, "wb"); - fwrite(rsp.body, 1, rsp.size, bootstrapRC); - fclose(bootstrapRC); - - r = 0; - -exit: - mbedtls_ssl_close_notify(&ssl); - mbedtls_net_free(&server_fd); - mbedtls_x509_crt_free(&cacert); - mbedtls_ssl_free(&ssl); - mbedtls_ssl_config_free(&conf); - mbedtls_ctr_drbg_free(&ctr_drbg); - mbedtls_entropy_free(&entropy); - free(ua); - free(ca_certs); - free_parsed_url(parsed_uri); - http_free(&rt); - return r; -} diff --git a/contrib/lokinet-bootstrap-winnt/chunk.c b/contrib/lokinet-bootstrap-winnt/chunk.c deleted file mode 100644 index 3f7c889ea..000000000 --- a/contrib/lokinet-bootstrap-winnt/chunk.c +++ /dev/null @@ -1,79 +0,0 @@ -/*- - * Copyright 2012 Matthew Endsley - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -static const unsigned char http_chunk_state[] = { -/* * LF CR HEX */ - 0xC1, 0xC1, 0xC1, 1, /* s0: initial hex char */ - 0xC1, 0xC1, 2, 0x81, /* s1: additional hex chars, followed by CR */ - 0xC1, 0x83, 0xC1, 0xC1, /* s2: trailing LF */ - 0xC1, 0xC1, 4, 0xC1, /* s3: CR after chunk block */ - 0xC1, 0xC0, 0xC1, 0xC1, /* s4: LF after chunk block */ -}; - -int http_parse_chunked(int* state, int *size, char ch) -{ - int newstate, code = 0; - switch (ch) { - case '\n': code = 1; break; - case '\r': code = 2; break; - case '0': case '1': case '2': case '3': - case '4': case '5': case '6': case '7': - case '8': case '9': case 'a': case 'b': - case 'c': case 'd': case 'e': case 'f': - case 'A': case 'B': case 'C': case 'D': - case 'E': case 'F': code = 3; break; - } - - newstate = http_chunk_state[*state * 4 + code]; - *state = (newstate & 0xF); - - switch (newstate) { - case 0xC0: - return *size != 0; - - case 0xC1: /* error */ - *size = -1; - return 0; - - case 0x01: /* initial char */ - *size = 0; - /* fallthrough */ - case 0x81: /* size char */ - if (ch >= 'a') - *size = *size * 16 + (ch - 'a' + 10); - else if (ch >= 'A') - *size = *size * 16 + (ch - 'A' + 10); - else - *size = *size * 16 + (ch - '0'); - break; - - case 0x83: - return *size == 0; - } - - return 1; -} - diff --git a/contrib/lokinet-bootstrap-winnt/chunk.h b/contrib/lokinet-bootstrap-winnt/chunk.h deleted file mode 100644 index 9736e8364..000000000 --- a/contrib/lokinet-bootstrap-winnt/chunk.h +++ /dev/null @@ -1,48 +0,0 @@ -/*- - * Copyright 2012 Matthew Endsley - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef HTTP_CHUNK_H -#define HTTP_CHUNK_H - -#if defined(__cplusplus) -extern "C" { -#endif - -/** - * Parses the size out of a chunk-encoded HTTP response. Returns non-zero if it - * needs more data. Retuns zero success or error. When error: size == -1 On - * success, size = size of following chunk data excluding trailing \r\n. User is - * expected to process or otherwise seek past chunk data up to the trailing - * \r\n. The state parameter is used for internal state and should be - * initialized to zero the first call. - */ -int http_parse_chunked(int* state, int *size, char ch); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/contrib/lokinet-bootstrap-winnt/client.c b/contrib/lokinet-bootstrap-winnt/client.c deleted file mode 100644 index 968943966..000000000 --- a/contrib/lokinet-bootstrap-winnt/client.c +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (C) 2019 Rick V. All rights reserved. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * HTTP client for loki-msgr - */ - diff --git a/contrib/lokinet-bootstrap-winnt/header.c b/contrib/lokinet-bootstrap-winnt/header.c deleted file mode 100644 index cda9eb54a..000000000 --- a/contrib/lokinet-bootstrap-winnt/header.c +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * Copyright 2012 Matthew Endsley - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "header.h" - -static unsigned char http_header_state[] = { -/* * \t \n \r ' ' , : PAD */ - 0x80, 1, 0xC1, 0xC1, 1, 0x80, 0x80, 0xC1, /* state 0: HTTP version */ - 0x81, 2, 0xC1, 0xC1, 2, 1, 1, 0xC1, /* state 1: Response code */ - 0x82, 0x82, 4, 3, 0x82, 0x82, 0x82, 0xC1, /* state 2: Response reason */ - 0xC1, 0xC1, 4, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 3: HTTP version newline */ - 0x84, 0xC1, 0xC0, 5, 0xC1, 0xC1, 6, 0xC1, /* state 4: Start of header field */ - 0xC1, 0xC1, 0xC0, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 5: Last CR before end of header */ - 0x87, 6, 0xC1, 0xC1, 6, 0x87, 0x87, 0xC1, /* state 6: leading whitespace before header value */ - 0x87, 0x87, 0xC4, 10, 0x87, 0x88, 0x87, 0xC1, /* state 7: header field value */ - 0x87, 0x88, 6, 9, 0x88, 0x88, 0x87, 0xC1, /* state 8: Split value field value */ - 0xC1, 0xC1, 6, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 9: CR after split value field */ - 0xC1, 0xC1, 0xC4, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, /* state 10:CR after header value */ -}; - -int http_parse_header_char(int* state, char ch) -{ - int newstate, code = 0; - switch (ch) { - case '\t': code = 1; break; - case '\n': code = 2; break; - case '\r': code = 3; break; - case ' ': code = 4; break; - case ',': code = 5; break; - case ':': code = 6; break; - } - - newstate = http_header_state[*state * 8 + code]; - *state = (newstate & 0xF); - - switch (newstate) { - case 0xC0: return http_header_status_done; - case 0xC1: return http_header_status_done; - case 0xC4: return http_header_status_store_keyvalue; - case 0x80: return http_header_status_version_character; - case 0x81: return http_header_status_code_character; - case 0x82: return http_header_status_status_character; - case 0x84: return http_header_status_key_character; - case 0x87: return http_header_status_value_character; - case 0x88: return http_header_status_value_character; - } - - return http_header_status_continue; -} diff --git a/contrib/lokinet-bootstrap-winnt/header.h b/contrib/lokinet-bootstrap-winnt/header.h deleted file mode 100644 index 7f8ee6ab6..000000000 --- a/contrib/lokinet-bootstrap-winnt/header.h +++ /dev/null @@ -1,61 +0,0 @@ -/*- - * Copyright 2012 Matthew Endsley - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef HTTP_HEADER_H -#define HTTP_HEADER_H - -#if defined(__cplusplus) -extern "C" { -#endif - -enum http_header_status -{ - http_header_status_done, - http_header_status_continue, - http_header_status_version_character, - http_header_status_code_character, - http_header_status_status_character, - http_header_status_key_character, - http_header_status_value_character, - http_header_status_store_keyvalue -}; - -/** - * Parses a single character of an HTTP header stream. The state parameter is - * used as internal state and should be initialized to zero for the first call. - * Return value is a value from the http_header_status enuemeration specifying - * the semantics of the character. If an error is encountered, - * http_header_status_done will be returned with a non-zero state parameter. On - * success http_header_status_done is returned with the state parameter set to - * zero. - */ -int http_parse_header_char(int* state, char ch); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/contrib/lokinet-bootstrap-winnt/http.c b/contrib/lokinet-bootstrap-winnt/http.c deleted file mode 100644 index 40eb1c798..000000000 --- a/contrib/lokinet-bootstrap-winnt/http.c +++ /dev/null @@ -1,227 +0,0 @@ -/*- - * Copyright 2012 Matthew Endsley - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "http.h" - -#include -#include - -#include "header.h" -#include "chunk.h" - -static void append_body(struct http_roundtripper* rt, const char* data, int ndata) -{ - rt->funcs.body(rt->opaque, data, ndata); -} - -static void grow_scratch(struct http_roundtripper* rt, int size) -{ - if (rt->nscratch >= size) - return; - - if (size < 64) - size = 64; - int nsize = (rt->nscratch * 3) / 2; - if (nsize < size) - nsize = size; - - rt->scratch = (char*)rt->funcs.realloc_scratch(rt->opaque, rt->scratch, nsize); - rt->nscratch = nsize; -} - -static int min(int a, int b) -{ - return a > b ? b : a; -} - -enum http_roundtripper_state { - http_roundtripper_header, - http_roundtripper_chunk_header, - http_roundtripper_chunk_data, - http_roundtripper_raw_data, - http_roundtripper_unknown_data, - http_roundtripper_close, - http_roundtripper_error, -}; - -void http_init(struct http_roundtripper* rt, struct http_funcs funcs, void* opaque) -{ - rt->funcs = funcs; - rt->scratch = 0; - rt->opaque = opaque; - rt->code = 0; - rt->parsestate = 0; - rt->contentlength = -1; - rt->state = http_roundtripper_header; - rt->nscratch = 0; - rt->nkey = 0; - rt->nvalue = 0; - rt->chunked = 0; -} - -void http_free(struct http_roundtripper* rt) -{ - if (rt->scratch) { - rt->funcs.realloc_scratch(rt->opaque, rt->scratch, 0); - rt->scratch = 0; - } -} - -int http_data(struct http_roundtripper* rt, const char* data, int size, int* read) -{ - const int initial_size = size; - while (size) { - switch (rt->state) { - case http_roundtripper_header: - switch (http_parse_header_char(&rt->parsestate, *data)) { - case http_header_status_done: - rt->funcs.code(rt->opaque, rt->code); - if (rt->parsestate != 0) - rt->state = http_roundtripper_error; - else if (rt->chunked) { - rt->contentlength = 0; - rt->state = http_roundtripper_chunk_header; - } else if (rt->contentlength == 0) - rt->state = http_roundtripper_close; - else if (rt->contentlength > 0) - rt->state = http_roundtripper_raw_data; - else if (rt->contentlength == -1) - rt->state = http_roundtripper_unknown_data; - else - rt->state = http_roundtripper_error; - break; - - case http_header_status_code_character: - rt->code = rt->code * 10 + *data - '0'; - break; - - case http_header_status_key_character: - grow_scratch(rt, rt->nkey + 1); - rt->scratch[rt->nkey] = tolower(*data); - ++rt->nkey; - break; - - case http_header_status_value_character: - grow_scratch(rt, rt->nkey + rt->nvalue + 1); - rt->scratch[rt->nkey+rt->nvalue] = *data; - ++rt->nvalue; - break; - - case http_header_status_store_keyvalue: - if (rt->nkey == 17 && 0 == strncmp(rt->scratch, "transfer-encoding", rt->nkey)) - rt->chunked = (rt->nvalue == 7 && 0 == strncmp(rt->scratch + rt->nkey, "chunked", rt->nvalue)); - else if (rt->nkey == 14 && 0 == strncmp(rt->scratch, "content-length", rt->nkey)) { - int ii, end; - rt->contentlength = 0; - for (ii = rt->nkey, end = rt->nkey + rt->nvalue; ii != end; ++ii) - rt->contentlength = rt->contentlength * 10 + rt->scratch[ii] - '0'; - } - - rt->funcs.header(rt->opaque, rt->scratch, rt->nkey, rt->scratch + rt->nkey, rt->nvalue); - - rt->nkey = 0; - rt->nvalue = 0; - break; - } - - --size; - ++data; - break; - - case http_roundtripper_chunk_header: - if (!http_parse_chunked(&rt->parsestate, &rt->contentlength, *data)) { - if (rt->contentlength == -1) - rt->state = http_roundtripper_error; - else if (rt->contentlength == 0) - rt->state = http_roundtripper_close; - else - rt->state = http_roundtripper_chunk_data; - } - - --size; - ++data; - break; - - case http_roundtripper_chunk_data: { - const int chunksize = min(size, rt->contentlength); - append_body(rt, data, chunksize); - rt->contentlength -= chunksize; - size -= chunksize; - data += chunksize; - - if (rt->contentlength == 0) { - rt->contentlength = 1; - rt->state = http_roundtripper_chunk_header; - } - } - break; - - case http_roundtripper_raw_data: { - const int chunksize = min(size, rt->contentlength); - append_body(rt, data, chunksize); - rt->contentlength -= chunksize; - size -= chunksize; - data += chunksize; - - if (rt->contentlength == 0) - rt->state = http_roundtripper_close; - } - break; - - case http_roundtripper_unknown_data: { - if (size == 0) - rt->state = http_roundtripper_close; - else { - append_body(rt, data, size); - size -= size; - data += size; - } - } - break; - - case http_roundtripper_close: - case http_roundtripper_error: - break; - } - - if (rt->state == http_roundtripper_error || rt->state == http_roundtripper_close) { - if (rt->scratch) { - rt->funcs.realloc_scratch(rt->opaque, rt->scratch, 0); - rt->scratch = 0; - } - *read = initial_size - size; - return 0; - } - } - - *read = initial_size - size; - return 1; -} - -int http_iserror(struct http_roundtripper* rt) -{ - return rt->state == http_roundtripper_error; -} diff --git a/contrib/lokinet-bootstrap-winnt/http.h b/contrib/lokinet-bootstrap-winnt/http.h deleted file mode 100644 index ba7e4cfb3..000000000 --- a/contrib/lokinet-bootstrap-winnt/http.h +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * Copyright 2012 Matthew Endsley - * All rights reserved - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted providing that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef HTTP_HTTP_H -#define HTTP_HTTP_H - -#if defined(__cplusplus) -extern "C" { -#endif - -/** - * Callbacks for handling response data. - * realloc_scratch - reallocate memory, cannot fail. There will only - * be one scratch buffer. Implemnentation may take - * advantage of this fact. - * body - handle HTTP response body data - * header - handle an HTTP header key/value pair - * code - handle the HTTP status code for the response - */ -struct http_funcs { - void* (*realloc_scratch)(void* opaque, void* ptr, int size); - void (*body)(void* opaque, const char* data, int size); - void (*header)(void* opaque, const char* key, int nkey, const char* value, int nvalue); - void (*code)(void* opqaue, int code); -}; - -struct http_roundtripper { - struct http_funcs funcs; - void *opaque; - char *scratch; - int code; - int parsestate; - int contentlength; - int state; - int nscratch; - int nkey; - int nvalue; - int chunked; -}; - -/** - * Initializes a rountripper with the specified response functions. This must - * be called before the rt object is used. - */ -void http_init(struct http_roundtripper* rt, struct http_funcs, void* opaque); - -/** - * Frees any scratch memory allocated during parsing. - */ -void http_free(struct http_roundtripper* rt); - -/** - * Parses a block of HTTP response data. Returns zero if the parser reached the - * end of the response, or an error was encountered. Use http_iserror to check - * for the presence of an error. Returns non-zero if more data is required for - * the response. - */ -int http_data(struct http_roundtripper* rt, const char* data, int size, int* read); - -/** - * Returns non-zero if a completed parser encounted an error. If http_data did - * not return non-zero, the results of this function are undefined. - */ -int http_iserror(struct http_roundtripper* rt); - -#if defined(__cplusplus) -} -#endif - -#endif diff --git a/contrib/lokinet-bootstrap-winnt/include/miniz.h b/contrib/lokinet-bootstrap-winnt/include/miniz.h deleted file mode 100644 index 3f2a55d32..000000000 --- a/contrib/lokinet-bootstrap-winnt/include/miniz.h +++ /dev/null @@ -1,1321 +0,0 @@ -/* miniz.c 2.0.8 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing - See "unlicense" statement at the end of this file. - Rich Geldreich , last updated Oct. 13, 2013 - Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt - - Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define - MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros). - - * Low-level Deflate/Inflate implementation notes: - - Compression: Use the "tdefl" API's. The compressor supports raw, static, and dynamic blocks, lazy or - greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses - approximately as well as zlib. - - Decompression: Use the "tinfl" API's. The entire decompressor is implemented as a single function - coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or into a memory - block large enough to hold the entire file. - - The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation. - - * zlib-style API notes: - - miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in - zlib replacement in many apps: - The z_stream struct, optional memory allocation callbacks - deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound - inflateInit/inflateInit2/inflate/inflateEnd - compress, compress2, compressBound, uncompress - CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines. - Supports raw deflate streams or standard zlib streams with adler-32 checking. - - Limitations: - The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries. - I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but - there are no guarantees that miniz.c pulls this off perfectly. - - * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by - Alex Evans. Supports 1-4 bytes/pixel images. - - * ZIP archive API notes: - - The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to - get the job done with minimal fuss. There are simple API's to retrieve file information, read files from - existing archives, create new archives, append new files to existing archives, or clone archive data from - one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h), - or you can specify custom file read/write callbacks. - - - Archive reading: Just call this function to read a single file from a disk archive: - - void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, - size_t *pSize, mz_uint zip_flags); - - For more complex cases, use the "mz_zip_reader" functions. Upon opening an archive, the entire central - directory is located and read as-is into memory, and subsequent file access only occurs when reading individual files. - - - Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file: - - int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); - - The locate operation can optionally check file comments too, which (as one example) can be used to identify - multiple versions of the same file in an archive. This function uses a simple linear search through the central - directory, so it's not very fast. - - Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and - retrieve detailed info on each file by calling mz_zip_reader_file_stat(). - - - Archive creation: Use the "mz_zip_writer" functions. The ZIP writer immediately writes compressed file data - to disk and builds an exact image of the central directory in memory. The central directory image is written - all at once at the end of the archive file when the archive is finalized. - - The archive writer can optionally align each file's local header and file data to any power of 2 alignment, - which can be useful when the archive will be read from optical media. Also, the writer supports placing - arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still - readable by any ZIP tool. - - - Archive appending: The simple way to add a single file to an archive is to call this function: - - mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, - const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); - - The archive will be created if it doesn't already exist, otherwise it'll be appended to. - Note the appending is done in-place and is not an atomic operation, so if something goes wrong - during the operation it's possible the archive could be left without a central directory (although the local - file headers and file data will be fine, so the archive will be recoverable). - - For more complex archive modification scenarios: - 1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to - preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the - compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and - you're done. This is safe but requires a bunch of temporary disk space or heap memory. - - 2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(), - append new files as needed, then finalize the archive which will write an updated central directory to the - original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a - possibility that the archive's central directory could be lost with this method if anything goes wrong, though. - - - ZIP archive support limitations: - No zip64 or spanning support. Extraction functions can only handle unencrypted, stored or deflated files. - Requires streams capable of seeking. - - * This is a header file library, like stb_image.c. To get only a header file, either cut and paste the - below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it. - - * Important: For best perf. be sure to customize the below macros for your target platform: - #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 - #define MINIZ_LITTLE_ENDIAN 1 - #define MINIZ_HAS_64BIT_REGISTERS 1 - - * On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before including miniz.c to ensure miniz - uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files - (i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes). -*/ -#pragma once - - - - - -/* Defines to completely disable specific portions of miniz.c: - If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */ - -/* Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. */ -/*#define MINIZ_NO_STDIO */ - -/* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */ -/* get/set file times, and the C run-time funcs that get/set times won't be called. */ -/* The current downside is the times written to your archives will be from 1979. */ -/*#define MINIZ_NO_TIME */ - -/* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */ -#define MINIZ_NO_ARCHIVE_APIS - -/* Define MINIZ_NO_ARCHIVE_WRITING_APIS to disable all writing related ZIP archive API's. */ -#define MINIZ_NO_ARCHIVE_WRITING_APIS - -/* Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. */ -/*#define MINIZ_NO_ZLIB_APIS */ - -/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */ -/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */ - -/* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. - Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc - callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user - functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. */ -/*#define MINIZ_NO_MALLOC */ - -#if defined(__TINYC__) && (defined(__linux) || defined(__linux__)) -/* TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux */ -#define MINIZ_NO_TIME -#endif - -#include - -#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_ARCHIVE_APIS) -#include -#endif - -#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__) -/* MINIZ_X86_OR_X64_CPU is only used to help set the below macros. */ -#define MINIZ_X86_OR_X64_CPU 1 -#else -#define MINIZ_X86_OR_X64_CPU 0 -#endif - -#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || MINIZ_X86_OR_X64_CPU -/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */ -#define MINIZ_LITTLE_ENDIAN 1 -#else -#define MINIZ_LITTLE_ENDIAN 0 -#endif - -#if MINIZ_X86_OR_X64_CPU -/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */ -#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 -#else -#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0 -#endif - -#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__) -/* Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions). */ -#define MINIZ_HAS_64BIT_REGISTERS 1 -#else -#define MINIZ_HAS_64BIT_REGISTERS 0 -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- zlib-style API Definitions. */ - -/* For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits! */ -typedef unsigned long mz_ulong; - -/* mz_free() internally uses the MZ_FREE() macro (which by default calls free() unless you've modified the MZ_MALLOC macro) to release a block allocated from the heap. */ -void mz_free(void *p); - -#define MZ_ADLER32_INIT (1) -/* mz_adler32() returns the initial adler-32 value to use when called with ptr==NULL. */ -mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len); - -#define MZ_CRC32_INIT (0) -/* mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL. */ -mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len); - -/* Compression strategies. */ -enum -{ - MZ_DEFAULT_STRATEGY = 0, - MZ_FILTERED = 1, - MZ_HUFFMAN_ONLY = 2, - MZ_RLE = 3, - MZ_FIXED = 4 -}; - -/* Method */ -#define MZ_DEFLATED 8 - -/* Heap allocation callbacks. -Note that mz_alloc_func parameter types purpsosely differ from zlib's: items/size is size_t, not unsigned long. */ -typedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size); -typedef void (*mz_free_func)(void *opaque, void *address); -typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size); - -/* Compression levels: 0-9 are the standard zlib-style levels, 10 is best possible compression (not zlib compatible, and may be very slow), MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL. */ -enum -{ - MZ_NO_COMPRESSION = 0, - MZ_BEST_SPEED = 1, - MZ_BEST_COMPRESSION = 9, - MZ_UBER_COMPRESSION = 10, - MZ_DEFAULT_LEVEL = 6, - MZ_DEFAULT_COMPRESSION = -1 -}; - -#define MZ_VERSION "10.0.3" -#define MZ_VERNUM 0xA030 -#define MZ_VER_MAJOR 10 -#define MZ_VER_MINOR 0 -#define MZ_VER_REVISION 3 -#define MZ_VER_SUBREVISION 0 - -#ifndef MINIZ_NO_ZLIB_APIS - -/* Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other values are for advanced use (refer to the zlib docs). */ -enum -{ - MZ_NO_FLUSH = 0, - MZ_PARTIAL_FLUSH = 1, - MZ_SYNC_FLUSH = 2, - MZ_FULL_FLUSH = 3, - MZ_FINISH = 4, - MZ_BLOCK = 5 -}; - -/* Return status codes. MZ_PARAM_ERROR is non-standard. */ -enum -{ - MZ_OK = 0, - MZ_STREAM_END = 1, - MZ_NEED_DICT = 2, - MZ_ERRNO = -1, - MZ_STREAM_ERROR = -2, - MZ_DATA_ERROR = -3, - MZ_MEM_ERROR = -4, - MZ_BUF_ERROR = -5, - MZ_VERSION_ERROR = -6, - MZ_PARAM_ERROR = -10000 -}; - -/* Window bits */ -#define MZ_DEFAULT_WINDOW_BITS 15 - -struct mz_internal_state; - -/* Compression/decompression stream struct. */ -typedef struct mz_stream_s -{ - const unsigned char *next_in; /* pointer to next byte to read */ - unsigned int avail_in; /* number of bytes available at next_in */ - mz_ulong total_in; /* total number of bytes consumed so far */ - - unsigned char *next_out; /* pointer to next byte to write */ - unsigned int avail_out; /* number of bytes that can be written to next_out */ - mz_ulong total_out; /* total number of bytes produced so far */ - - char *msg; /* error msg (unused) */ - struct mz_internal_state *state; /* internal state, allocated by zalloc/zfree */ - - mz_alloc_func zalloc; /* optional heap allocation function (defaults to malloc) */ - mz_free_func zfree; /* optional heap free function (defaults to free) */ - void *opaque; /* heap alloc function user pointer */ - - int data_type; /* data_type (unused) */ - mz_ulong adler; /* adler32 of the source or uncompressed data */ - mz_ulong reserved; /* not used */ -} mz_stream; - -typedef mz_stream *mz_streamp; - -/* Returns the version string of miniz.c. */ -const char *mz_version(void); - -/* mz_deflateInit() initializes a compressor with default options: */ -/* Parameters: */ -/* pStream must point to an initialized mz_stream struct. */ -/* level must be between [MZ_NO_COMPRESSION, MZ_BEST_COMPRESSION]. */ -/* level 1 enables a specially optimized compression function that's been optimized purely for performance, not ratio. */ -/* (This special func. is currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and MINIZ_LITTLE_ENDIAN are defined.) */ -/* Return values: */ -/* MZ_OK on success. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -/* MZ_PARAM_ERROR if the input parameters are bogus. */ -/* MZ_MEM_ERROR on out of memory. */ -int mz_deflateInit(mz_streamp pStream, int level); - -/* mz_deflateInit2() is like mz_deflate(), except with more control: */ -/* Additional parameters: */ -/* method must be MZ_DEFLATED */ -/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with zlib header/adler-32 footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate/no header or footer) */ -/* mem_level must be between [1, 9] (it's checked but ignored by miniz.c) */ -int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy); - -/* Quickly resets a compressor without having to reallocate anything. Same as calling mz_deflateEnd() followed by mz_deflateInit()/mz_deflateInit2(). */ -int mz_deflateReset(mz_streamp pStream); - -/* mz_deflate() compresses the input to output, consuming as much of the input and producing as much output as possible. */ -/* Parameters: */ -/* pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. */ -/* flush may be MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH. */ -/* Return values: */ -/* MZ_OK on success (when flushing, or if more input is needed but not available, and/or there's more output to be written but the output buffer is full). */ -/* MZ_STREAM_END if all input has been consumed and all output bytes have been written. Don't call mz_deflate() on the stream anymore. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -/* MZ_PARAM_ERROR if one of the parameters is invalid. */ -/* MZ_BUF_ERROR if no forward progress is possible because the input and/or output buffers are empty. (Fill up the input buffer or free up some output space and try again.) */ -int mz_deflate(mz_streamp pStream, int flush); - -/* mz_deflateEnd() deinitializes a compressor: */ -/* Return values: */ -/* MZ_OK on success. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -int mz_deflateEnd(mz_streamp pStream); - -/* mz_deflateBound() returns a (very) conservative upper bound on the amount of data that could be generated by deflate(), assuming flush is set to only MZ_NO_FLUSH or MZ_FINISH. */ -mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len); - -/* Single-call compression functions mz_compress() and mz_compress2(): */ -/* Returns MZ_OK on success, or one of the error codes from mz_deflate() on failure. */ -int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len); -int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level); - -/* mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling mz_compress(). */ -mz_ulong mz_compressBound(mz_ulong source_len); - -/* Initializes a decompressor. */ -int mz_inflateInit(mz_streamp pStream); - -/* mz_inflateInit2() is like mz_inflateInit() with an additional option that controls the window size and whether or not the stream has been wrapped with a zlib header/footer: */ -/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate). */ -int mz_inflateInit2(mz_streamp pStream, int window_bits); - -/* Decompresses the input stream to the output, consuming only as much of the input as needed, and writing as much to the output as possible. */ -/* Parameters: */ -/* pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. */ -/* flush may be MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH. */ -/* On the first call, if flush is MZ_FINISH it's assumed the input and output buffers are both sized large enough to decompress the entire stream in a single call (this is slightly faster). */ -/* MZ_FINISH implies that there are no more source bytes available beside what's already in the input buffer, and that the output buffer is large enough to hold the rest of the decompressed data. */ -/* Return values: */ -/* MZ_OK on success. Either more input is needed but not available, and/or there's more output to be written but the output buffer is full. */ -/* MZ_STREAM_END if all needed input has been consumed and all output bytes have been written. For zlib streams, the adler-32 of the decompressed data has also been verified. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -/* MZ_DATA_ERROR if the deflate stream is invalid. */ -/* MZ_PARAM_ERROR if one of the parameters is invalid. */ -/* MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input to continue, or if the output buffer is not large enough. Call mz_inflate() again */ -/* with more input data, or with more room in the output buffer (except when using single call decompression, described above). */ -int mz_inflate(mz_streamp pStream, int flush); - -/* Deinitializes a decompressor. */ -int mz_inflateEnd(mz_streamp pStream); - -/* Single-call decompression. */ -/* Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure. */ -int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len); - -/* Returns a string description of the specified error code, or NULL if the error code is invalid. */ -const char *mz_error(int err); - -/* Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used as a drop-in replacement for the subset of zlib that miniz.c supports. */ -/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib in the same project. */ -#ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES -typedef unsigned char Byte; -typedef unsigned int uInt; -typedef mz_ulong uLong; -typedef Byte Bytef; -typedef uInt uIntf; -typedef char charf; -typedef int intf; -typedef void *voidpf; -typedef uLong uLongf; -typedef void *voidp; -typedef void *const voidpc; -#define Z_NULL 0 -#define Z_NO_FLUSH MZ_NO_FLUSH -#define Z_PARTIAL_FLUSH MZ_PARTIAL_FLUSH -#define Z_SYNC_FLUSH MZ_SYNC_FLUSH -#define Z_FULL_FLUSH MZ_FULL_FLUSH -#define Z_FINISH MZ_FINISH -#define Z_BLOCK MZ_BLOCK -#define Z_OK MZ_OK -#define Z_STREAM_END MZ_STREAM_END -#define Z_NEED_DICT MZ_NEED_DICT -#define Z_ERRNO MZ_ERRNO -#define Z_STREAM_ERROR MZ_STREAM_ERROR -#define Z_DATA_ERROR MZ_DATA_ERROR -#define Z_MEM_ERROR MZ_MEM_ERROR -#define Z_BUF_ERROR MZ_BUF_ERROR -#define Z_VERSION_ERROR MZ_VERSION_ERROR -#define Z_PARAM_ERROR MZ_PARAM_ERROR -#define Z_NO_COMPRESSION MZ_NO_COMPRESSION -#define Z_BEST_SPEED MZ_BEST_SPEED -#define Z_BEST_COMPRESSION MZ_BEST_COMPRESSION -#define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION -#define Z_DEFAULT_STRATEGY MZ_DEFAULT_STRATEGY -#define Z_FILTERED MZ_FILTERED -#define Z_HUFFMAN_ONLY MZ_HUFFMAN_ONLY -#define Z_RLE MZ_RLE -#define Z_FIXED MZ_FIXED -#define Z_DEFLATED MZ_DEFLATED -#define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS -#define alloc_func mz_alloc_func -#define free_func mz_free_func -#define internal_state mz_internal_state -#define z_stream mz_stream -#define deflateInit mz_deflateInit -#define deflateInit2 mz_deflateInit2 -#define deflateReset mz_deflateReset -#define deflate mz_deflate -#define deflateEnd mz_deflateEnd -#define deflateBound mz_deflateBound -#define compress mz_compress -#define compress2 mz_compress2 -#define compressBound mz_compressBound -#define inflateInit mz_inflateInit -#define inflateInit2 mz_inflateInit2 -#define inflate mz_inflate -#define inflateEnd mz_inflateEnd -#define uncompress mz_uncompress -#define crc32 mz_crc32 -#define adler32 mz_adler32 -#define MAX_WBITS 15 -#define MAX_MEM_LEVEL 9 -#define zError mz_error -#define ZLIB_VERSION MZ_VERSION -#define ZLIB_VERNUM MZ_VERNUM -#define ZLIB_VER_MAJOR MZ_VER_MAJOR -#define ZLIB_VER_MINOR MZ_VER_MINOR -#define ZLIB_VER_REVISION MZ_VER_REVISION -#define ZLIB_VER_SUBREVISION MZ_VER_SUBREVISION -#define zlibVersion mz_version -#define zlib_version mz_version() -#endif /* #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES */ - -#endif /* MINIZ_NO_ZLIB_APIS */ - -#ifdef __cplusplus -} -#endif -#pragma once -#include -#include -#include -#include - -/* ------------------- Types and macros */ -typedef unsigned char mz_uint8; -typedef signed short mz_int16; -typedef unsigned short mz_uint16; -typedef unsigned int mz_uint32; -typedef unsigned int mz_uint; -typedef int64_t mz_int64; -typedef uint64_t mz_uint64; -typedef int mz_bool; - -#define MZ_FALSE (0) -#define MZ_TRUE (1) - -/* Works around MSVC's spammy "warning C4127: conditional expression is constant" message. */ -#ifdef _MSC_VER -#define MZ_MACRO_END while (0, 0) -#else -#define MZ_MACRO_END while (0) -#endif - -#ifdef MINIZ_NO_STDIO -#define MZ_FILE void * -#else -#include -#define MZ_FILE FILE -#endif /* #ifdef MINIZ_NO_STDIO */ - -#ifdef MINIZ_NO_TIME -typedef struct mz_dummy_time_t_tag -{ - int m_dummy; -} mz_dummy_time_t; -#define MZ_TIME_T mz_dummy_time_t -#else -#define MZ_TIME_T time_t -#endif - -#define MZ_ASSERT(x) assert(x) - -#ifdef MINIZ_NO_MALLOC -#define MZ_MALLOC(x) NULL -#define MZ_FREE(x) (void)x, ((void)0) -#define MZ_REALLOC(p, x) NULL -#else -#define MZ_MALLOC(x) malloc(x) -#define MZ_FREE(x) free(x) -#define MZ_REALLOC(p, x) realloc(p, x) -#endif - -#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj)) - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN -#define MZ_READ_LE16(p) *((const mz_uint16 *)(p)) -#define MZ_READ_LE32(p) *((const mz_uint32 *)(p)) -#else -#define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U)) -#define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U)) -#endif - -#define MZ_READ_LE64(p) (((mz_uint64)MZ_READ_LE32(p)) | (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) << 32U)) - -#ifdef _MSC_VER -#define MZ_FORCEINLINE __forceinline -#elif defined(__GNUC__) -#define MZ_FORCEINLINE __inline__ __attribute__((__always_inline__)) -#else -#define MZ_FORCEINLINE inline -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern void *miniz_def_alloc_func(void *opaque, size_t items, size_t size); -extern void miniz_def_free_func(void *opaque, void *address); -extern void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size); - -#define MZ_UINT16_MAX (0xFFFFU) -#define MZ_UINT32_MAX (0xFFFFFFFFU) - -#ifdef __cplusplus -} -#endif -#pragma once - - -#ifdef __cplusplus -extern "C" { -#endif -/* ------------------- Low-level Compression API Definitions */ - -/* Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly slower, and raw/dynamic blocks will be output more frequently). */ -#define TDEFL_LESS_MEMORY 0 - -/* tdefl_init() compression flags logically OR'd together (low 12 bits contain the max. number of probes per dictionary search): */ -/* TDEFL_DEFAULT_MAX_PROBES: The compressor defaults to 128 dictionary probes per dictionary search. 0=Huffman only, 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ (slowest/best compression). */ -enum -{ - TDEFL_HUFFMAN_ONLY = 0, - TDEFL_DEFAULT_MAX_PROBES = 128, - TDEFL_MAX_PROBES_MASK = 0xFFF -}; - -/* TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before the deflate data, and the Adler-32 of the source data at the end. Otherwise, you'll get raw deflate data. */ -/* TDEFL_COMPUTE_ADLER32: Always compute the adler-32 of the input data (even when not writing zlib headers). */ -/* TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more efficient lazy parsing. */ -/* TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to decrease the compressor's initialization time to the minimum, but the output may vary from run to run given the same input (depending on the contents of memory). */ -/* TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a distance of 1) */ -/* TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled. */ -/* TDEFL_FORCE_ALL_STATIC_BLOCKS: Disable usage of optimized Huffman tables. */ -/* TDEFL_FORCE_ALL_RAW_BLOCKS: Only use raw (uncompressed) deflate blocks. */ -/* The low 12 bits are reserved to control the max # of hash probes per dictionary lookup (see TDEFL_MAX_PROBES_MASK). */ -enum -{ - TDEFL_WRITE_ZLIB_HEADER = 0x01000, - TDEFL_COMPUTE_ADLER32 = 0x02000, - TDEFL_GREEDY_PARSING_FLAG = 0x04000, - TDEFL_NONDETERMINISTIC_PARSING_FLAG = 0x08000, - TDEFL_RLE_MATCHES = 0x10000, - TDEFL_FILTER_MATCHES = 0x20000, - TDEFL_FORCE_ALL_STATIC_BLOCKS = 0x40000, - TDEFL_FORCE_ALL_RAW_BLOCKS = 0x80000 -}; - -/* High level compression functions: */ -/* tdefl_compress_mem_to_heap() compresses a block in memory to a heap block allocated via malloc(). */ -/* On entry: */ -/* pSrc_buf, src_buf_len: Pointer and size of source block to compress. */ -/* flags: The max match finder probes (default is 128) logically OR'd against the above flags. Higher probes are slower but improve compression. */ -/* On return: */ -/* Function returns a pointer to the compressed data, or NULL on failure. */ -/* *pOut_len will be set to the compressed data's size, which could be larger than src_buf_len on uncompressible data. */ -/* The caller must free() the returned block when it's no longer needed. */ -void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags); - -/* tdefl_compress_mem_to_mem() compresses a block in memory to another block in memory. */ -/* Returns 0 on failure. */ -size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags); - -/* Compresses an image to a compressed PNG file in memory. */ -/* On entry: */ -/* pImage, w, h, and num_chans describe the image to compress. num_chans may be 1, 2, 3, or 4. */ -/* The image pitch in bytes per scanline will be w*num_chans. The leftmost pixel on the top scanline is stored first in memory. */ -/* level may range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc. or a decent default is MZ_DEFAULT_LEVEL */ -/* If flip is true, the image will be flipped on the Y axis (useful for OpenGL apps). */ -/* On return: */ -/* Function returns a pointer to the compressed data, or NULL on failure. */ -/* *pLen_out will be set to the size of the PNG image file. */ -/* The caller must mz_free() the returned heap block (which will typically be larger than *pLen_out) when it's no longer needed. */ -void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip); -void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out); - -/* Output stream interface. The compressor uses this interface to write compressed data. It'll typically be called TDEFL_OUT_BUF_SIZE at a time. */ -typedef mz_bool (*tdefl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser); - -/* tdefl_compress_mem_to_output() compresses a block to an output stream. The above helpers use this function internally. */ -mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); - -enum -{ - TDEFL_MAX_HUFF_TABLES = 3, - TDEFL_MAX_HUFF_SYMBOLS_0 = 288, - TDEFL_MAX_HUFF_SYMBOLS_1 = 32, - TDEFL_MAX_HUFF_SYMBOLS_2 = 19, - TDEFL_LZ_DICT_SIZE = 32768, - TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1, - TDEFL_MIN_MATCH_LEN = 3, - TDEFL_MAX_MATCH_LEN = 258 -}; - -/* TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed output block (using static/fixed Huffman codes). */ -#if TDEFL_LESS_MEMORY -enum -{ - TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024, - TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10, - TDEFL_MAX_HUFF_SYMBOLS = 288, - TDEFL_LZ_HASH_BITS = 12, - TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, - TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, - TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS -}; -#else -enum -{ - TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024, - TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10, - TDEFL_MAX_HUFF_SYMBOLS = 288, - TDEFL_LZ_HASH_BITS = 15, - TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, - TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, - TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS -}; -#endif - -/* The low-level tdefl functions below may be used directly if the above helper functions aren't flexible enough. The low-level functions don't make any heap allocations, unlike the above helper functions. */ -typedef enum { - TDEFL_STATUS_BAD_PARAM = -2, - TDEFL_STATUS_PUT_BUF_FAILED = -1, - TDEFL_STATUS_OKAY = 0, - TDEFL_STATUS_DONE = 1 -} tdefl_status; - -/* Must map to MZ_NO_FLUSH, MZ_SYNC_FLUSH, etc. enums */ -typedef enum { - TDEFL_NO_FLUSH = 0, - TDEFL_SYNC_FLUSH = 2, - TDEFL_FULL_FLUSH = 3, - TDEFL_FINISH = 4 -} tdefl_flush; - -/* tdefl's compression state structure. */ -typedef struct -{ - tdefl_put_buf_func_ptr m_pPut_buf_func; - void *m_pPut_buf_user; - mz_uint m_flags, m_max_probes[2]; - int m_greedy_parsing; - mz_uint m_adler32, m_lookahead_pos, m_lookahead_size, m_dict_size; - mz_uint8 *m_pLZ_code_buf, *m_pLZ_flags, *m_pOutput_buf, *m_pOutput_buf_end; - mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, m_bit_buffer; - mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, m_output_flush_ofs, m_output_flush_remaining, m_finished, m_block_index, m_wants_to_finish; - tdefl_status m_prev_return_status; - const void *m_pIn_buf; - void *m_pOut_buf; - size_t *m_pIn_buf_size, *m_pOut_buf_size; - tdefl_flush m_flush; - const mz_uint8 *m_pSrc; - size_t m_src_buf_left, m_out_buf_ofs; - mz_uint8 m_dict[TDEFL_LZ_DICT_SIZE + TDEFL_MAX_MATCH_LEN - 1]; - mz_uint16 m_huff_count[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]; - mz_uint16 m_huff_codes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]; - mz_uint8 m_huff_code_sizes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]; - mz_uint8 m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE]; - mz_uint16 m_next[TDEFL_LZ_DICT_SIZE]; - mz_uint16 m_hash[TDEFL_LZ_HASH_SIZE]; - mz_uint8 m_output_buf[TDEFL_OUT_BUF_SIZE]; -} tdefl_compressor; - -/* Initializes the compressor. */ -/* There is no corresponding deinit() function because the tdefl API's do not dynamically allocate memory. */ -/* pBut_buf_func: If NULL, output data will be supplied to the specified callback. In this case, the user should call the tdefl_compress_buffer() API for compression. */ -/* If pBut_buf_func is NULL the user should always call the tdefl_compress() API. */ -/* flags: See the above enums (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.) */ -tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); - -/* Compresses a block of data, consuming as much of the specified input buffer as possible, and writing as much compressed data to the specified output buffer as possible. */ -tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush); - -/* tdefl_compress_buffer() is only usable when the tdefl_init() is called with a non-NULL tdefl_put_buf_func_ptr. */ -/* tdefl_compress_buffer() always consumes the entire input buffer. */ -tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush); - -tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d); -mz_uint32 tdefl_get_adler32(tdefl_compressor *d); - -/* Create tdefl_compress() flags given zlib-style compression parameters. */ -/* level may range from [0,10] (where 10 is absolute max compression, but may be much slower on some files) */ -/* window_bits may be -15 (raw deflate) or 15 (zlib) */ -/* strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, MZ_RLE, or MZ_FIXED */ -mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy); - -/* Allocate the tdefl_compressor structure in C so that */ -/* non-C language bindings to tdefl_ API don't need to worry about */ -/* structure size and allocation mechanism. */ -tdefl_compressor *tdefl_compressor_alloc(); -void tdefl_compressor_free(tdefl_compressor *pComp); - -#ifdef __cplusplus -} -#endif -#pragma once - -/* ------------------- Low-level Decompression API Definitions */ - -#ifdef __cplusplus -extern "C" { -#endif -/* Decompression flags used by tinfl_decompress(). */ -/* TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the input is a raw deflate stream. */ -/* TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer. If clear, the input buffer contains all remaining input. */ -/* TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB). */ -/* TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes. */ -enum -{ - TINFL_FLAG_PARSE_ZLIB_HEADER = 1, - TINFL_FLAG_HAS_MORE_INPUT = 2, - TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4, - TINFL_FLAG_COMPUTE_ADLER32 = 8 -}; - -/* High level decompression functions: */ -/* tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block allocated via malloc(). */ -/* On entry: */ -/* pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data to decompress. */ -/* On return: */ -/* Function returns a pointer to the decompressed data, or NULL on failure. */ -/* *pOut_len will be set to the decompressed data's size, which could be larger than src_buf_len on uncompressible data. */ -/* The caller must call mz_free() on the returned block when it's no longer needed. */ -void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags); - -/* tinfl_decompress_mem_to_mem() decompresses a block in memory to another block in memory. */ -/* Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the number of bytes written on success. */ -#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1)) -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags); - -/* tinfl_decompress_mem_to_callback() decompresses a block in memory to an internal 32KB buffer, and a user provided callback function will be called to flush the buffer. */ -/* Returns 1 on success or 0 on failure. */ -typedef int (*tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser); -int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); - -struct tinfl_decompressor_tag; -typedef struct tinfl_decompressor_tag tinfl_decompressor; - -/* Allocate the tinfl_decompressor structure in C so that */ -/* non-C language bindings to tinfl_ API don't need to worry about */ -/* structure size and allocation mechanism. */ - -tinfl_decompressor *tinfl_decompressor_alloc(); -void tinfl_decompressor_free(tinfl_decompressor *pDecomp); - -/* Max size of LZ dictionary. */ -#define TINFL_LZ_DICT_SIZE 32768 - -/* Return status. */ -typedef enum { - /* This flags indicates the inflator needs 1 or more input bytes to make forward progress, but the caller is indicating that no more are available. The compressed data */ - /* is probably corrupted. If you call the inflator again with more bytes it'll try to continue processing the input but this is a BAD sign (either the data is corrupted or you called it incorrectly). */ - /* If you call it again with no input you'll just get TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS again. */ - TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS = -4, - - /* This flag indicates that one or more of the input parameters was obviously bogus. (You can try calling it again, but if you get this error the calling code is wrong.) */ - TINFL_STATUS_BAD_PARAM = -3, - - /* This flags indicate the inflator is finished but the adler32 check of the uncompressed data didn't match. If you call it again it'll return TINFL_STATUS_DONE. */ - TINFL_STATUS_ADLER32_MISMATCH = -2, - - /* This flags indicate the inflator has somehow failed (bad code, corrupted input, etc.). If you call it again without resetting via tinfl_init() it it'll just keep on returning the same status failure code. */ - TINFL_STATUS_FAILED = -1, - - /* Any status code less than TINFL_STATUS_DONE must indicate a failure. */ - - /* This flag indicates the inflator has returned every byte of uncompressed data that it can, has consumed every byte that it needed, has successfully reached the end of the deflate stream, and */ - /* if zlib headers and adler32 checking enabled that it has successfully checked the uncompressed data's adler32. If you call it again you'll just get TINFL_STATUS_DONE over and over again. */ - TINFL_STATUS_DONE = 0, - - /* This flag indicates the inflator MUST have more input data (even 1 byte) before it can make any more forward progress, or you need to clear the TINFL_FLAG_HAS_MORE_INPUT */ - /* flag on the next call if you don't have any more source data. If the source data was somehow corrupted it's also possible (but unlikely) for the inflator to keep on demanding input to */ - /* proceed, so be sure to properly set the TINFL_FLAG_HAS_MORE_INPUT flag. */ - TINFL_STATUS_NEEDS_MORE_INPUT = 1, - - /* This flag indicates the inflator definitely has 1 or more bytes of uncompressed data available, but it cannot write this data into the output buffer. */ - /* Note if the source compressed data was corrupted it's possible for the inflator to return a lot of uncompressed data to the caller. I've been assuming you know how much uncompressed data to expect */ - /* (either exact or worst case) and will stop calling the inflator and fail after receiving too much. In pure streaming scenarios where you have no idea how many bytes to expect this may not be possible */ - /* so I may need to add some code to address this. */ - TINFL_STATUS_HAS_MORE_OUTPUT = 2 -} tinfl_status; - -/* Initializes the decompressor to its initial state. */ -#define tinfl_init(r) \ - do \ - { \ - (r)->m_state = 0; \ - } \ - MZ_MACRO_END -#define tinfl_get_adler32(r) (r)->m_check_adler32 - -/* Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability. */ -/* This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output. */ -tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags); - -/* Internal/private bits follow. */ -enum -{ - TINFL_MAX_HUFF_TABLES = 3, - TINFL_MAX_HUFF_SYMBOLS_0 = 288, - TINFL_MAX_HUFF_SYMBOLS_1 = 32, - TINFL_MAX_HUFF_SYMBOLS_2 = 19, - TINFL_FAST_LOOKUP_BITS = 10, - TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS -}; - -typedef struct -{ - mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0]; - mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2]; -} tinfl_huff_table; - -#if MINIZ_HAS_64BIT_REGISTERS -#define TINFL_USE_64BIT_BITBUF 1 -#else -#define TINFL_USE_64BIT_BITBUF 0 -#endif - -#if TINFL_USE_64BIT_BITBUF -typedef mz_uint64 tinfl_bit_buf_t; -#define TINFL_BITBUF_SIZE (64) -#else -typedef mz_uint32 tinfl_bit_buf_t; -#define TINFL_BITBUF_SIZE (32) -#endif - -struct tinfl_decompressor_tag -{ - mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES]; - tinfl_bit_buf_t m_bit_buf; - size_t m_dist_from_out_buf_start; - tinfl_huff_table m_tables[TINFL_MAX_HUFF_TABLES]; - mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137]; -}; - -#ifdef __cplusplus -} -#endif - -#pragma once - - -/* ------------------- ZIP archive reading/writing */ - -#ifndef MINIZ_NO_ARCHIVE_APIS - -#ifdef __cplusplus -extern "C" { -#endif - -enum -{ - /* Note: These enums can be reduced as needed to save memory or stack space - they are pretty conservative. */ - MZ_ZIP_MAX_IO_BUF_SIZE = 64 * 1024, - MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 512, - MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 512 -}; - -typedef struct -{ - /* Central directory file index. */ - mz_uint32 m_file_index; - - /* Byte offset of this entry in the archive's central directory. Note we currently only support up to UINT_MAX or less bytes in the central dir. */ - mz_uint64 m_central_dir_ofs; - - /* These fields are copied directly from the zip's central dir. */ - mz_uint16 m_version_made_by; - mz_uint16 m_version_needed; - mz_uint16 m_bit_flag; - mz_uint16 m_method; - -#ifndef MINIZ_NO_TIME - MZ_TIME_T m_time; -#endif - - /* CRC-32 of uncompressed data. */ - mz_uint32 m_crc32; - - /* File's compressed size. */ - mz_uint64 m_comp_size; - - /* File's uncompressed size. Note, I've seen some old archives where directory entries had 512 bytes for their uncompressed sizes, but when you try to unpack them you actually get 0 bytes. */ - mz_uint64 m_uncomp_size; - - /* Zip internal and external file attributes. */ - mz_uint16 m_internal_attr; - mz_uint32 m_external_attr; - - /* Entry's local header file offset in bytes. */ - mz_uint64 m_local_header_ofs; - - /* Size of comment in bytes. */ - mz_uint32 m_comment_size; - - /* MZ_TRUE if the entry appears to be a directory. */ - mz_bool m_is_directory; - - /* MZ_TRUE if the entry uses encryption/strong encryption (which miniz_zip doesn't support) */ - mz_bool m_is_encrypted; - - /* MZ_TRUE if the file is not encrypted, a patch file, and if it uses a compression method we support. */ - mz_bool m_is_supported; - - /* Filename. If string ends in '/' it's a subdirectory entry. */ - /* Guaranteed to be zero terminated, may be truncated to fit. */ - char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE]; - - /* Comment field. */ - /* Guaranteed to be zero terminated, may be truncated to fit. */ - char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE]; - -} mz_zip_archive_file_stat; - -typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n); -typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n); -typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque); - -struct mz_zip_internal_state_tag; -typedef struct mz_zip_internal_state_tag mz_zip_internal_state; - -typedef enum { - MZ_ZIP_MODE_INVALID = 0, - MZ_ZIP_MODE_READING = 1, - MZ_ZIP_MODE_WRITING = 2, - MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3 -} mz_zip_mode; - -typedef enum { - MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100, - MZ_ZIP_FLAG_IGNORE_PATH = 0x0200, - MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400, - MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800, - MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG = 0x1000, /* if enabled, mz_zip_reader_locate_file() will be called on each file as its validated to ensure the func finds the file in the central dir (intended for testing) */ - MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY = 0x2000, /* validate the local headers, but don't decompress the entire file and check the crc32 */ - MZ_ZIP_FLAG_WRITE_ZIP64 = 0x4000, /* always use the zip64 file format, instead of the original zip file format with automatic switch to zip64. Use as flags parameter with mz_zip_writer_init*_v2 */ - MZ_ZIP_FLAG_WRITE_ALLOW_READING = 0x8000, - MZ_ZIP_FLAG_ASCII_FILENAME = 0x10000 -} mz_zip_flags; - -typedef enum { - MZ_ZIP_TYPE_INVALID = 0, - MZ_ZIP_TYPE_USER, - MZ_ZIP_TYPE_MEMORY, - MZ_ZIP_TYPE_HEAP, - MZ_ZIP_TYPE_FILE, - MZ_ZIP_TYPE_CFILE, - MZ_ZIP_TOTAL_TYPES -} mz_zip_type; - -/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or modify this enum. */ -typedef enum { - MZ_ZIP_NO_ERROR = 0, - MZ_ZIP_UNDEFINED_ERROR, - MZ_ZIP_TOO_MANY_FILES, - MZ_ZIP_FILE_TOO_LARGE, - MZ_ZIP_UNSUPPORTED_METHOD, - MZ_ZIP_UNSUPPORTED_ENCRYPTION, - MZ_ZIP_UNSUPPORTED_FEATURE, - MZ_ZIP_FAILED_FINDING_CENTRAL_DIR, - MZ_ZIP_NOT_AN_ARCHIVE, - MZ_ZIP_INVALID_HEADER_OR_CORRUPTED, - MZ_ZIP_UNSUPPORTED_MULTIDISK, - MZ_ZIP_DECOMPRESSION_FAILED, - MZ_ZIP_COMPRESSION_FAILED, - MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE, - MZ_ZIP_CRC_CHECK_FAILED, - MZ_ZIP_UNSUPPORTED_CDIR_SIZE, - MZ_ZIP_ALLOC_FAILED, - MZ_ZIP_FILE_OPEN_FAILED, - MZ_ZIP_FILE_CREATE_FAILED, - MZ_ZIP_FILE_WRITE_FAILED, - MZ_ZIP_FILE_READ_FAILED, - MZ_ZIP_FILE_CLOSE_FAILED, - MZ_ZIP_FILE_SEEK_FAILED, - MZ_ZIP_FILE_STAT_FAILED, - MZ_ZIP_INVALID_PARAMETER, - MZ_ZIP_INVALID_FILENAME, - MZ_ZIP_BUF_TOO_SMALL, - MZ_ZIP_INTERNAL_ERROR, - MZ_ZIP_FILE_NOT_FOUND, - MZ_ZIP_ARCHIVE_TOO_LARGE, - MZ_ZIP_VALIDATION_FAILED, - MZ_ZIP_WRITE_CALLBACK_FAILED, - MZ_ZIP_TOTAL_ERRORS -} mz_zip_error; - -typedef struct -{ - mz_uint64 m_archive_size; - mz_uint64 m_central_directory_file_ofs; - - /* We only support up to UINT32_MAX files in zip64 mode. */ - mz_uint32 m_total_files; - mz_zip_mode m_zip_mode; - mz_zip_type m_zip_type; - mz_zip_error m_last_error; - - mz_uint64 m_file_offset_alignment; - - mz_alloc_func m_pAlloc; - mz_free_func m_pFree; - mz_realloc_func m_pRealloc; - void *m_pAlloc_opaque; - - mz_file_read_func m_pRead; - mz_file_write_func m_pWrite; - mz_file_needs_keepalive m_pNeeds_keepalive; - void *m_pIO_opaque; - - mz_zip_internal_state *m_pState; - -} mz_zip_archive; - -typedef struct -{ - mz_zip_archive *pZip; - mz_uint flags; - - int status; -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - mz_uint file_crc32; -#endif - mz_uint64 read_buf_size, read_buf_ofs, read_buf_avail, comp_remaining, out_buf_ofs, cur_file_ofs; - mz_zip_archive_file_stat file_stat; - void *pRead_buf; - void *pWrite_buf; - - size_t out_blk_remain; - - tinfl_decompressor inflator; - -} mz_zip_reader_extract_iter_state; - -/* -------- ZIP reading */ - -/* Inits a ZIP archive reader. */ -/* These functions read and validate the archive's central directory. */ -mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags); - -mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags); - -#ifndef MINIZ_NO_STDIO -/* Read a archive from a disk file. */ -/* file_start_ofs is the file offset where the archive actually begins, or 0. */ -/* actual_archive_size is the true total size of the archive, which may be smaller than the file's actual size on disk. If zero the entire file is treated as the archive. */ -mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags); -mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size); - -/* Read an archive from an already opened FILE, beginning at the current file position. */ -/* The archive is assumed to be archive_size bytes long. If archive_size is < 0, then the entire rest of the file is assumed to contain the archive. */ -/* The FILE will NOT be closed when mz_zip_reader_end() is called. */ -mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size, mz_uint flags); -#endif - -/* Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was used. */ -mz_bool mz_zip_reader_end(mz_zip_archive *pZip); - -/* -------- ZIP reading or writing */ - -/* Clears a mz_zip_archive struct to all zeros. */ -/* Important: This must be done before passing the struct to any mz_zip functions. */ -void mz_zip_zero_struct(mz_zip_archive *pZip); - -mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip); -mz_zip_type mz_zip_get_type(mz_zip_archive *pZip); - -/* Returns the total number of files in the archive. */ -mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip); - -mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip); -mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip); -MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip); - -/* Reads n bytes of raw archive data, starting at file offset file_ofs, to pBuf. */ -size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n); - -/* All mz_zip funcs set the m_last_error field in the mz_zip_archive struct. These functions retrieve/manipulate this field. */ -/* Note that the m_last_error functionality is not thread safe. */ -mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num); -mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip); -mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip); -mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip); -const char *mz_zip_get_error_string(mz_zip_error mz_err); - -/* MZ_TRUE if the archive file entry is a directory entry. */ -mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index); - -/* MZ_TRUE if the file is encrypted/strong encrypted. */ -mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index); - -/* MZ_TRUE if the compression method is supported, and the file is not encrypted, and the file is not a compressed patch file. */ -mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index); - -/* Retrieves the filename of an archive file entry. */ -/* Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of bytes needed to fully store the filename. */ -mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size); - -/* Attempts to locates a file in the archive's central directory. */ -/* Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH */ -/* Returns -1 if the file cannot be found. */ -int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); -int mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *file_index); - -/* Returns detailed information about an archive file entry. */ -mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat); - -/* MZ_TRUE if the file is in zip64 format. */ -/* A file is considered zip64 if it contained a zip64 end of central directory marker, or if it contained any zip64 extended file information fields in the central directory. */ -mz_bool mz_zip_is_zip64(mz_zip_archive *pZip); - -/* Returns the total central directory size in bytes. */ -/* The current max supported size is <= MZ_UINT32_MAX. */ -size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip); - -/* Extracts a archive file to a memory buffer using no memory allocation. */ -/* There must be at least enough room on the stack to store the inflator's state (~34KB or so). */ -mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); -mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); - -/* Extracts a archive file to a memory buffer. */ -mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags); - -/* Extracts a archive file to a dynamically allocated heap buffer. */ -/* The memory will be allocated via the mz_zip_archive's alloc/realloc functions. */ -/* Returns NULL and sets the last error on failure. */ -void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags); -void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags); - -/* Extracts a archive file using a callback function to output the file's data. */ -mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags); - -/* Extract a file iteratively */ -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags); -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags); -size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size); -mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState); - -#ifndef MINIZ_NO_STDIO -/* Extracts a archive file to a disk file and sets its last accessed and modified times. */ -/* This function only extracts files, not archive directory records. */ -mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags); - -/* Extracts a archive file starting at the current position in the destination FILE stream. */ -mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *File, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, MZ_FILE *pFile, mz_uint flags); -#endif - -#if 0 -/* TODO */ - typedef void *mz_zip_streaming_extract_state_ptr; - mz_zip_streaming_extract_state_ptr mz_zip_streaming_extract_begin(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags); - uint64_t mz_zip_streaming_extract_get_size(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState); - uint64_t mz_zip_streaming_extract_get_cur_ofs(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState); - mz_bool mz_zip_streaming_extract_seek(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, uint64_t new_ofs); - size_t mz_zip_streaming_extract_read(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, void *pBuf, size_t buf_size); - mz_bool mz_zip_streaming_extract_end(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState); -#endif - -/* This function compares the archive's local headers, the optional local zip64 extended information block, and the optional descriptor following the compressed data vs. the data in the central directory. */ -/* It also validates that each file can be successfully uncompressed unless the MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY is specified. */ -mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags); - -/* Validates an entire archive by calling mz_zip_validate_file() on each file. */ -mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags); - -/* Misc utils/helpers, valid for ZIP reading or writing */ -mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr); -mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr); - -/* Universal end function - calls either mz_zip_reader_end() or mz_zip_writer_end(). */ -mz_bool mz_zip_end(mz_zip_archive *pZip); - -/* -------- ZIP writing */ - -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS - -/* Inits a ZIP archive writer. */ -/*Set pZip->m_pWrite (and pZip->m_pIO_opaque) before calling mz_zip_writer_init or mz_zip_writer_init_v2*/ -/*The output is streamable, i.e. file_ofs in mz_file_write_func always increases only by n*/ -mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size); -mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags); - -mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size); -mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags); - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning); -mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags); -mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags); -#endif - -/* Converts a ZIP archive reader object into a writer object, to allow efficient in-place file appends to occur on an existing archive. */ -/* For archives opened using mz_zip_reader_init_file, pFilename must be the archive's filename so it can be reopened for writing. If the file can't be reopened, mz_zip_reader_end() will be called. */ -/* For archives opened using mz_zip_reader_init_mem, the memory block must be growable using the realloc callback (which defaults to realloc unless you've overridden it). */ -/* Finally, for archives opened using mz_zip_reader_init, the mz_zip_archive's user provided m_pWrite function cannot be NULL. */ -/* Note: In-place archive modification is not recommended unless you know what you're doing, because if execution stops or something goes wrong before */ -/* the archive is finalized the file's central directory will be hosed. */ -mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename); -mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags); - -/* Adds the contents of a memory buffer to an archive. These functions record the current local time into the archive. */ -/* To add a directory entry, call this method with an archive name ending in a forwardslash with an empty buffer. */ -/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */ -mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags); - -/* Like mz_zip_writer_add_mem(), except you can specify a file comment field, and optionally supply the function with already compressed data. */ -/* uncomp_size/uncomp_crc32 are only used if the MZ_ZIP_FLAG_COMPRESSED_DATA flag is specified. */ -mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - mz_uint64 uncomp_size, mz_uint32 uncomp_crc32); - -mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, MZ_TIME_T *last_modified, const char *user_extra_data_local, mz_uint user_extra_data_local_len, - const char *user_extra_data_central, mz_uint user_extra_data_central_len); - -#ifndef MINIZ_NO_STDIO -/* Adds the contents of a disk file to an archive. This function also records the disk file's modified time into the archive. */ -/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */ -mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); - -/* Like mz_zip_writer_add_file(), except the file data is read from the specified FILE stream. */ -mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file, mz_uint64 size_to_add, - const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, const char *user_extra_data_local, mz_uint user_extra_data_local_len, - const char *user_extra_data_central, mz_uint user_extra_data_central_len); -#endif - -/* Adds a file to an archive by fully cloning the data from another archive. */ -/* This function fully clones the source file's compressed data (no recompression), along with its full filename, extra data (it may add or modify the zip64 local header extra data field), and the optional descriptor following the compressed data. */ -mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index); - -/* Finalizes the archive by writing the central directory records followed by the end of central directory record. */ -/* After an archive is finalized, the only valid call on the mz_zip_archive struct is mz_zip_writer_end(). */ -/* An archive must be manually finalized by calling this function for it to be valid. */ -mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip); - -/* Finalizes a heap archive, returning a poiner to the heap block and its size. */ -/* The heap block will be allocated using the mz_zip_archive's alloc/realloc callbacks. */ -mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize); - -/* Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used. */ -/* Note for the archive to be valid, it *must* have been finalized before ending (this function will not do it for you). */ -mz_bool mz_zip_writer_end(mz_zip_archive *pZip); - -/* -------- Misc. high-level helper functions: */ - -/* mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) appends a memory blob to a ZIP archive. */ -/* Note this is NOT a fully safe operation. If it crashes or dies in some way your archive can be left in a screwed up state (without a central directory). */ -/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */ -/* TODO: Perhaps add an option to leave the existing central dir in place in case the add dies? We could then truncate the file (so the old central dir would be at the end) if something goes wrong. */ -mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); -mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr); - -/* Reads a single file from an archive into a heap block. */ -/* If pComment is not NULL, only the file with the specified comment will be extracted. */ -/* Returns NULL on failure. */ -void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags); -void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr); - -#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */ - -#ifdef __cplusplus -} -#endif - -#endif /* MINIZ_NO_ARCHIVE_APIS */ diff --git a/contrib/lokinet-bootstrap-winnt/include/sysconf.h b/contrib/lokinet-bootstrap-winnt/include/sysconf.h deleted file mode 100644 index 861dd5ca7..000000000 --- a/contrib/lokinet-bootstrap-winnt/include/sysconf.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * sysconf.h -- system-dependent macros and settings - * - * Copyright (C) 2002-2004 Cosmin Truta. - * Permission to use and distribute freely. - * No warranty. - **/ - -#ifndef SYSCONF_H -#define SYSCONF_H - - - /*****************************************************************************/ - /* Platform identifiers */ - - - /* Detect Unix. */ -#if defined(unix) || defined(__linux__) || defined(BSD) || defined(__CYGWIN__) - /* Add more systems here. */ -# ifndef UNIX -# define UNIX -# endif -#endif - -/* Detect MS-DOS. */ -#if defined(__MSDOS__) -# ifndef MSDOS -# define MSDOS -# endif -#endif - -/* TO DO: Detect OS/2. */ - -/* Detect Windows. */ -#if defined(_WIN32) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if defined(_WIN64) -# ifndef WIN64 -# define WIN64 -# endif -#endif -#if defined(_WINDOWS) || defined(WIN32) || defined(WIN64) -# ifndef WINDOWS -# define WINDOWS -# endif -#endif - -/* Enable POSIX-friendly symbols on Microsoft (Visual) C. */ -#ifdef _MSC_VER -# define _POSIX_ -#endif - - -/*****************************************************************************/ -/* Library access */ - - -#if defined(UNIX) -# include -#endif - -#if defined(_POSIX_VERSION) -# include -# ifndef HAVE_ISATTY -# define HAVE_ISATTY -# endif -#endif - -#if defined(MSDOS) || defined(OS2) || defined(WINDOWS) || defined(__CYGWIN__) - /* Add more systems here, e.g. MacOS 9 and earlier. */ -# include -# include -# ifndef HAVE_ISATTY -# define HAVE_ISATTY -# endif -# ifndef HAVE_SETMODE -# define HAVE_SETMODE -# endif -#endif - -/* Standard I/O handles. */ -#define STDIN 0 -#define STDOUT 1 -#define STDERR 2 - -/* Provide a placeholder for O_BINARY, if it doesn't exist. */ -#ifndef O_BINARY -# define O_BINARY 0 -#endif - - -#endif /* SYSCONF_H */ \ No newline at end of file diff --git a/contrib/lokinet-bootstrap-winnt/mbedtls-win32.patch b/contrib/lokinet-bootstrap-winnt/mbedtls-win32.patch deleted file mode 100644 index 8c089b4c5..000000000 --- a/contrib/lokinet-bootstrap-winnt/mbedtls-win32.patch +++ /dev/null @@ -1,205 +0,0 @@ -diff -ruN polarssl-master/include/mbedtls/aesni.h polarssl/include/mbedtls/aesni.h ---- polarssl-master/include/mbedtls/aesni.h 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/include/mbedtls/aesni.h 2018-04-17 15:47:59.320514100 -0500 -@@ -26,17 +26,16 @@ - - #include "aes.h" - -+/* -+ * despair: This code appears to be 32-bit clean. Remove the CPP macros -+ * that restrict usage to AMD64 and EM64T processors. -+ * Obviously, you still need to have this insn set available in order to -+ * use it in either of protected or long mode anyway. -+ */ -+ - #define MBEDTLS_AESNI_AES 0x02000000u - #define MBEDTLS_AESNI_CLMUL 0x00000002u - --#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && \ -- ( defined(__amd64__) || defined(__x86_64__) ) && \ -- ! defined(MBEDTLS_HAVE_X86_64) --#define MBEDTLS_HAVE_X86_64 --#endif -- --#if defined(MBEDTLS_HAVE_X86_64) -- - #ifdef __cplusplus - extern "C" { - #endif -@@ -107,6 +106,4 @@ - } - #endif - --#endif /* MBEDTLS_HAVE_X86_64 */ -- - #endif /* MBEDTLS_AESNI_H */ -diff -ruN polarssl-master/include/mbedtls/bn_mul.h polarssl/include/mbedtls/bn_mul.h ---- polarssl-master/include/mbedtls/bn_mul.h 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/include/mbedtls/bn_mul.h 2018-04-17 15:42:09.045117300 -0500 -@@ -754,7 +754,9 @@ - #if defined(MBEDTLS_HAVE_SSE2) - - #define EMIT __asm _emit -- -+/* Because the Visual C++ inline assembler STILL does -+ not support MMX insns! reeeeee (old -GM flag no longer exists) -+ */ - #define MULADDC_HUIT \ - EMIT 0x0F EMIT 0x6E EMIT 0xC9 \ - EMIT 0x0F EMIT 0x6E EMIT 0xC3 \ -diff -ruN polarssl-master/include/mbedtls/config.h polarssl/include/mbedtls/config.h ---- polarssl-master/include/mbedtls/config.h 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/include/mbedtls/config.h 2018-04-17 17:27:18.350938700 -0500 -@@ -91,7 +91,7 @@ - * - * Uncomment if the CPU supports SSE2 (IA-32 specific). - */ --//#define MBEDTLS_HAVE_SSE2 -+#define MBEDTLS_HAVE_SSE2 - - /** - * \def MBEDTLS_HAVE_TIME -@@ -1571,7 +1571,7 @@ - * Module: library/aesni.c - * Caller: library/aes.c - * -- * Requires: MBEDTLS_HAVE_ASM -+ * Requires: None. Enable only for i386 or AMD64 targets only! -despair - * - * This modules adds support for the AES-NI instructions on x86-64 - */ -@@ -1850,7 +1850,7 @@ - * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C - * - */ --//#define MBEDTLS_CMAC_C -+#define MBEDTLS_CMAC_C - - /** - * \def MBEDTLS_CTR_DRBG_C -@@ -2055,7 +2055,7 @@ - * - * Uncomment to enable the HAVEGE random generator. - */ --//#define MBEDTLS_HAVEGE_C -+#define MBEDTLS_HAVEGE_C - - /** - * \def MBEDTLS_HMAC_DRBG_C -diff -ruN polarssl-master/library/aes.c polarssl/library/aes.c ---- polarssl-master/library/aes.c 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/library/aes.c 2018-04-17 16:51:37.098413400 -0500 -@@ -514,7 +514,7 @@ - #endif - ctx->rk = RK = ctx->buf; - --#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) -+#if defined(MBEDTLS_AESNI_C) - if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) - return( mbedtls_aesni_setkey_enc( (unsigned char *) ctx->rk, key, keybits ) ); - #endif -@@ -621,7 +621,7 @@ - - ctx->nr = cty.nr; - --#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) -+#if defined(MBEDTLS_AESNI_C) - if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) - { - mbedtls_aesni_inverse_key( (unsigned char *) ctx->rk, -@@ -850,7 +850,7 @@ - const unsigned char input[16], - unsigned char output[16] ) - { --#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) -+#if defined(MBEDTLS_AESNI_C) - if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) - return( mbedtls_aesni_crypt_ecb( ctx, mode, input, output ) ); - #endif -diff -ruN polarssl-master/library/aesni.c polarssl/library/aesni.c ---- polarssl-master/library/aesni.c 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/library/aesni.c 2018-04-17 16:09:26.050605000 -0500 -@@ -30,7 +30,16 @@ - #include MBEDTLS_CONFIG_FILE - #endif - --#if defined(MBEDTLS_AESNI_C) -+ -+/* -+ * despair: This code appears to be 32-bit clean. Remove the CPP macros -+ * that restrict usage to AMD64 and EM64T processors. -+ * Obviously, you still need to have this insn set available in order to -+ * use it in either of protected or long mode anyway. -+ * GCC or Clang only, no MSVC here, sorry. (Must pass -march=core2 or later -+ * if your compiler's default is anything older or generic.) -+ */ -+#if defined(MBEDTLS_AESNI_C) && !defined(_MSC_VER) - - #include "mbedtls/aesni.h" - -@@ -40,8 +49,6 @@ - #define asm __asm - #endif - --#if defined(MBEDTLS_HAVE_X86_64) -- - /* - * AES-NI support detection routine - */ -@@ -459,6 +466,4 @@ - return( 0 ); - } - --#endif /* MBEDTLS_HAVE_X86_64 */ -- - #endif /* MBEDTLS_AESNI_C */ -diff -ruN polarssl-master/library/entropy_poll.c polarssl/library/entropy_poll.c ---- polarssl-master/library/entropy_poll.c 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/library/entropy_poll.c 2018-04-17 15:52:13.013004200 -0500 -@@ -56,6 +56,12 @@ - #include - #include - -+/* -+ * WARNING(despair): The next release of PolarSSL will remove the existing codepaths -+ * to enable Windows RT and UWP app support. This also breaks NT 5.x and early Longhorn. -+ * -+ * TODO(despair): create CPP macro to switch between old and new CAPI codepaths -+ */ - int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len, - size_t *olen ) - { -diff -ruN polarssl-master/library/gcm.c polarssl/library/gcm.c ---- polarssl-master/library/gcm.c 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/library/gcm.c 2018-04-17 16:53:18.630262400 -0500 -@@ -126,7 +126,7 @@ - ctx->HL[8] = vl; - ctx->HH[8] = vh; - --#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) -+#if defined(MBEDTLS_AESNI_C) - /* With CLMUL support, we need only h, not the rest of the table */ - if( mbedtls_aesni_has_support( MBEDTLS_AESNI_CLMUL ) ) - return( 0 ); -@@ -217,7 +217,7 @@ - unsigned char lo, hi, rem; - uint64_t zh, zl; - --#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) -+#if defined(MBEDTLS_AESNI_C) - if( mbedtls_aesni_has_support( MBEDTLS_AESNI_CLMUL ) ) { - unsigned char h[16]; - -diff -ruN polarssl-master/library/net_sockets.c polarssl/library/net_sockets.c ---- polarssl-master/library/net_sockets.c 2018-03-16 11:25:12.000000000 -0500 -+++ polarssl/library/net_sockets.c 2018-04-17 15:50:08.118440600 -0500 -@@ -51,7 +51,8 @@ - /* Enables getaddrinfo() & Co */ - #define _WIN32_WINNT 0x0501 - #include -- -+/* despair: re-enable Windows 2000/XP */ -+#include - #include - #include - diff --git a/contrib/lokinet-bootstrap-winnt/miniz.c b/contrib/lokinet-bootstrap-winnt/miniz.c deleted file mode 100644 index 0e1106018..000000000 --- a/contrib/lokinet-bootstrap-winnt/miniz.c +++ /dev/null @@ -1,7564 +0,0 @@ -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - -#include "miniz.h" - -typedef unsigned char mz_validate_uint16[sizeof(mz_uint16) == 2 ? 1 : -1]; -typedef unsigned char mz_validate_uint32[sizeof(mz_uint32) == 4 ? 1 : -1]; -typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1]; - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- zlib-style API's */ - -mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len) -{ - mz_uint32 i, s1 = (mz_uint32)(adler & 0xffff), s2 = (mz_uint32)(adler >> 16); - size_t block_len = buf_len % 5552; - if (!ptr) - return MZ_ADLER32_INIT; - while (buf_len) - { - for (i = 0; i + 7 < block_len; i += 8, ptr += 8) - { - s1 += ptr[0], s2 += s1; - s1 += ptr[1], s2 += s1; - s1 += ptr[2], s2 += s1; - s1 += ptr[3], s2 += s1; - s1 += ptr[4], s2 += s1; - s1 += ptr[5], s2 += s1; - s1 += ptr[6], s2 += s1; - s1 += ptr[7], s2 += s1; - } - for (; i < block_len; ++i) - s1 += *ptr++, s2 += s1; - s1 %= 65521U, s2 %= 65521U; - buf_len -= block_len; - block_len = 5552; - } - return (s2 << 16) + s1; -} - -/* Karl Malbrain's compact CRC-32. See "A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed": http://www.geocities.com/malbrain/ */ -#if 0 - mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) - { - static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c }; - mz_uint32 crcu32 = (mz_uint32)crc; - if (!ptr) - return MZ_CRC32_INIT; - crcu32 = ~crcu32; - while (buf_len--) - { - mz_uint8 b = *ptr++; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; - } - return ~crcu32; - } -#else -/* Faster, but larger CPU cache footprint. - */ -mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) -{ - static const mz_uint32 s_crc_table[256] = - { - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, - 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, - 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, - 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, - 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, - 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, - 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, - 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, - 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, - 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, - 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, - 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, - 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, - 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, - 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, - 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, - 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, - 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, - 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, - 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, - 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, - 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, - 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, - 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, - 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, - 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, - 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, - 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, - 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, - 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, - 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, - 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, - 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, - 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, - 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D - }; - - mz_uint32 crc32 = (mz_uint32)crc ^ 0xFFFFFFFF; - const mz_uint8 *pByte_buf = (const mz_uint8 *)ptr; - - while (buf_len >= 4) - { - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[1]) & 0xFF]; - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[2]) & 0xFF]; - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[3]) & 0xFF]; - pByte_buf += 4; - buf_len -= 4; - } - - while (buf_len) - { - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; - ++pByte_buf; - --buf_len; - } - - return ~crc32; -} -#endif - -void mz_free(void *p) -{ - MZ_FREE(p); -} - -void *miniz_def_alloc_func(void *opaque, size_t items, size_t size) -{ - (void)opaque, (void)items, (void)size; - return MZ_MALLOC(items * size); -} -void miniz_def_free_func(void *opaque, void *address) -{ - (void)opaque, (void)address; - MZ_FREE(address); -} -void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size) -{ - (void)opaque, (void)address, (void)items, (void)size; - return MZ_REALLOC(address, items * size); -} - -const char *mz_version(void) -{ - return MZ_VERSION; -} - -#ifndef MINIZ_NO_ZLIB_APIS - -int mz_deflateInit(mz_streamp pStream, int level) -{ - return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, MZ_DEFAULT_STRATEGY); -} - -int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy) -{ - tdefl_compressor *pComp; - mz_uint comp_flags = TDEFL_COMPUTE_ADLER32 | tdefl_create_comp_flags_from_zip_params(level, window_bits, strategy); - - if (!pStream) - return MZ_STREAM_ERROR; - if ((method != MZ_DEFLATED) || ((mem_level < 1) || (mem_level > 9)) || ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS))) - return MZ_PARAM_ERROR; - - pStream->data_type = 0; - pStream->adler = MZ_ADLER32_INIT; - pStream->msg = NULL; - pStream->reserved = 0; - pStream->total_in = 0; - pStream->total_out = 0; - if (!pStream->zalloc) - pStream->zalloc = miniz_def_alloc_func; - if (!pStream->zfree) - pStream->zfree = miniz_def_free_func; - - pComp = (tdefl_compressor *)pStream->zalloc(pStream->opaque, 1, sizeof(tdefl_compressor)); - if (!pComp) - return MZ_MEM_ERROR; - - pStream->state = (struct mz_internal_state *)pComp; - - if (tdefl_init(pComp, NULL, NULL, comp_flags) != TDEFL_STATUS_OKAY) - { - mz_deflateEnd(pStream); - return MZ_PARAM_ERROR; - } - - return MZ_OK; -} - -int mz_deflateReset(mz_streamp pStream) -{ - if ((!pStream) || (!pStream->state) || (!pStream->zalloc) || (!pStream->zfree)) - return MZ_STREAM_ERROR; - pStream->total_in = pStream->total_out = 0; - tdefl_init((tdefl_compressor *)pStream->state, NULL, NULL, ((tdefl_compressor *)pStream->state)->m_flags); - return MZ_OK; -} - -int mz_deflate(mz_streamp pStream, int flush) -{ - size_t in_bytes, out_bytes; - mz_ulong orig_total_in, orig_total_out; - int mz_status = MZ_OK; - - if ((!pStream) || (!pStream->state) || (flush < 0) || (flush > MZ_FINISH) || (!pStream->next_out)) - return MZ_STREAM_ERROR; - if (!pStream->avail_out) - return MZ_BUF_ERROR; - - if (flush == MZ_PARTIAL_FLUSH) - flush = MZ_SYNC_FLUSH; - - if (((tdefl_compressor *)pStream->state)->m_prev_return_status == TDEFL_STATUS_DONE) - return (flush == MZ_FINISH) ? MZ_STREAM_END : MZ_BUF_ERROR; - - orig_total_in = pStream->total_in; - orig_total_out = pStream->total_out; - for (;;) - { - tdefl_status defl_status; - in_bytes = pStream->avail_in; - out_bytes = pStream->avail_out; - - defl_status = tdefl_compress((tdefl_compressor *)pStream->state, pStream->next_in, &in_bytes, pStream->next_out, &out_bytes, (tdefl_flush)flush); - pStream->next_in += (mz_uint)in_bytes; - pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; - pStream->adler = tdefl_get_adler32((tdefl_compressor *)pStream->state); - - pStream->next_out += (mz_uint)out_bytes; - pStream->avail_out -= (mz_uint)out_bytes; - pStream->total_out += (mz_uint)out_bytes; - - if (defl_status < 0) - { - mz_status = MZ_STREAM_ERROR; - break; - } - else if (defl_status == TDEFL_STATUS_DONE) - { - mz_status = MZ_STREAM_END; - break; - } - else if (!pStream->avail_out) - break; - else if ((!pStream->avail_in) && (flush != MZ_FINISH)) - { - if ((flush) || (pStream->total_in != orig_total_in) || (pStream->total_out != orig_total_out)) - break; - return MZ_BUF_ERROR; /* Can't make forward progress without some input. - */ - } - } - return mz_status; -} - -int mz_deflateEnd(mz_streamp pStream) -{ - if (!pStream) - return MZ_STREAM_ERROR; - if (pStream->state) - { - pStream->zfree(pStream->opaque, pStream->state); - pStream->state = NULL; - } - return MZ_OK; -} - -mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len) -{ - (void)pStream; - /* This is really over conservative. (And lame, but it's actually pretty tricky to compute a true upper bound given the way tdefl's blocking works.) */ - return MZ_MAX(128 + (source_len * 110) / 100, 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5); -} - -int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level) -{ - int status; - mz_stream stream; - memset(&stream, 0, sizeof(stream)); - - /* In case mz_ulong is 64-bits (argh I hate longs). */ - if ((source_len | *pDest_len) > 0xFFFFFFFFU) - return MZ_PARAM_ERROR; - - stream.next_in = pSource; - stream.avail_in = (mz_uint32)source_len; - stream.next_out = pDest; - stream.avail_out = (mz_uint32)*pDest_len; - - status = mz_deflateInit(&stream, level); - if (status != MZ_OK) - return status; - - status = mz_deflate(&stream, MZ_FINISH); - if (status != MZ_STREAM_END) - { - mz_deflateEnd(&stream); - return (status == MZ_OK) ? MZ_BUF_ERROR : status; - } - - *pDest_len = stream.total_out; - return mz_deflateEnd(&stream); -} - -int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len) -{ - return mz_compress2(pDest, pDest_len, pSource, source_len, MZ_DEFAULT_COMPRESSION); -} - -mz_ulong mz_compressBound(mz_ulong source_len) -{ - return mz_deflateBound(NULL, source_len); -} - -typedef struct -{ - tinfl_decompressor m_decomp; - mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed; - int m_window_bits; - mz_uint8 m_dict[TINFL_LZ_DICT_SIZE]; - tinfl_status m_last_status; -} inflate_state; - -int mz_inflateInit2(mz_streamp pStream, int window_bits) -{ - inflate_state *pDecomp; - if (!pStream) - return MZ_STREAM_ERROR; - if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS)) - return MZ_PARAM_ERROR; - - pStream->data_type = 0; - pStream->adler = 0; - pStream->msg = NULL; - pStream->total_in = 0; - pStream->total_out = 0; - pStream->reserved = 0; - if (!pStream->zalloc) - pStream->zalloc = miniz_def_alloc_func; - if (!pStream->zfree) - pStream->zfree = miniz_def_free_func; - - pDecomp = (inflate_state *)pStream->zalloc(pStream->opaque, 1, sizeof(inflate_state)); - if (!pDecomp) - return MZ_MEM_ERROR; - - pStream->state = (struct mz_internal_state *)pDecomp; - - tinfl_init(&pDecomp->m_decomp); - pDecomp->m_dict_ofs = 0; - pDecomp->m_dict_avail = 0; - pDecomp->m_last_status = TINFL_STATUS_NEEDS_MORE_INPUT; - pDecomp->m_first_call = 1; - pDecomp->m_has_flushed = 0; - pDecomp->m_window_bits = window_bits; - - return MZ_OK; -} - -int mz_inflateInit(mz_streamp pStream) -{ - return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS); -} - -int mz_inflate(mz_streamp pStream, int flush) -{ - inflate_state *pState; - mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32; - size_t in_bytes, out_bytes, orig_avail_in; - tinfl_status status; - - if ((!pStream) || (!pStream->state)) - return MZ_STREAM_ERROR; - if (flush == MZ_PARTIAL_FLUSH) - flush = MZ_SYNC_FLUSH; - if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH)) - return MZ_STREAM_ERROR; - - pState = (inflate_state *)pStream->state; - if (pState->m_window_bits > 0) - decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER; - orig_avail_in = pStream->avail_in; - - first_call = pState->m_first_call; - pState->m_first_call = 0; - if (pState->m_last_status < 0) - return MZ_DATA_ERROR; - - if (pState->m_has_flushed && (flush != MZ_FINISH)) - return MZ_STREAM_ERROR; - pState->m_has_flushed |= (flush == MZ_FINISH); - - if ((flush == MZ_FINISH) && (first_call)) - { - /* MZ_FINISH on the first call implies that the input and output buffers are large enough to hold the entire compressed/decompressed file. */ - decomp_flags |= TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF; - in_bytes = pStream->avail_in; - out_bytes = pStream->avail_out; - status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pStream->next_out, pStream->next_out, &out_bytes, decomp_flags); - pState->m_last_status = status; - pStream->next_in += (mz_uint)in_bytes; - pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; - pStream->adler = tinfl_get_adler32(&pState->m_decomp); - pStream->next_out += (mz_uint)out_bytes; - pStream->avail_out -= (mz_uint)out_bytes; - pStream->total_out += (mz_uint)out_bytes; - - if (status < 0) - return MZ_DATA_ERROR; - else if (status != TINFL_STATUS_DONE) - { - pState->m_last_status = TINFL_STATUS_FAILED; - return MZ_BUF_ERROR; - } - return MZ_STREAM_END; - } - /* flush != MZ_FINISH then we must assume there's more input. */ - if (flush != MZ_FINISH) - decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT; - - if (pState->m_dict_avail) - { - n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); - memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); - pStream->next_out += n; - pStream->avail_out -= n; - pStream->total_out += n; - pState->m_dict_avail -= n; - pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); - return ((pState->m_last_status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; - } - - for (;;) - { - in_bytes = pStream->avail_in; - out_bytes = TINFL_LZ_DICT_SIZE - pState->m_dict_ofs; - - status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags); - pState->m_last_status = status; - - pStream->next_in += (mz_uint)in_bytes; - pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; - pStream->adler = tinfl_get_adler32(&pState->m_decomp); - - pState->m_dict_avail = (mz_uint)out_bytes; - - n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); - memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); - pStream->next_out += n; - pStream->avail_out -= n; - pStream->total_out += n; - pState->m_dict_avail -= n; - pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); - - if (status < 0) - return MZ_DATA_ERROR; /* Stream is corrupted (there could be some uncompressed data left in the output dictionary - oh well). */ - else if ((status == TINFL_STATUS_NEEDS_MORE_INPUT) && (!orig_avail_in)) - return MZ_BUF_ERROR; /* Signal caller that we can't make forward progress without supplying more input or by setting flush to MZ_FINISH. */ - else if (flush == MZ_FINISH) - { - /* The output buffer MUST be large to hold the remaining uncompressed data when flush==MZ_FINISH. */ - if (status == TINFL_STATUS_DONE) - return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END; - /* status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's at least 1 more byte on the way. If there's no more room left in the output buffer then something is wrong. */ - else if (!pStream->avail_out) - return MZ_BUF_ERROR; - } - else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || (!pStream->avail_out) || (pState->m_dict_avail)) - break; - } - - return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; -} - -int mz_inflateEnd(mz_streamp pStream) -{ - if (!pStream) - return MZ_STREAM_ERROR; - if (pStream->state) - { - pStream->zfree(pStream->opaque, pStream->state); - pStream->state = NULL; - } - return MZ_OK; -} - -int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len) -{ - mz_stream stream; - int status; - memset(&stream, 0, sizeof(stream)); - - /* In case mz_ulong is 64-bits (argh I hate longs). */ - if ((source_len | *pDest_len) > 0xFFFFFFFFU) - return MZ_PARAM_ERROR; - - stream.next_in = pSource; - stream.avail_in = (mz_uint32)source_len; - stream.next_out = pDest; - stream.avail_out = (mz_uint32)*pDest_len; - - status = mz_inflateInit(&stream); - if (status != MZ_OK) - return status; - - status = mz_inflate(&stream, MZ_FINISH); - if (status != MZ_STREAM_END) - { - mz_inflateEnd(&stream); - return ((status == MZ_BUF_ERROR) && (!stream.avail_in)) ? MZ_DATA_ERROR : status; - } - *pDest_len = stream.total_out; - - return mz_inflateEnd(&stream); -} - -const char *mz_error(int err) -{ - static struct - { - int m_err; - const char *m_pDesc; - } s_error_descs[] = - { - { MZ_OK, "" }, { MZ_STREAM_END, "stream end" }, { MZ_NEED_DICT, "need dictionary" }, { MZ_ERRNO, "file error" }, { MZ_STREAM_ERROR, "stream error" }, { MZ_DATA_ERROR, "data error" }, { MZ_MEM_ERROR, "out of memory" }, { MZ_BUF_ERROR, "buf error" }, { MZ_VERSION_ERROR, "version error" }, { MZ_PARAM_ERROR, "parameter error" } - }; - mz_uint i; - for (i = 0; i < sizeof(s_error_descs) / sizeof(s_error_descs[0]); ++i) - if (s_error_descs[i].m_err == err) - return s_error_descs[i].m_pDesc; - return NULL; -} - -#endif /*MINIZ_NO_ZLIB_APIS */ - -#ifdef __cplusplus -} -#endif - -/* - This is free and unencumbered software released into the public domain. - - Anyone is free to copy, modify, publish, use, compile, sell, or - distribute this software, either in source code form or as a compiled - binary, for any purpose, commercial or non-commercial, and by any - means. - - In jurisdictions that recognize copyright laws, the author or authors - of this software dedicate any and all copyright interest in the - software to the public domain. We make this dedication for the benefit - of the public at large and to the detriment of our heirs and - successors. We intend this dedication to be an overt act of - relinquishment in perpetuity of all present and future rights to this - software under copyright law. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - For more information, please refer to -*/ -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - - - - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- Low-level Compression (independent from all decompression API's) */ - -/* Purposely making these tables static for faster init and thread safety. */ -static const mz_uint16 s_tdefl_len_sym[256] = - { - 257, 258, 259, 260, 261, 262, 263, 264, 265, 265, 266, 266, 267, 267, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 272, - 273, 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 276, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, - 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285 - }; - -static const mz_uint8 s_tdefl_len_extra[256] = - { - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 - }; - -static const mz_uint8 s_tdefl_small_dist_sym[512] = - { - 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 - }; - -static const mz_uint8 s_tdefl_small_dist_extra[512] = - { - 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7 - }; - -static const mz_uint8 s_tdefl_large_dist_sym[128] = - { - 0, 0, 18, 19, 20, 20, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 - }; - -static const mz_uint8 s_tdefl_large_dist_extra[128] = - { - 0, 0, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13 - }; - -/* Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted values. */ -typedef struct -{ - mz_uint16 m_key, m_sym_index; -} tdefl_sym_freq; -static tdefl_sym_freq *tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq *pSyms0, tdefl_sym_freq *pSyms1) -{ - mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2]; - tdefl_sym_freq *pCur_syms = pSyms0, *pNew_syms = pSyms1; - MZ_CLEAR_OBJ(hist); - for (i = 0; i < num_syms; i++) - { - mz_uint freq = pSyms0[i].m_key; - hist[freq & 0xFF]++; - hist[256 + ((freq >> 8) & 0xFF)]++; - } - while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256])) - total_passes--; - for (pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8) - { - const mz_uint32 *pHist = &hist[pass << 8]; - mz_uint offsets[256], cur_ofs = 0; - for (i = 0; i < 256; i++) - { - offsets[i] = cur_ofs; - cur_ofs += pHist[i]; - } - for (i = 0; i < num_syms; i++) - pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[i]; - { - tdefl_sym_freq *t = pCur_syms; - pCur_syms = pNew_syms; - pNew_syms = t; - } - } - return pCur_syms; -} - -/* tdefl_calculate_minimum_redundancy() originally written by: Alistair Moffat, alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996. */ -static void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n) -{ - int root, leaf, next, avbl, used, dpth; - if (n == 0) - return; - else if (n == 1) - { - A[0].m_key = 1; - return; - } - A[0].m_key += A[1].m_key; - root = 0; - leaf = 2; - for (next = 1; next < n - 1; next++) - { - if (leaf >= n || A[root].m_key < A[leaf].m_key) - { - A[next].m_key = A[root].m_key; - A[root++].m_key = (mz_uint16)next; - } - else - A[next].m_key = A[leaf++].m_key; - if (leaf >= n || (root < next && A[root].m_key < A[leaf].m_key)) - { - A[next].m_key = (mz_uint16)(A[next].m_key + A[root].m_key); - A[root++].m_key = (mz_uint16)next; - } - else - A[next].m_key = (mz_uint16)(A[next].m_key + A[leaf++].m_key); - } - A[n - 2].m_key = 0; - for (next = n - 3; next >= 0; next--) - A[next].m_key = A[A[next].m_key].m_key + 1; - avbl = 1; - used = dpth = 0; - root = n - 2; - next = n - 1; - while (avbl > 0) - { - while (root >= 0 && (int)A[root].m_key == dpth) - { - used++; - root--; - } - while (avbl > used) - { - A[next--].m_key = (mz_uint16)(dpth); - avbl--; - } - avbl = 2 * used; - dpth++; - used = 0; - } -} - -/* Limits canonical Huffman code table's max code size. */ -enum -{ - TDEFL_MAX_SUPPORTED_HUFF_CODESIZE = 32 -}; -static void tdefl_huffman_enforce_max_code_size(int *pNum_codes, int code_list_len, int max_code_size) -{ - int i; - mz_uint32 total = 0; - if (code_list_len <= 1) - return; - for (i = max_code_size + 1; i <= TDEFL_MAX_SUPPORTED_HUFF_CODESIZE; i++) - pNum_codes[max_code_size] += pNum_codes[i]; - for (i = max_code_size; i > 0; i--) - total += (((mz_uint32)pNum_codes[i]) << (max_code_size - i)); - while (total != (1UL << max_code_size)) - { - pNum_codes[max_code_size]--; - for (i = max_code_size - 1; i > 0; i--) - if (pNum_codes[i]) - { - pNum_codes[i]--; - pNum_codes[i + 1] += 2; - break; - } - total--; - } -} - -static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int table_len, int code_size_limit, int static_table) -{ - int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE]; - mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1]; - MZ_CLEAR_OBJ(num_codes); - if (static_table) - { - for (i = 0; i < table_len; i++) - num_codes[d->m_huff_code_sizes[table_num][i]]++; - } - else - { - tdefl_sym_freq syms0[TDEFL_MAX_HUFF_SYMBOLS], syms1[TDEFL_MAX_HUFF_SYMBOLS], *pSyms; - int num_used_syms = 0; - const mz_uint16 *pSym_count = &d->m_huff_count[table_num][0]; - for (i = 0; i < table_len; i++) - if (pSym_count[i]) - { - syms0[num_used_syms].m_key = (mz_uint16)pSym_count[i]; - syms0[num_used_syms++].m_sym_index = (mz_uint16)i; - } - - pSyms = tdefl_radix_sort_syms(num_used_syms, syms0, syms1); - tdefl_calculate_minimum_redundancy(pSyms, num_used_syms); - - for (i = 0; i < num_used_syms; i++) - num_codes[pSyms[i].m_key]++; - - tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, code_size_limit); - - MZ_CLEAR_OBJ(d->m_huff_code_sizes[table_num]); - MZ_CLEAR_OBJ(d->m_huff_codes[table_num]); - for (i = 1, j = num_used_syms; i <= code_size_limit; i++) - for (l = num_codes[i]; l > 0; l--) - d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i); - } - - next_code[1] = 0; - for (j = 0, i = 2; i <= code_size_limit; i++) - next_code[i] = j = ((j + num_codes[i - 1]) << 1); - - for (i = 0; i < table_len; i++) - { - mz_uint rev_code = 0, code, code_size; - if ((code_size = d->m_huff_code_sizes[table_num][i]) == 0) - continue; - code = next_code[code_size]++; - for (l = code_size; l > 0; l--, code >>= 1) - rev_code = (rev_code << 1) | (code & 1); - d->m_huff_codes[table_num][i] = (mz_uint16)rev_code; - } -} - -#define TDEFL_PUT_BITS(b, l) \ - do \ - { \ - mz_uint bits = b; \ - mz_uint len = l; \ - MZ_ASSERT(bits <= ((1U << len) - 1U)); \ - d->m_bit_buffer |= (bits << d->m_bits_in); \ - d->m_bits_in += len; \ - while (d->m_bits_in >= 8) \ - { \ - if (d->m_pOutput_buf < d->m_pOutput_buf_end) \ - *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \ - d->m_bit_buffer >>= 8; \ - d->m_bits_in -= 8; \ - } \ - } \ - MZ_MACRO_END - -#define TDEFL_RLE_PREV_CODE_SIZE() \ - { \ - if (rle_repeat_count) \ - { \ - if (rle_repeat_count < 3) \ - { \ - d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \ - while (rle_repeat_count--) \ - packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \ - } \ - else \ - { \ - d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); \ - packed_code_sizes[num_packed_code_sizes++] = 16; \ - packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3); \ - } \ - rle_repeat_count = 0; \ - } \ - } - -#define TDEFL_RLE_ZERO_CODE_SIZE() \ - { \ - if (rle_z_count) \ - { \ - if (rle_z_count < 3) \ - { \ - d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); \ - while (rle_z_count--) \ - packed_code_sizes[num_packed_code_sizes++] = 0; \ - } \ - else if (rle_z_count <= 10) \ - { \ - d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); \ - packed_code_sizes[num_packed_code_sizes++] = 17; \ - packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3); \ - } \ - else \ - { \ - d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); \ - packed_code_sizes[num_packed_code_sizes++] = 18; \ - packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \ - } \ - rle_z_count = 0; \ - } \ - } - -static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; - -static void tdefl_start_dynamic_block(tdefl_compressor *d) -{ - int num_lit_codes, num_dist_codes, num_bit_lengths; - mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, rle_repeat_count, packed_code_sizes_index; - mz_uint8 code_sizes_to_pack[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], packed_code_sizes[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], prev_code_size = 0xFF; - - d->m_huff_count[0][256] = 1; - - tdefl_optimize_huffman_table(d, 0, TDEFL_MAX_HUFF_SYMBOLS_0, 15, MZ_FALSE); - tdefl_optimize_huffman_table(d, 1, TDEFL_MAX_HUFF_SYMBOLS_1, 15, MZ_FALSE); - - for (num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--) - if (d->m_huff_code_sizes[0][num_lit_codes - 1]) - break; - for (num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--) - if (d->m_huff_code_sizes[1][num_dist_codes - 1]) - break; - - memcpy(code_sizes_to_pack, &d->m_huff_code_sizes[0][0], num_lit_codes); - memcpy(code_sizes_to_pack + num_lit_codes, &d->m_huff_code_sizes[1][0], num_dist_codes); - total_code_sizes_to_pack = num_lit_codes + num_dist_codes; - num_packed_code_sizes = 0; - rle_z_count = 0; - rle_repeat_count = 0; - - memset(&d->m_huff_count[2][0], 0, sizeof(d->m_huff_count[2][0]) * TDEFL_MAX_HUFF_SYMBOLS_2); - for (i = 0; i < total_code_sizes_to_pack; i++) - { - mz_uint8 code_size = code_sizes_to_pack[i]; - if (!code_size) - { - TDEFL_RLE_PREV_CODE_SIZE(); - if (++rle_z_count == 138) - { - TDEFL_RLE_ZERO_CODE_SIZE(); - } - } - else - { - TDEFL_RLE_ZERO_CODE_SIZE(); - if (code_size != prev_code_size) - { - TDEFL_RLE_PREV_CODE_SIZE(); - d->m_huff_count[2][code_size] = (mz_uint16)(d->m_huff_count[2][code_size] + 1); - packed_code_sizes[num_packed_code_sizes++] = code_size; - } - else if (++rle_repeat_count == 6) - { - TDEFL_RLE_PREV_CODE_SIZE(); - } - } - prev_code_size = code_size; - } - if (rle_repeat_count) - { - TDEFL_RLE_PREV_CODE_SIZE(); - } - else - { - TDEFL_RLE_ZERO_CODE_SIZE(); - } - - tdefl_optimize_huffman_table(d, 2, TDEFL_MAX_HUFF_SYMBOLS_2, 7, MZ_FALSE); - - TDEFL_PUT_BITS(2, 2); - - TDEFL_PUT_BITS(num_lit_codes - 257, 5); - TDEFL_PUT_BITS(num_dist_codes - 1, 5); - - for (num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--) - if (d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[num_bit_lengths]]) - break; - num_bit_lengths = MZ_MAX(4, (num_bit_lengths + 1)); - TDEFL_PUT_BITS(num_bit_lengths - 4, 4); - for (i = 0; (int)i < num_bit_lengths; i++) - TDEFL_PUT_BITS(d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[i]], 3); - - for (packed_code_sizes_index = 0; packed_code_sizes_index < num_packed_code_sizes;) - { - mz_uint code = packed_code_sizes[packed_code_sizes_index++]; - MZ_ASSERT(code < TDEFL_MAX_HUFF_SYMBOLS_2); - TDEFL_PUT_BITS(d->m_huff_codes[2][code], d->m_huff_code_sizes[2][code]); - if (code >= 16) - TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++], "\02\03\07"[code - 16]); - } -} - -static void tdefl_start_static_block(tdefl_compressor *d) -{ - mz_uint i; - mz_uint8 *p = &d->m_huff_code_sizes[0][0]; - - for (i = 0; i <= 143; ++i) - *p++ = 8; - for (; i <= 255; ++i) - *p++ = 9; - for (; i <= 279; ++i) - *p++ = 7; - for (; i <= 287; ++i) - *p++ = 8; - - memset(d->m_huff_code_sizes[1], 5, 32); - - tdefl_optimize_huffman_table(d, 0, 288, 15, MZ_TRUE); - tdefl_optimize_huffman_table(d, 1, 32, 15, MZ_TRUE); - - TDEFL_PUT_BITS(1, 2); -} - -static const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF }; - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS -static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) -{ - mz_uint flags; - mz_uint8 *pLZ_codes; - mz_uint8 *pOutput_buf = d->m_pOutput_buf; - mz_uint8 *pLZ_code_buf_end = d->m_pLZ_code_buf; - mz_uint64 bit_buffer = d->m_bit_buffer; - mz_uint bits_in = d->m_bits_in; - -#define TDEFL_PUT_BITS_FAST(b, l) \ - { \ - bit_buffer |= (((mz_uint64)(b)) << bits_in); \ - bits_in += (l); \ - } - - flags = 1; - for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; flags >>= 1) - { - if (flags == 1) - flags = *pLZ_codes++ | 0x100; - - if (flags & 1) - { - mz_uint s0, s1, n0, n1, sym, num_extra_bits; - mz_uint match_len = pLZ_codes[0], match_dist = *(const mz_uint16 *)(pLZ_codes + 1); - pLZ_codes += 3; - - MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS_FAST(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]); - - /* This sequence coaxes MSVC into using cmov's vs. jmp's. */ - s0 = s_tdefl_small_dist_sym[match_dist & 511]; - n0 = s_tdefl_small_dist_extra[match_dist & 511]; - s1 = s_tdefl_large_dist_sym[match_dist >> 8]; - n1 = s_tdefl_large_dist_extra[match_dist >> 8]; - sym = (match_dist < 512) ? s0 : s1; - num_extra_bits = (match_dist < 512) ? n0 : n1; - - MZ_ASSERT(d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS_FAST(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits); - } - else - { - mz_uint lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - - if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) - { - flags >>= 1; - lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - - if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) - { - flags >>= 1; - lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - } - } - } - - if (pOutput_buf >= d->m_pOutput_buf_end) - return MZ_FALSE; - - *(mz_uint64 *)pOutput_buf = bit_buffer; - pOutput_buf += (bits_in >> 3); - bit_buffer >>= (bits_in & ~7); - bits_in &= 7; - } - -#undef TDEFL_PUT_BITS_FAST - - d->m_pOutput_buf = pOutput_buf; - d->m_bits_in = 0; - d->m_bit_buffer = 0; - - while (bits_in) - { - mz_uint32 n = MZ_MIN(bits_in, 16); - TDEFL_PUT_BITS((mz_uint)bit_buffer & mz_bitmasks[n], n); - bit_buffer >>= n; - bits_in -= n; - } - - TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]); - - return (d->m_pOutput_buf < d->m_pOutput_buf_end); -} -#else -static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) -{ - mz_uint flags; - mz_uint8 *pLZ_codes; - - flags = 1; - for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < d->m_pLZ_code_buf; flags >>= 1) - { - if (flags == 1) - flags = *pLZ_codes++ | 0x100; - if (flags & 1) - { - mz_uint sym, num_extra_bits; - mz_uint match_len = pLZ_codes[0], match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8)); - pLZ_codes += 3; - - MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]); - - if (match_dist < 512) - { - sym = s_tdefl_small_dist_sym[match_dist]; - num_extra_bits = s_tdefl_small_dist_extra[match_dist]; - } - else - { - sym = s_tdefl_large_dist_sym[match_dist >> 8]; - num_extra_bits = s_tdefl_large_dist_extra[match_dist >> 8]; - } - MZ_ASSERT(d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits); - } - else - { - mz_uint lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - } - } - - TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]); - - return (d->m_pOutput_buf < d->m_pOutput_buf_end); -} -#endif /* MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS */ - -static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block) -{ - if (static_block) - tdefl_start_static_block(d); - else - tdefl_start_dynamic_block(d); - return tdefl_compress_lz_codes(d); -} - -static int tdefl_flush_block(tdefl_compressor *d, int flush) -{ - mz_uint saved_bit_buf, saved_bits_in; - mz_uint8 *pSaved_output_buf; - mz_bool comp_block_succeeded = MZ_FALSE; - int n, use_raw_block = ((d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS) != 0) && (d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size; - mz_uint8 *pOutput_buf_start = ((d->m_pPut_buf_func == NULL) && ((*d->m_pOut_buf_size - d->m_out_buf_ofs) >= TDEFL_OUT_BUF_SIZE)) ? ((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs) : d->m_output_buf; - - d->m_pOutput_buf = pOutput_buf_start; - d->m_pOutput_buf_end = d->m_pOutput_buf + TDEFL_OUT_BUF_SIZE - 16; - - MZ_ASSERT(!d->m_output_flush_remaining); - d->m_output_flush_ofs = 0; - d->m_output_flush_remaining = 0; - - *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> d->m_num_flags_left); - d->m_pLZ_code_buf -= (d->m_num_flags_left == 8); - - if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index)) - { - TDEFL_PUT_BITS(0x78, 8); - TDEFL_PUT_BITS(0x01, 8); - } - - TDEFL_PUT_BITS(flush == TDEFL_FINISH, 1); - - pSaved_output_buf = d->m_pOutput_buf; - saved_bit_buf = d->m_bit_buffer; - saved_bits_in = d->m_bits_in; - - if (!use_raw_block) - comp_block_succeeded = tdefl_compress_block(d, (d->m_flags & TDEFL_FORCE_ALL_STATIC_BLOCKS) || (d->m_total_lz_bytes < 48)); - - /* If the block gets expanded, forget the current contents of the output buffer and send a raw block instead. */ - if (((use_raw_block) || ((d->m_total_lz_bytes) && ((d->m_pOutput_buf - pSaved_output_buf + 1U) >= d->m_total_lz_bytes))) && - ((d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size)) - { - mz_uint i; - d->m_pOutput_buf = pSaved_output_buf; - d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; - TDEFL_PUT_BITS(0, 2); - if (d->m_bits_in) - { - TDEFL_PUT_BITS(0, 8 - d->m_bits_in); - } - for (i = 2; i; --i, d->m_total_lz_bytes ^= 0xFFFF) - { - TDEFL_PUT_BITS(d->m_total_lz_bytes & 0xFFFF, 16); - } - for (i = 0; i < d->m_total_lz_bytes; ++i) - { - TDEFL_PUT_BITS(d->m_dict[(d->m_lz_code_buf_dict_pos + i) & TDEFL_LZ_DICT_SIZE_MASK], 8); - } - } - /* Check for the extremely unlikely (if not impossible) case of the compressed block not fitting into the output buffer when using dynamic codes. */ - else if (!comp_block_succeeded) - { - d->m_pOutput_buf = pSaved_output_buf; - d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; - tdefl_compress_block(d, MZ_TRUE); - } - - if (flush) - { - if (flush == TDEFL_FINISH) - { - if (d->m_bits_in) - { - TDEFL_PUT_BITS(0, 8 - d->m_bits_in); - } - if (d->m_flags & TDEFL_WRITE_ZLIB_HEADER) - { - mz_uint i, a = d->m_adler32; - for (i = 0; i < 4; i++) - { - TDEFL_PUT_BITS((a >> 24) & 0xFF, 8); - a <<= 8; - } - } - } - else - { - mz_uint i, z = 0; - TDEFL_PUT_BITS(0, 3); - if (d->m_bits_in) - { - TDEFL_PUT_BITS(0, 8 - d->m_bits_in); - } - for (i = 2; i; --i, z ^= 0xFFFF) - { - TDEFL_PUT_BITS(z & 0xFFFF, 16); - } - } - } - - MZ_ASSERT(d->m_pOutput_buf < d->m_pOutput_buf_end); - - memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); - memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); - - d->m_pLZ_code_buf = d->m_lz_code_buf + 1; - d->m_pLZ_flags = d->m_lz_code_buf; - d->m_num_flags_left = 8; - d->m_lz_code_buf_dict_pos += d->m_total_lz_bytes; - d->m_total_lz_bytes = 0; - d->m_block_index++; - - if ((n = (int)(d->m_pOutput_buf - pOutput_buf_start)) != 0) - { - if (d->m_pPut_buf_func) - { - *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf; - if (!(*d->m_pPut_buf_func)(d->m_output_buf, n, d->m_pPut_buf_user)) - return (d->m_prev_return_status = TDEFL_STATUS_PUT_BUF_FAILED); - } - else if (pOutput_buf_start == d->m_output_buf) - { - int bytes_to_copy = (int)MZ_MIN((size_t)n, (size_t)(*d->m_pOut_buf_size - d->m_out_buf_ofs)); - memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf, bytes_to_copy); - d->m_out_buf_ofs += bytes_to_copy; - if ((n -= bytes_to_copy) != 0) - { - d->m_output_flush_ofs = bytes_to_copy; - d->m_output_flush_remaining = n; - } - } - else - { - d->m_out_buf_ofs += n; - } - } - - return d->m_output_flush_remaining; -} - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES -#ifdef MINIZ_UNALIGNED_USE_MEMCPY -static inline mz_uint16 TDEFL_READ_UNALIGNED_WORD(const mz_uint8* p) -{ - mz_uint16 ret; - memcpy(&ret, p, sizeof(mz_uint16)); - return ret; -} -static inline mz_uint16 TDEFL_READ_UNALIGNED_WORD2(const mz_uint16* p) -{ - mz_uint16 ret; - memcpy(&ret, p, sizeof(mz_uint16)); - return ret; -} -#else -#define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16 *)(p) -#define TDEFL_READ_UNALIGNED_WORD2(p) *(const mz_uint16 *)(p) -#endif -static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len) -{ - mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len; - mz_uint num_probes_left = d->m_max_probes[match_len >= 32]; - const mz_uint16 *s = (const mz_uint16 *)(d->m_dict + pos), *p, *q; - mz_uint16 c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]), s01 = TDEFL_READ_UNALIGNED_WORD2(s); - MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); - if (max_match_len <= match_len) - return; - for (;;) - { - for (;;) - { - if (--num_probes_left == 0) - return; -#define TDEFL_PROBE \ - next_probe_pos = d->m_next[probe_pos]; \ - if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ - return; \ - probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ - if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) \ - break; - TDEFL_PROBE; - TDEFL_PROBE; - TDEFL_PROBE; - } - if (!dist) - break; - q = (const mz_uint16 *)(d->m_dict + probe_pos); - if (TDEFL_READ_UNALIGNED_WORD2(q) != s01) - continue; - p = s; - probe_len = 32; - do - { - } while ((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && - (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0)); - if (!probe_len) - { - *pMatch_dist = dist; - *pMatch_len = MZ_MIN(max_match_len, (mz_uint)TDEFL_MAX_MATCH_LEN); - break; - } - else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q)) > match_len) - { - *pMatch_dist = dist; - if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len) - break; - c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]); - } - } -} -#else -static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len) -{ - mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len; - mz_uint num_probes_left = d->m_max_probes[match_len >= 32]; - const mz_uint8 *s = d->m_dict + pos, *p, *q; - mz_uint8 c0 = d->m_dict[pos + match_len], c1 = d->m_dict[pos + match_len - 1]; - MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); - if (max_match_len <= match_len) - return; - for (;;) - { - for (;;) - { - if (--num_probes_left == 0) - return; -#define TDEFL_PROBE \ - next_probe_pos = d->m_next[probe_pos]; \ - if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ - return; \ - probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ - if ((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) \ - break; - TDEFL_PROBE; - TDEFL_PROBE; - TDEFL_PROBE; - } - if (!dist) - break; - p = s; - q = d->m_dict + probe_pos; - for (probe_len = 0; probe_len < max_match_len; probe_len++) - if (*p++ != *q++) - break; - if (probe_len > match_len) - { - *pMatch_dist = dist; - if ((*pMatch_len = match_len = probe_len) == max_match_len) - return; - c0 = d->m_dict[pos + match_len]; - c1 = d->m_dict[pos + match_len - 1]; - } - } -} -#endif /* #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES */ - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN -static mz_bool tdefl_compress_fast(tdefl_compressor *d) -{ - /* Faster, minimally featured LZRW1-style match+parse loop with better register utilization. Intended for applications where raw throughput is valued more highly than ratio. */ - mz_uint lookahead_pos = d->m_lookahead_pos, lookahead_size = d->m_lookahead_size, dict_size = d->m_dict_size, total_lz_bytes = d->m_total_lz_bytes, num_flags_left = d->m_num_flags_left; - mz_uint8 *pLZ_code_buf = d->m_pLZ_code_buf, *pLZ_flags = d->m_pLZ_flags; - mz_uint cur_pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; - - while ((d->m_src_buf_left) || ((d->m_flush) && (lookahead_size))) - { - const mz_uint TDEFL_COMP_FAST_LOOKAHEAD_SIZE = 4096; - mz_uint dst_pos = (lookahead_pos + lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; - mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(d->m_src_buf_left, TDEFL_COMP_FAST_LOOKAHEAD_SIZE - lookahead_size); - d->m_src_buf_left -= num_bytes_to_process; - lookahead_size += num_bytes_to_process; - - while (num_bytes_to_process) - { - mz_uint32 n = MZ_MIN(TDEFL_LZ_DICT_SIZE - dst_pos, num_bytes_to_process); - memcpy(d->m_dict + dst_pos, d->m_pSrc, n); - if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - memcpy(d->m_dict + TDEFL_LZ_DICT_SIZE + dst_pos, d->m_pSrc, MZ_MIN(n, (TDEFL_MAX_MATCH_LEN - 1) - dst_pos)); - d->m_pSrc += n; - dst_pos = (dst_pos + n) & TDEFL_LZ_DICT_SIZE_MASK; - num_bytes_to_process -= n; - } - - dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - lookahead_size, dict_size); - if ((!d->m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE)) - break; - - while (lookahead_size >= 4) - { - mz_uint cur_match_dist, cur_match_len = 1; - mz_uint8 *pCur_dict = d->m_dict + cur_pos; - mz_uint first_trigram = (*(const mz_uint32 *)pCur_dict) & 0xFFFFFF; - mz_uint hash = (first_trigram ^ (first_trigram >> (24 - (TDEFL_LZ_HASH_BITS - 8)))) & TDEFL_LEVEL1_HASH_SIZE_MASK; - mz_uint probe_pos = d->m_hash[hash]; - d->m_hash[hash] = (mz_uint16)lookahead_pos; - - if (((cur_match_dist = (mz_uint16)(lookahead_pos - probe_pos)) <= dict_size) && ((*(const mz_uint32 *)(d->m_dict + (probe_pos &= TDEFL_LZ_DICT_SIZE_MASK)) & 0xFFFFFF) == first_trigram)) - { - const mz_uint16 *p = (const mz_uint16 *)pCur_dict; - const mz_uint16 *q = (const mz_uint16 *)(d->m_dict + probe_pos); - mz_uint32 probe_len = 32; - do - { - } while ((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && - (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0)); - cur_match_len = ((mz_uint)(p - (const mz_uint16 *)pCur_dict) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q); - if (!probe_len) - cur_match_len = cur_match_dist ? TDEFL_MAX_MATCH_LEN : 0; - - if ((cur_match_len < TDEFL_MIN_MATCH_LEN) || ((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U * 1024U))) - { - cur_match_len = 1; - *pLZ_code_buf++ = (mz_uint8)first_trigram; - *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - d->m_huff_count[0][(mz_uint8)first_trigram]++; - } - else - { - mz_uint32 s0, s1; - cur_match_len = MZ_MIN(cur_match_len, lookahead_size); - - MZ_ASSERT((cur_match_len >= TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 1) && (cur_match_dist <= TDEFL_LZ_DICT_SIZE)); - - cur_match_dist--; - - pLZ_code_buf[0] = (mz_uint8)(cur_match_len - TDEFL_MIN_MATCH_LEN); - *(mz_uint16 *)(&pLZ_code_buf[1]) = (mz_uint16)cur_match_dist; - pLZ_code_buf += 3; - *pLZ_flags = (mz_uint8)((*pLZ_flags >> 1) | 0x80); - - s0 = s_tdefl_small_dist_sym[cur_match_dist & 511]; - s1 = s_tdefl_large_dist_sym[cur_match_dist >> 8]; - d->m_huff_count[1][(cur_match_dist < 512) ? s0 : s1]++; - - d->m_huff_count[0][s_tdefl_len_sym[cur_match_len - TDEFL_MIN_MATCH_LEN]]++; - } - } - else - { - *pLZ_code_buf++ = (mz_uint8)first_trigram; - *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - d->m_huff_count[0][(mz_uint8)first_trigram]++; - } - - if (--num_flags_left == 0) - { - num_flags_left = 8; - pLZ_flags = pLZ_code_buf++; - } - - total_lz_bytes += cur_match_len; - lookahead_pos += cur_match_len; - dict_size = MZ_MIN(dict_size + cur_match_len, (mz_uint)TDEFL_LZ_DICT_SIZE); - cur_pos = (cur_pos + cur_match_len) & TDEFL_LZ_DICT_SIZE_MASK; - MZ_ASSERT(lookahead_size >= cur_match_len); - lookahead_size -= cur_match_len; - - if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) - { - int n; - d->m_lookahead_pos = lookahead_pos; - d->m_lookahead_size = lookahead_size; - d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; - d->m_pLZ_code_buf = pLZ_code_buf; - d->m_pLZ_flags = pLZ_flags; - d->m_num_flags_left = num_flags_left; - if ((n = tdefl_flush_block(d, 0)) != 0) - return (n < 0) ? MZ_FALSE : MZ_TRUE; - total_lz_bytes = d->m_total_lz_bytes; - pLZ_code_buf = d->m_pLZ_code_buf; - pLZ_flags = d->m_pLZ_flags; - num_flags_left = d->m_num_flags_left; - } - } - - while (lookahead_size) - { - mz_uint8 lit = d->m_dict[cur_pos]; - - total_lz_bytes++; - *pLZ_code_buf++ = lit; - *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - if (--num_flags_left == 0) - { - num_flags_left = 8; - pLZ_flags = pLZ_code_buf++; - } - - d->m_huff_count[0][lit]++; - - lookahead_pos++; - dict_size = MZ_MIN(dict_size + 1, (mz_uint)TDEFL_LZ_DICT_SIZE); - cur_pos = (cur_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; - lookahead_size--; - - if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) - { - int n; - d->m_lookahead_pos = lookahead_pos; - d->m_lookahead_size = lookahead_size; - d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; - d->m_pLZ_code_buf = pLZ_code_buf; - d->m_pLZ_flags = pLZ_flags; - d->m_num_flags_left = num_flags_left; - if ((n = tdefl_flush_block(d, 0)) != 0) - return (n < 0) ? MZ_FALSE : MZ_TRUE; - total_lz_bytes = d->m_total_lz_bytes; - pLZ_code_buf = d->m_pLZ_code_buf; - pLZ_flags = d->m_pLZ_flags; - num_flags_left = d->m_num_flags_left; - } - } - } - - d->m_lookahead_pos = lookahead_pos; - d->m_lookahead_size = lookahead_size; - d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; - d->m_pLZ_code_buf = pLZ_code_buf; - d->m_pLZ_flags = pLZ_flags; - d->m_num_flags_left = num_flags_left; - return MZ_TRUE; -} -#endif /* MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN */ - -static MZ_FORCEINLINE void tdefl_record_literal(tdefl_compressor *d, mz_uint8 lit) -{ - d->m_total_lz_bytes++; - *d->m_pLZ_code_buf++ = lit; - *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> 1); - if (--d->m_num_flags_left == 0) - { - d->m_num_flags_left = 8; - d->m_pLZ_flags = d->m_pLZ_code_buf++; - } - d->m_huff_count[0][lit]++; -} - -static MZ_FORCEINLINE void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist) -{ - mz_uint32 s0, s1; - - MZ_ASSERT((match_len >= TDEFL_MIN_MATCH_LEN) && (match_dist >= 1) && (match_dist <= TDEFL_LZ_DICT_SIZE)); - - d->m_total_lz_bytes += match_len; - - d->m_pLZ_code_buf[0] = (mz_uint8)(match_len - TDEFL_MIN_MATCH_LEN); - - match_dist -= 1; - d->m_pLZ_code_buf[1] = (mz_uint8)(match_dist & 0xFF); - d->m_pLZ_code_buf[2] = (mz_uint8)(match_dist >> 8); - d->m_pLZ_code_buf += 3; - - *d->m_pLZ_flags = (mz_uint8)((*d->m_pLZ_flags >> 1) | 0x80); - if (--d->m_num_flags_left == 0) - { - d->m_num_flags_left = 8; - d->m_pLZ_flags = d->m_pLZ_code_buf++; - } - - s0 = s_tdefl_small_dist_sym[match_dist & 511]; - s1 = s_tdefl_large_dist_sym[(match_dist >> 8) & 127]; - d->m_huff_count[1][(match_dist < 512) ? s0 : s1]++; - - if (match_len >= TDEFL_MIN_MATCH_LEN) - d->m_huff_count[0][s_tdefl_len_sym[match_len - TDEFL_MIN_MATCH_LEN]]++; -} - -static mz_bool tdefl_compress_normal(tdefl_compressor *d) -{ - const mz_uint8 *pSrc = d->m_pSrc; - size_t src_buf_left = d->m_src_buf_left; - tdefl_flush flush = d->m_flush; - - while ((src_buf_left) || ((flush) && (d->m_lookahead_size))) - { - mz_uint len_to_move, cur_match_dist, cur_match_len, cur_pos; - /* Update dictionary and hash chains. Keeps the lookahead size equal to TDEFL_MAX_MATCH_LEN. */ - if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1)) - { - mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2; - mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK]; - mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size); - const mz_uint8 *pSrc_end = pSrc + num_bytes_to_process; - src_buf_left -= num_bytes_to_process; - d->m_lookahead_size += num_bytes_to_process; - while (pSrc != pSrc_end) - { - mz_uint8 c = *pSrc++; - d->m_dict[dst_pos] = c; - if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; - hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); - d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; - d->m_hash[hash] = (mz_uint16)(ins_pos); - dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; - ins_pos++; - } - } - else - { - while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) - { - mz_uint8 c = *pSrc++; - mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; - src_buf_left--; - d->m_dict[dst_pos] = c; - if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; - if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN) - { - mz_uint ins_pos = d->m_lookahead_pos + (d->m_lookahead_size - 1) - 2; - mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << (TDEFL_LZ_HASH_SHIFT * 2)) ^ (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); - d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; - d->m_hash[hash] = (mz_uint16)(ins_pos); - } - } - } - d->m_dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size); - if ((!flush) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) - break; - - /* Simple lazy/greedy parsing state machine. */ - len_to_move = 1; - cur_match_dist = 0; - cur_match_len = d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1); - cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; - if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS)) - { - if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) - { - mz_uint8 c = d->m_dict[(cur_pos - 1) & TDEFL_LZ_DICT_SIZE_MASK]; - cur_match_len = 0; - while (cur_match_len < d->m_lookahead_size) - { - if (d->m_dict[cur_pos + cur_match_len] != c) - break; - cur_match_len++; - } - if (cur_match_len < TDEFL_MIN_MATCH_LEN) - cur_match_len = 0; - else - cur_match_dist = 1; - } - } - else - { - tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, d->m_lookahead_size, &cur_match_dist, &cur_match_len); - } - if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U * 1024U)) || (cur_pos == cur_match_dist) || ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5))) - { - cur_match_dist = cur_match_len = 0; - } - if (d->m_saved_match_len) - { - if (cur_match_len > d->m_saved_match_len) - { - tdefl_record_literal(d, (mz_uint8)d->m_saved_lit); - if (cur_match_len >= 128) - { - tdefl_record_match(d, cur_match_len, cur_match_dist); - d->m_saved_match_len = 0; - len_to_move = cur_match_len; - } - else - { - d->m_saved_lit = d->m_dict[cur_pos]; - d->m_saved_match_dist = cur_match_dist; - d->m_saved_match_len = cur_match_len; - } - } - else - { - tdefl_record_match(d, d->m_saved_match_len, d->m_saved_match_dist); - len_to_move = d->m_saved_match_len - 1; - d->m_saved_match_len = 0; - } - } - else if (!cur_match_dist) - tdefl_record_literal(d, d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]); - else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || (cur_match_len >= 128)) - { - tdefl_record_match(d, cur_match_len, cur_match_dist); - len_to_move = cur_match_len; - } - else - { - d->m_saved_lit = d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]; - d->m_saved_match_dist = cur_match_dist; - d->m_saved_match_len = cur_match_len; - } - /* Move the lookahead forward by len_to_move bytes. */ - d->m_lookahead_pos += len_to_move; - MZ_ASSERT(d->m_lookahead_size >= len_to_move); - d->m_lookahead_size -= len_to_move; - d->m_dict_size = MZ_MIN(d->m_dict_size + len_to_move, (mz_uint)TDEFL_LZ_DICT_SIZE); - /* Check if it's time to flush the current LZ codes to the internal output buffer. */ - if ((d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) || - ((d->m_total_lz_bytes > 31 * 1024) && (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= d->m_total_lz_bytes) || (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS)))) - { - int n; - d->m_pSrc = pSrc; - d->m_src_buf_left = src_buf_left; - if ((n = tdefl_flush_block(d, 0)) != 0) - return (n < 0) ? MZ_FALSE : MZ_TRUE; - } - } - - d->m_pSrc = pSrc; - d->m_src_buf_left = src_buf_left; - return MZ_TRUE; -} - -static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d) -{ - if (d->m_pIn_buf_size) - { - *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf; - } - - if (d->m_pOut_buf_size) - { - size_t n = MZ_MIN(*d->m_pOut_buf_size - d->m_out_buf_ofs, d->m_output_flush_remaining); - memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf + d->m_output_flush_ofs, n); - d->m_output_flush_ofs += (mz_uint)n; - d->m_output_flush_remaining -= (mz_uint)n; - d->m_out_buf_ofs += n; - - *d->m_pOut_buf_size = d->m_out_buf_ofs; - } - - return (d->m_finished && !d->m_output_flush_remaining) ? TDEFL_STATUS_DONE : TDEFL_STATUS_OKAY; -} - -tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush) -{ - if (!d) - { - if (pIn_buf_size) - *pIn_buf_size = 0; - if (pOut_buf_size) - *pOut_buf_size = 0; - return TDEFL_STATUS_BAD_PARAM; - } - - d->m_pIn_buf = pIn_buf; - d->m_pIn_buf_size = pIn_buf_size; - d->m_pOut_buf = pOut_buf; - d->m_pOut_buf_size = pOut_buf_size; - d->m_pSrc = (const mz_uint8 *)(pIn_buf); - d->m_src_buf_left = pIn_buf_size ? *pIn_buf_size : 0; - d->m_out_buf_ofs = 0; - d->m_flush = flush; - - if (((d->m_pPut_buf_func != NULL) == ((pOut_buf != NULL) || (pOut_buf_size != NULL))) || (d->m_prev_return_status != TDEFL_STATUS_OKAY) || - (d->m_wants_to_finish && (flush != TDEFL_FINISH)) || (pIn_buf_size && *pIn_buf_size && !pIn_buf) || (pOut_buf_size && *pOut_buf_size && !pOut_buf)) - { - if (pIn_buf_size) - *pIn_buf_size = 0; - if (pOut_buf_size) - *pOut_buf_size = 0; - return (d->m_prev_return_status = TDEFL_STATUS_BAD_PARAM); - } - d->m_wants_to_finish |= (flush == TDEFL_FINISH); - - if ((d->m_output_flush_remaining) || (d->m_finished)) - return (d->m_prev_return_status = tdefl_flush_output_buffer(d)); - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN - if (((d->m_flags & TDEFL_MAX_PROBES_MASK) == 1) && - ((d->m_flags & TDEFL_GREEDY_PARSING_FLAG) != 0) && - ((d->m_flags & (TDEFL_FILTER_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS | TDEFL_RLE_MATCHES)) == 0)) - { - if (!tdefl_compress_fast(d)) - return d->m_prev_return_status; - } - else -#endif /* #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN */ - { - if (!tdefl_compress_normal(d)) - return d->m_prev_return_status; - } - - if ((d->m_flags & (TDEFL_WRITE_ZLIB_HEADER | TDEFL_COMPUTE_ADLER32)) && (pIn_buf)) - d->m_adler32 = (mz_uint32)mz_adler32(d->m_adler32, (const mz_uint8 *)pIn_buf, d->m_pSrc - (const mz_uint8 *)pIn_buf); - - if ((flush) && (!d->m_lookahead_size) && (!d->m_src_buf_left) && (!d->m_output_flush_remaining)) - { - if (tdefl_flush_block(d, flush) < 0) - return d->m_prev_return_status; - d->m_finished = (flush == TDEFL_FINISH); - if (flush == TDEFL_FULL_FLUSH) - { - MZ_CLEAR_OBJ(d->m_hash); - MZ_CLEAR_OBJ(d->m_next); - d->m_dict_size = 0; - } - } - - return (d->m_prev_return_status = tdefl_flush_output_buffer(d)); -} - -tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush) -{ - MZ_ASSERT(d->m_pPut_buf_func); - return tdefl_compress(d, pIn_buf, &in_buf_size, NULL, NULL, flush); -} - -tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - d->m_pPut_buf_func = pPut_buf_func; - d->m_pPut_buf_user = pPut_buf_user; - d->m_flags = (mz_uint)(flags); - d->m_max_probes[0] = 1 + ((flags & 0xFFF) + 2) / 3; - d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0; - d->m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3; - if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) - MZ_CLEAR_OBJ(d->m_hash); - d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0; - d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0; - d->m_pLZ_code_buf = d->m_lz_code_buf + 1; - d->m_pLZ_flags = d->m_lz_code_buf; - d->m_num_flags_left = 8; - d->m_pOutput_buf = d->m_output_buf; - d->m_pOutput_buf_end = d->m_output_buf; - d->m_prev_return_status = TDEFL_STATUS_OKAY; - d->m_saved_match_dist = d->m_saved_match_len = d->m_saved_lit = 0; - d->m_adler32 = 1; - d->m_pIn_buf = NULL; - d->m_pOut_buf = NULL; - d->m_pIn_buf_size = NULL; - d->m_pOut_buf_size = NULL; - d->m_flush = TDEFL_NO_FLUSH; - d->m_pSrc = NULL; - d->m_src_buf_left = 0; - d->m_out_buf_ofs = 0; - if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) - MZ_CLEAR_OBJ(d->m_dict); - memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); - memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); - return TDEFL_STATUS_OKAY; -} - -tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d) -{ - return d->m_prev_return_status; -} - -mz_uint32 tdefl_get_adler32(tdefl_compressor *d) -{ - return d->m_adler32; -} - -mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - tdefl_compressor *pComp; - mz_bool succeeded; - if (((buf_len) && (!pBuf)) || (!pPut_buf_func)) - return MZ_FALSE; - pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); - if (!pComp) - return MZ_FALSE; - succeeded = (tdefl_init(pComp, pPut_buf_func, pPut_buf_user, flags) == TDEFL_STATUS_OKAY); - succeeded = succeeded && (tdefl_compress_buffer(pComp, pBuf, buf_len, TDEFL_FINISH) == TDEFL_STATUS_DONE); - MZ_FREE(pComp); - return succeeded; -} - -typedef struct -{ - size_t m_size, m_capacity; - mz_uint8 *m_pBuf; - mz_bool m_expandable; -} tdefl_output_buffer; - -static mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, void *pUser) -{ - tdefl_output_buffer *p = (tdefl_output_buffer *)pUser; - size_t new_size = p->m_size + len; - if (new_size > p->m_capacity) - { - size_t new_capacity = p->m_capacity; - mz_uint8 *pNew_buf; - if (!p->m_expandable) - return MZ_FALSE; - do - { - new_capacity = MZ_MAX(128U, new_capacity << 1U); - } while (new_size > new_capacity); - pNew_buf = (mz_uint8 *)MZ_REALLOC(p->m_pBuf, new_capacity); - if (!pNew_buf) - return MZ_FALSE; - p->m_pBuf = pNew_buf; - p->m_capacity = new_capacity; - } - memcpy((mz_uint8 *)p->m_pBuf + p->m_size, pBuf, len); - p->m_size = new_size; - return MZ_TRUE; -} - -void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags) -{ - tdefl_output_buffer out_buf; - MZ_CLEAR_OBJ(out_buf); - if (!pOut_len) - return MZ_FALSE; - else - *pOut_len = 0; - out_buf.m_expandable = MZ_TRUE; - if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) - return NULL; - *pOut_len = out_buf.m_size; - return out_buf.m_pBuf; -} - -size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags) -{ - tdefl_output_buffer out_buf; - MZ_CLEAR_OBJ(out_buf); - if (!pOut_buf) - return 0; - out_buf.m_pBuf = (mz_uint8 *)pOut_buf; - out_buf.m_capacity = out_buf_len; - if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) - return 0; - return out_buf.m_size; -} - -static const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 }; - -/* level may actually range from [0,10] (10 is a "hidden" max level, where we want a bit more compression and it's fine if throughput to fall off a cliff on some files). */ -mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy) -{ - mz_uint comp_flags = s_tdefl_num_probes[(level >= 0) ? MZ_MIN(10, level) : MZ_DEFAULT_LEVEL] | ((level <= 3) ? TDEFL_GREEDY_PARSING_FLAG : 0); - if (window_bits > 0) - comp_flags |= TDEFL_WRITE_ZLIB_HEADER; - - if (!level) - comp_flags |= TDEFL_FORCE_ALL_RAW_BLOCKS; - else if (strategy == MZ_FILTERED) - comp_flags |= TDEFL_FILTER_MATCHES; - else if (strategy == MZ_HUFFMAN_ONLY) - comp_flags &= ~TDEFL_MAX_PROBES_MASK; - else if (strategy == MZ_FIXED) - comp_flags |= TDEFL_FORCE_ALL_STATIC_BLOCKS; - else if (strategy == MZ_RLE) - comp_flags |= TDEFL_RLE_MATCHES; - - return comp_flags; -} - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4204) /* nonstandard extension used : non-constant aggregate initializer (also supported by GNU C and C99, so no big deal) */ -#endif - -/* Simple PNG writer function by Alex Evans, 2011. Released into the public domain: https://gist.github.com/908299, more context at - http://altdevblogaday.org/2011/04/06/a-smaller-jpg-encoder/. - This is actually a modification of Alex's original code so PNG files generated by this function pass pngcheck. */ -void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip) -{ - /* Using a local copy of this array here in case MINIZ_NO_ZLIB_APIS was defined. */ - static const mz_uint s_tdefl_png_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 }; - tdefl_compressor *pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); - tdefl_output_buffer out_buf; - int i, bpl = w * num_chans, y, z; - mz_uint32 c; - *pLen_out = 0; - if (!pComp) - return NULL; - MZ_CLEAR_OBJ(out_buf); - out_buf.m_expandable = MZ_TRUE; - out_buf.m_capacity = 57 + MZ_MAX(64, (1 + bpl) * h); - if (NULL == (out_buf.m_pBuf = (mz_uint8 *)MZ_MALLOC(out_buf.m_capacity))) - { - MZ_FREE(pComp); - return NULL; - } - /* write dummy header */ - for (z = 41; z; --z) - tdefl_output_buffer_putter(&z, 1, &out_buf); - /* compress image data */ - tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER); - for (y = 0; y < h; ++y) - { - tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH); - tdefl_compress_buffer(pComp, (mz_uint8 *)pImage + (flip ? (h - 1 - y) : y) * bpl, bpl, TDEFL_NO_FLUSH); - } - if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != TDEFL_STATUS_DONE) - { - MZ_FREE(pComp); - MZ_FREE(out_buf.m_pBuf); - return NULL; - } - /* write real header */ - *pLen_out = out_buf.m_size - 41; - { - static const mz_uint8 chans[] = { 0x00, 0x00, 0x04, 0x02, 0x06 }; - mz_uint8 pnghdr[41] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, - 0x0a, 0x1a, 0x0a, 0x00, 0x00, - 0x00, 0x0d, 0x49, 0x48, 0x44, - 0x52, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x49, 0x44, 0x41, - 0x54 }; - pnghdr[18] = (mz_uint8)(w >> 8); - pnghdr[19] = (mz_uint8)w; - pnghdr[22] = (mz_uint8)(h >> 8); - pnghdr[23] = (mz_uint8)h; - pnghdr[25] = chans[num_chans]; - pnghdr[33] = (mz_uint8)(*pLen_out >> 24); - pnghdr[34] = (mz_uint8)(*pLen_out >> 16); - pnghdr[35] = (mz_uint8)(*pLen_out >> 8); - pnghdr[36] = (mz_uint8)*pLen_out; - c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, pnghdr + 12, 17); - for (i = 0; i < 4; ++i, c <<= 8) - ((mz_uint8 *)(pnghdr + 29))[i] = (mz_uint8)(c >> 24); - memcpy(out_buf.m_pBuf, pnghdr, 41); - } - /* write footer (IDAT CRC-32, followed by IEND chunk) */ - if (!tdefl_output_buffer_putter("\0\0\0\0\0\0\0\0\x49\x45\x4e\x44\xae\x42\x60\x82", 16, &out_buf)) - { - *pLen_out = 0; - MZ_FREE(pComp); - MZ_FREE(out_buf.m_pBuf); - return NULL; - } - c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, out_buf.m_pBuf + 41 - 4, *pLen_out + 4); - for (i = 0; i < 4; ++i, c <<= 8) - (out_buf.m_pBuf + out_buf.m_size - 16)[i] = (mz_uint8)(c >> 24); - /* compute final size of file, grab compressed data buffer and return */ - *pLen_out += 57; - MZ_FREE(pComp); - return out_buf.m_pBuf; -} -void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out) -{ - /* Level 6 corresponds to TDEFL_DEFAULT_MAX_PROBES or MZ_DEFAULT_LEVEL (but we can't depend on MZ_DEFAULT_LEVEL being available in case the zlib API's where #defined out) */ - return tdefl_write_image_to_png_file_in_memory_ex(pImage, w, h, num_chans, pLen_out, 6, MZ_FALSE); -} - -/* Allocate the tdefl_compressor and tinfl_decompressor structures in C so that */ -/* non-C language bindings to tdefL_ and tinfl_ API don't need to worry about */ -/* structure size and allocation mechanism. */ -tdefl_compressor *tdefl_compressor_alloc() -{ - return (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); -} - -void tdefl_compressor_free(tdefl_compressor *pComp) -{ - MZ_FREE(pComp); -} - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#ifdef __cplusplus -} -#endif -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - - - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- Low-level Decompression (completely independent from all compression API's) */ - -#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l) -#define TINFL_MEMSET(p, c, l) memset(p, c, l) - -#define TINFL_CR_BEGIN \ - switch (r->m_state) \ - { \ - case 0: -#define TINFL_CR_RETURN(state_index, result) \ - do \ - { \ - status = result; \ - r->m_state = state_index; \ - goto common_exit; \ - case state_index:; \ - } \ - MZ_MACRO_END -#define TINFL_CR_RETURN_FOREVER(state_index, result) \ - do \ - { \ - for (;;) \ - { \ - TINFL_CR_RETURN(state_index, result); \ - } \ - } \ - MZ_MACRO_END -#define TINFL_CR_FINISH } - -#define TINFL_GET_BYTE(state_index, c) \ - do \ - { \ - while (pIn_buf_cur >= pIn_buf_end) \ - { \ - TINFL_CR_RETURN(state_index, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); \ - } \ - c = *pIn_buf_cur++; \ - } \ - MZ_MACRO_END - -#define TINFL_NEED_BITS(state_index, n) \ - do \ - { \ - mz_uint c; \ - TINFL_GET_BYTE(state_index, c); \ - bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ - num_bits += 8; \ - } while (num_bits < (mz_uint)(n)) -#define TINFL_SKIP_BITS(state_index, n) \ - do \ - { \ - if (num_bits < (mz_uint)(n)) \ - { \ - TINFL_NEED_BITS(state_index, n); \ - } \ - bit_buf >>= (n); \ - num_bits -= (n); \ - } \ - MZ_MACRO_END -#define TINFL_GET_BITS(state_index, b, n) \ - do \ - { \ - if (num_bits < (mz_uint)(n)) \ - { \ - TINFL_NEED_BITS(state_index, n); \ - } \ - b = bit_buf & ((1 << (n)) - 1); \ - bit_buf >>= (n); \ - num_bits -= (n); \ - } \ - MZ_MACRO_END - -/* TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2. */ -/* It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a */ -/* Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the */ -/* bit buffer contains >=15 bits (deflate's max. Huffman code size). */ -#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \ - do \ - { \ - temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ - if (temp >= 0) \ - { \ - code_len = temp >> 9; \ - if ((code_len) && (num_bits >= code_len)) \ - break; \ - } \ - else if (num_bits > TINFL_FAST_LOOKUP_BITS) \ - { \ - code_len = TINFL_FAST_LOOKUP_BITS; \ - do \ - { \ - temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ - } while ((temp < 0) && (num_bits >= (code_len + 1))); \ - if (temp >= 0) \ - break; \ - } \ - TINFL_GET_BYTE(state_index, c); \ - bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ - num_bits += 8; \ - } while (num_bits < 15); - -/* TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read */ -/* beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully */ -/* decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32. */ -/* The slow path is only executed at the very end of the input buffer. */ -/* v1.16: The original macro handled the case at the very end of the passed-in input buffer, but we also need to handle the case where the user passes in 1+zillion bytes */ -/* following the deflate data and our non-conservative read-ahead path won't kick in here on this code. This is much trickier. */ -#define TINFL_HUFF_DECODE(state_index, sym, pHuff) \ - do \ - { \ - int temp; \ - mz_uint code_len, c; \ - if (num_bits < 15) \ - { \ - if ((pIn_buf_end - pIn_buf_cur) < 2) \ - { \ - TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \ - } \ - else \ - { \ - bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \ - pIn_buf_cur += 2; \ - num_bits += 16; \ - } \ - } \ - if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \ - code_len = temp >> 9, temp &= 511; \ - else \ - { \ - code_len = TINFL_FAST_LOOKUP_BITS; \ - do \ - { \ - temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ - } while (temp < 0); \ - } \ - sym = temp; \ - bit_buf >>= code_len; \ - num_bits -= code_len; \ - } \ - MZ_MACRO_END - -tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags) -{ - static const int s_length_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 }; - static const int s_length_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 }; - static const int s_dist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 }; - static const int s_dist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; - static const mz_uint8 s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; - static const int s_min_table_sizes[3] = { 257, 1, 4 }; - - tinfl_status status = TINFL_STATUS_FAILED; - mz_uint32 num_bits, dist, counter, num_extra; - tinfl_bit_buf_t bit_buf; - const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size; - mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size; - size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start; - - /* Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). */ - if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) - { - *pIn_buf_size = *pOut_buf_size = 0; - return TINFL_STATUS_BAD_PARAM; - } - - num_bits = r->m_num_bits; - bit_buf = r->m_bit_buf; - dist = r->m_dist; - counter = r->m_counter; - num_extra = r->m_num_extra; - dist_from_out_buf_start = r->m_dist_from_out_buf_start; - TINFL_CR_BEGIN - - bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; - r->m_z_adler32 = r->m_check_adler32 = 1; - if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) - { - TINFL_GET_BYTE(1, r->m_zhdr0); - TINFL_GET_BYTE(2, r->m_zhdr1); - counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8)); - if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) - counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4))))); - if (counter) - { - TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); - } - } - - do - { - TINFL_GET_BITS(3, r->m_final, 3); - r->m_type = r->m_final >> 1; - if (r->m_type == 0) - { - TINFL_SKIP_BITS(5, num_bits & 7); - for (counter = 0; counter < 4; ++counter) - { - if (num_bits) - TINFL_GET_BITS(6, r->m_raw_header[counter], 8); - else - TINFL_GET_BYTE(7, r->m_raw_header[counter]); - } - if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) - { - TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); - } - while ((counter) && (num_bits)) - { - TINFL_GET_BITS(51, dist, 8); - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); - } - *pOut_buf_cur++ = (mz_uint8)dist; - counter--; - } - while (counter) - { - size_t n; - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); - } - while (pIn_buf_cur >= pIn_buf_end) - { - TINFL_CR_RETURN(38, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); - } - n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter); - TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); - pIn_buf_cur += n; - pOut_buf_cur += n; - counter -= (mz_uint)n; - } - } - else if (r->m_type == 3) - { - TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED); - } - else - { - if (r->m_type == 1) - { - mz_uint8 *p = r->m_tables[0].m_code_size; - mz_uint i; - r->m_table_sizes[0] = 288; - r->m_table_sizes[1] = 32; - TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32); - for (i = 0; i <= 143; ++i) - *p++ = 8; - for (; i <= 255; ++i) - *p++ = 9; - for (; i <= 279; ++i) - *p++ = 7; - for (; i <= 287; ++i) - *p++ = 8; - } - else - { - for (counter = 0; counter < 3; counter++) - { - TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); - r->m_table_sizes[counter] += s_min_table_sizes[counter]; - } - MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); - for (counter = 0; counter < r->m_table_sizes[2]; counter++) - { - mz_uint s; - TINFL_GET_BITS(14, s, 3); - r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; - } - r->m_table_sizes[2] = 19; - } - for (; (int)r->m_type >= 0; r->m_type--) - { - int tree_next, tree_cur; - tinfl_huff_table *pTable; - mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; - pTable = &r->m_tables[r->m_type]; - MZ_CLEAR_OBJ(total_syms); - MZ_CLEAR_OBJ(pTable->m_look_up); - MZ_CLEAR_OBJ(pTable->m_tree); - for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) - total_syms[pTable->m_code_size[i]]++; - used_syms = 0, total = 0; - next_code[0] = next_code[1] = 0; - for (i = 1; i <= 15; ++i) - { - used_syms += total_syms[i]; - next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); - } - if ((65536 != total) && (used_syms > 1)) - { - TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED); - } - for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index) - { - mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index]; - if (!code_size) - continue; - cur_code = next_code[code_size]++; - for (l = code_size; l > 0; l--, cur_code >>= 1) - rev_code = (rev_code << 1) | (cur_code & 1); - if (code_size <= TINFL_FAST_LOOKUP_BITS) - { - mz_int16 k = (mz_int16)((code_size << 9) | sym_index); - while (rev_code < TINFL_FAST_LOOKUP_SIZE) - { - pTable->m_look_up[rev_code] = k; - rev_code += (1 << code_size); - } - continue; - } - if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) - { - pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; - tree_cur = tree_next; - tree_next -= 2; - } - rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1); - for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--) - { - tree_cur -= ((rev_code >>= 1) & 1); - if (!pTable->m_tree[-tree_cur - 1]) - { - pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; - tree_cur = tree_next; - tree_next -= 2; - } - else - tree_cur = pTable->m_tree[-tree_cur - 1]; - } - tree_cur -= ((rev_code >>= 1) & 1); - pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index; - } - if (r->m_type == 2) - { - for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]);) - { - mz_uint s; - TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); - if (dist < 16) - { - r->m_len_codes[counter++] = (mz_uint8)dist; - continue; - } - if ((dist == 16) && (!counter)) - { - TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED); - } - num_extra = "\02\03\07"[dist - 16]; - TINFL_GET_BITS(18, s, num_extra); - s += "\03\03\013"[dist - 16]; - TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); - counter += s; - } - if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter) - { - TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED); - } - TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]); - TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]); - } - } - for (;;) - { - mz_uint8 *pSrc; - for (;;) - { - if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2)) - { - TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]); - if (counter >= 256) - break; - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); - } - *pOut_buf_cur++ = (mz_uint8)counter; - } - else - { - int sym2; - mz_uint code_len; -#if TINFL_USE_64BIT_BITBUF - if (num_bits < 30) - { - bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); - pIn_buf_cur += 4; - num_bits += 32; - } -#else - if (num_bits < 15) - { - bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); - pIn_buf_cur += 2; - num_bits += 16; - } -#endif - if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) - code_len = sym2 >> 9; - else - { - code_len = TINFL_FAST_LOOKUP_BITS; - do - { - sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; - } while (sym2 < 0); - } - counter = sym2; - bit_buf >>= code_len; - num_bits -= code_len; - if (counter & 256) - break; - -#if !TINFL_USE_64BIT_BITBUF - if (num_bits < 15) - { - bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); - pIn_buf_cur += 2; - num_bits += 16; - } -#endif - if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) - code_len = sym2 >> 9; - else - { - code_len = TINFL_FAST_LOOKUP_BITS; - do - { - sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; - } while (sym2 < 0); - } - bit_buf >>= code_len; - num_bits -= code_len; - - pOut_buf_cur[0] = (mz_uint8)counter; - if (sym2 & 256) - { - pOut_buf_cur++; - counter = sym2; - break; - } - pOut_buf_cur[1] = (mz_uint8)sym2; - pOut_buf_cur += 2; - } - } - if ((counter &= 511) == 256) - break; - - num_extra = s_length_extra[counter - 257]; - counter = s_length_base[counter - 257]; - if (num_extra) - { - mz_uint extra_bits; - TINFL_GET_BITS(25, extra_bits, num_extra); - counter += extra_bits; - } - - TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]); - num_extra = s_dist_extra[dist]; - dist = s_dist_base[dist]; - if (num_extra) - { - mz_uint extra_bits; - TINFL_GET_BITS(27, extra_bits, num_extra); - dist += extra_bits; - } - - dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start; - if ((dist > dist_from_out_buf_start) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) - { - TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED); - } - - pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask); - - if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end) - { - while (counter--) - { - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); - } - *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask]; - } - continue; - } -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES - else if ((counter >= 9) && (counter <= dist)) - { - const mz_uint8 *pSrc_end = pSrc + (counter & ~7); - do - { - ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0]; - ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1]; - pOut_buf_cur += 8; - } while ((pSrc += 8) < pSrc_end); - if ((counter &= 7) < 3) - { - if (counter) - { - pOut_buf_cur[0] = pSrc[0]; - if (counter > 1) - pOut_buf_cur[1] = pSrc[1]; - pOut_buf_cur += counter; - } - continue; - } - } -#endif - while(counter>2) - { - pOut_buf_cur[0] = pSrc[0]; - pOut_buf_cur[1] = pSrc[1]; - pOut_buf_cur[2] = pSrc[2]; - pOut_buf_cur += 3; - pSrc += 3; - counter -= 3; - } - if (counter > 0) - { - pOut_buf_cur[0] = pSrc[0]; - if (counter > 1) - pOut_buf_cur[1] = pSrc[1]; - pOut_buf_cur += counter; - } - } - } - } while (!(r->m_final & 1)); - - /* Ensure byte alignment and put back any bytes from the bitbuf if we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */ - /* I'm being super conservative here. A number of simplifications can be made to the byte alignment part, and the Adler32 check shouldn't ever need to worry about reading from the bitbuf now. */ - TINFL_SKIP_BITS(32, num_bits & 7); - while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8)) - { - --pIn_buf_cur; - num_bits -= 8; - } - bit_buf &= (tinfl_bit_buf_t)((((mz_uint64)1) << num_bits) - (mz_uint64)1); - MZ_ASSERT(!num_bits); /* if this assert fires then we've read beyond the end of non-deflate/zlib streams with following data (such as gzip streams). */ - - if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) - { - for (counter = 0; counter < 4; ++counter) - { - mz_uint s; - if (num_bits) - TINFL_GET_BITS(41, s, 8); - else - TINFL_GET_BYTE(42, s); - r->m_z_adler32 = (r->m_z_adler32 << 8) | s; - } - } - TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE); - - TINFL_CR_FINISH - -common_exit: - /* As long as we aren't telling the caller that we NEED more input to make forward progress: */ - /* Put back any bytes from the bitbuf in case we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */ - /* We need to be very careful here to NOT push back any bytes we definitely know we need to make forward progress, though, or we'll lock the caller up into an inf loop. */ - if ((status != TINFL_STATUS_NEEDS_MORE_INPUT) && (status != TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS)) - { - while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8)) - { - --pIn_buf_cur; - num_bits -= 8; - } - } - r->m_num_bits = num_bits; - r->m_bit_buf = bit_buf & (tinfl_bit_buf_t)((((mz_uint64)1) << num_bits) - (mz_uint64)1); - r->m_dist = dist; - r->m_counter = counter; - r->m_num_extra = num_extra; - r->m_dist_from_out_buf_start = dist_from_out_buf_start; - *pIn_buf_size = pIn_buf_cur - pIn_buf_next; - *pOut_buf_size = pOut_buf_cur - pOut_buf_next; - if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0)) - { - const mz_uint8 *ptr = pOut_buf_next; - size_t buf_len = *pOut_buf_size; - mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; - size_t block_len = buf_len % 5552; - while (buf_len) - { - for (i = 0; i + 7 < block_len; i += 8, ptr += 8) - { - s1 += ptr[0], s2 += s1; - s1 += ptr[1], s2 += s1; - s1 += ptr[2], s2 += s1; - s1 += ptr[3], s2 += s1; - s1 += ptr[4], s2 += s1; - s1 += ptr[5], s2 += s1; - s1 += ptr[6], s2 += s1; - s1 += ptr[7], s2 += s1; - } - for (; i < block_len; ++i) - s1 += *ptr++, s2 += s1; - s1 %= 65521U, s2 %= 65521U; - buf_len -= block_len; - block_len = 5552; - } - r->m_check_adler32 = (s2 << 16) + s1; - if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) - status = TINFL_STATUS_ADLER32_MISMATCH; - } - return status; -} - -/* Higher level helper functions. */ -void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags) -{ - tinfl_decompressor decomp; - void *pBuf = NULL, *pNew_buf; - size_t src_buf_ofs = 0, out_buf_capacity = 0; - *pOut_len = 0; - tinfl_init(&decomp); - for (;;) - { - size_t src_buf_size = src_buf_len - src_buf_ofs, dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity; - tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf + src_buf_ofs, &src_buf_size, (mz_uint8 *)pBuf, pBuf ? (mz_uint8 *)pBuf + *pOut_len : NULL, &dst_buf_size, - (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); - if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT)) - { - MZ_FREE(pBuf); - *pOut_len = 0; - return NULL; - } - src_buf_ofs += src_buf_size; - *pOut_len += dst_buf_size; - if (status == TINFL_STATUS_DONE) - break; - new_out_buf_capacity = out_buf_capacity * 2; - if (new_out_buf_capacity < 128) - new_out_buf_capacity = 128; - pNew_buf = MZ_REALLOC(pBuf, new_out_buf_capacity); - if (!pNew_buf) - { - MZ_FREE(pBuf); - *pOut_len = 0; - return NULL; - } - pBuf = pNew_buf; - out_buf_capacity = new_out_buf_capacity; - } - return pBuf; -} - -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags) -{ - tinfl_decompressor decomp; - tinfl_status status; - tinfl_init(&decomp); - status = tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf, &src_buf_len, (mz_uint8 *)pOut_buf, (mz_uint8 *)pOut_buf, &out_buf_len, (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); - return (status != TINFL_STATUS_DONE) ? TINFL_DECOMPRESS_MEM_TO_MEM_FAILED : out_buf_len; -} - -int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - int result = 0; - tinfl_decompressor decomp; - mz_uint8 *pDict = (mz_uint8 *)MZ_MALLOC(TINFL_LZ_DICT_SIZE); - size_t in_buf_ofs = 0, dict_ofs = 0; - if (!pDict) - return TINFL_STATUS_FAILED; - tinfl_init(&decomp); - for (;;) - { - size_t in_buf_size = *pIn_buf_size - in_buf_ofs, dst_buf_size = TINFL_LZ_DICT_SIZE - dict_ofs; - tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8 *)pIn_buf + in_buf_ofs, &in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size, - (flags & ~(TINFL_FLAG_HAS_MORE_INPUT | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))); - in_buf_ofs += in_buf_size; - if ((dst_buf_size) && (!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user))) - break; - if (status != TINFL_STATUS_HAS_MORE_OUTPUT) - { - result = (status == TINFL_STATUS_DONE); - break; - } - dict_ofs = (dict_ofs + dst_buf_size) & (TINFL_LZ_DICT_SIZE - 1); - } - MZ_FREE(pDict); - *pIn_buf_size = in_buf_ofs; - return result; -} - -tinfl_decompressor *tinfl_decompressor_alloc() -{ - tinfl_decompressor *pDecomp = (tinfl_decompressor *)MZ_MALLOC(sizeof(tinfl_decompressor)); - if (pDecomp) - tinfl_init(pDecomp); - return pDecomp; -} - -void tinfl_decompressor_free(tinfl_decompressor *pDecomp) -{ - MZ_FREE(pDecomp); -} - -#ifdef __cplusplus -} -#endif -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * Copyright 2016 Martin Raiber - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - - -#ifndef MINIZ_NO_ARCHIVE_APIS - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- .ZIP archive reading */ - -#ifdef MINIZ_NO_STDIO -#define MZ_FILE void * -#else -#include - -#if defined(_MSC_VER) || defined(__MINGW64__) -static FILE *mz_fopen(const char *pFilename, const char *pMode) -{ - FILE *pFile = NULL; - fopen_s(&pFile, pFilename, pMode); - return pFile; -} -static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream) -{ - FILE *pFile = NULL; - if (freopen_s(&pFile, pPath, pMode, pStream)) - return NULL; - return pFile; -} -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN mz_fopen -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 _ftelli64 -#define MZ_FSEEK64 _fseeki64 -#define MZ_FILE_STAT_STRUCT _stat -#define MZ_FILE_STAT _stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN mz_freopen -#define MZ_DELETE_FILE remove -#elif defined(__MINGW32__) -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftello64 -#define MZ_FSEEK64 fseeko64 -#define MZ_FILE_STAT_STRUCT _stat -#define MZ_FILE_STAT _stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(f, m, s) freopen(f, m, s) -#define MZ_DELETE_FILE remove -#elif defined(__TINYC__) -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftell -#define MZ_FSEEK64 fseek -#define MZ_FILE_STAT_STRUCT stat -#define MZ_FILE_STAT stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(f, m, s) freopen(f, m, s) -#define MZ_DELETE_FILE remove -#elif defined(__GNUC__) && _LARGEFILE64_SOURCE -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen64(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftello64 -#define MZ_FSEEK64 fseeko64 -#define MZ_FILE_STAT_STRUCT stat64 -#define MZ_FILE_STAT stat64 -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(p, m, s) freopen64(p, m, s) -#define MZ_DELETE_FILE remove -#elif defined(__APPLE__) -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftello -#define MZ_FSEEK64 fseeko -#define MZ_FILE_STAT_STRUCT stat -#define MZ_FILE_STAT stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(p, m, s) freopen(p, m, s) -#define MZ_DELETE_FILE remove - -#else -#pragma message("Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.") -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#ifdef __STRICT_ANSI__ -#define MZ_FTELL64 ftell -#define MZ_FSEEK64 fseek -#else -#define MZ_FTELL64 ftello -#define MZ_FSEEK64 fseeko -#endif -#define MZ_FILE_STAT_STRUCT stat -#define MZ_FILE_STAT stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(f, m, s) freopen(f, m, s) -#define MZ_DELETE_FILE remove -#endif /* #ifdef _MSC_VER */ -#endif /* #ifdef MINIZ_NO_STDIO */ - -#define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c)) - -/* Various ZIP archive enums. To completely avoid cross platform compiler alignment and platform endian issues, miniz.c doesn't use structs for any of this stuff. */ -enum -{ - /* ZIP archive identifiers and record sizes */ - MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50, - MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50, - MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50, - MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30, - MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46, - MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22, - - /* ZIP64 archive identifier and record sizes */ - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50, - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50, - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56, - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20, - MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001, - MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50, - MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24, - MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16, - - /* Central directory header record offsets */ - MZ_ZIP_CDH_SIG_OFS = 0, - MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4, - MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6, - MZ_ZIP_CDH_BIT_FLAG_OFS = 8, - MZ_ZIP_CDH_METHOD_OFS = 10, - MZ_ZIP_CDH_FILE_TIME_OFS = 12, - MZ_ZIP_CDH_FILE_DATE_OFS = 14, - MZ_ZIP_CDH_CRC32_OFS = 16, - MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20, - MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24, - MZ_ZIP_CDH_FILENAME_LEN_OFS = 28, - MZ_ZIP_CDH_EXTRA_LEN_OFS = 30, - MZ_ZIP_CDH_COMMENT_LEN_OFS = 32, - MZ_ZIP_CDH_DISK_START_OFS = 34, - MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36, - MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38, - MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42, - - /* Local directory header offsets */ - MZ_ZIP_LDH_SIG_OFS = 0, - MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4, - MZ_ZIP_LDH_BIT_FLAG_OFS = 6, - MZ_ZIP_LDH_METHOD_OFS = 8, - MZ_ZIP_LDH_FILE_TIME_OFS = 10, - MZ_ZIP_LDH_FILE_DATE_OFS = 12, - MZ_ZIP_LDH_CRC32_OFS = 14, - MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18, - MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22, - MZ_ZIP_LDH_FILENAME_LEN_OFS = 26, - MZ_ZIP_LDH_EXTRA_LEN_OFS = 28, - MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR = 1 << 3, - - /* End of central directory offsets */ - MZ_ZIP_ECDH_SIG_OFS = 0, - MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4, - MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6, - MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8, - MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10, - MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12, - MZ_ZIP_ECDH_CDIR_OFS_OFS = 16, - MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20, - - /* ZIP64 End of central directory locator offsets */ - MZ_ZIP64_ECDL_SIG_OFS = 0, /* 4 bytes */ - MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4, /* 4 bytes */ - MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8, /* 8 bytes */ - MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */ - - /* ZIP64 End of central directory header offsets */ - MZ_ZIP64_ECDH_SIG_OFS = 0, /* 4 bytes */ - MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4, /* 8 bytes */ - MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12, /* 2 bytes */ - MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14, /* 2 bytes */ - MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16, /* 4 bytes */ - MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20, /* 4 bytes */ - MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */ - MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32, /* 8 bytes */ - MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40, /* 8 bytes */ - MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48, /* 8 bytes */ - MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0, - MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11 -}; - -typedef struct -{ - void *m_p; - size_t m_size, m_capacity; - mz_uint m_element_size; -} mz_zip_array; - -struct mz_zip_internal_state_tag -{ - mz_zip_array m_central_dir; - mz_zip_array m_central_dir_offsets; - mz_zip_array m_sorted_central_dir_offsets; - - /* The flags passed in when the archive is initially opened. */ - uint32_t m_init_flags; - - /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc. */ - mz_bool m_zip64; - - /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64 will also be slammed to true too, even if we didn't find a zip64 end of central dir header, etc.) */ - mz_bool m_zip64_has_extended_info_fields; - - /* These fields are used by the file, FILE, memory, and memory/heap read/write helpers. */ - MZ_FILE *m_pFile; - mz_uint64 m_file_archive_start_ofs; - - void *m_pMem; - size_t m_mem_size; - size_t m_mem_capacity; -}; - -#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size - -#if defined(DEBUG) || defined(_DEBUG) || defined(NDEBUG) -static MZ_FORCEINLINE mz_uint mz_zip_array_range_check(const mz_zip_array *pArray, mz_uint index) -{ - MZ_ASSERT(index < pArray->m_size); - return index; -} -#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[mz_zip_array_range_check(array_ptr, index)] -#else -#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index] -#endif - -static MZ_FORCEINLINE void mz_zip_array_init(mz_zip_array *pArray, mz_uint32 element_size) -{ - memset(pArray, 0, sizeof(mz_zip_array)); - pArray->m_element_size = element_size; -} - -static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray) -{ - pZip->m_pFree(pZip->m_pAlloc_opaque, pArray->m_p); - memset(pArray, 0, sizeof(mz_zip_array)); -} - -static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing) -{ - void *pNew_p; - size_t new_capacity = min_new_capacity; - MZ_ASSERT(pArray->m_element_size); - if (pArray->m_capacity >= min_new_capacity) - return MZ_TRUE; - if (growing) - { - new_capacity = MZ_MAX(1, pArray->m_capacity); - while (new_capacity < min_new_capacity) - new_capacity *= 2; - } - if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, pArray->m_element_size, new_capacity))) - return MZ_FALSE; - pArray->m_p = pNew_p; - pArray->m_capacity = new_capacity; - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing) -{ - if (new_capacity > pArray->m_capacity) - { - if (!mz_zip_array_ensure_capacity(pZip, pArray, new_capacity, growing)) - return MZ_FALSE; - } - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing) -{ - if (new_size > pArray->m_capacity) - { - if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) - return MZ_FALSE; - } - pArray->m_size = new_size; - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, mz_zip_array *pArray, size_t n) -{ - return mz_zip_array_reserve(pZip, pArray, pArray->m_size + n, MZ_TRUE); -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n) -{ - size_t orig_size = pArray->m_size; - if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE)) - return MZ_FALSE; - memcpy((mz_uint8 *)pArray->m_p + orig_size * pArray->m_element_size, pElements, n * pArray->m_element_size); - return MZ_TRUE; -} - -#ifndef MINIZ_NO_TIME -static MZ_TIME_T mz_zip_dos_to_time_t(int dos_time, int dos_date) -{ - struct tm tm; - memset(&tm, 0, sizeof(tm)); - tm.tm_isdst = -1; - tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900; - tm.tm_mon = ((dos_date >> 5) & 15) - 1; - tm.tm_mday = dos_date & 31; - tm.tm_hour = (dos_time >> 11) & 31; - tm.tm_min = (dos_time >> 5) & 63; - tm.tm_sec = (dos_time << 1) & 62; - return mktime(&tm); -} - -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS -static void mz_zip_time_t_to_dos_time(MZ_TIME_T time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date) -{ -#ifdef _MSC_VER - struct tm tm_struct; - struct tm *tm = &tm_struct; - errno_t err = localtime_s(tm, &time); - if (err) - { - *pDOS_date = 0; - *pDOS_time = 0; - return; - } -#else - struct tm *tm = localtime(&time); -#endif /* #ifdef _MSC_VER */ - - *pDOS_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + ((tm->tm_sec) >> 1)); - *pDOS_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday); -} -#endif /* MINIZ_NO_ARCHIVE_WRITING_APIS */ - -#ifndef MINIZ_NO_STDIO -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS -static mz_bool mz_zip_get_file_modified_time(const char *pFilename, MZ_TIME_T *pTime) -{ - struct MZ_FILE_STAT_STRUCT file_stat; - - /* On Linux with x86 glibc, this call will fail on large files (I think >= 0x80000000 bytes) unless you compiled with _LARGEFILE64_SOURCE. Argh. */ - if (MZ_FILE_STAT(pFilename, &file_stat) != 0) - return MZ_FALSE; - - *pTime = file_stat.st_mtime; - - return MZ_TRUE; -} -#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS*/ - -static mz_bool mz_zip_set_file_times(const char *pFilename, MZ_TIME_T access_time, MZ_TIME_T modified_time) -{ - struct utimbuf t; - - memset(&t, 0, sizeof(t)); - t.actime = access_time; - t.modtime = modified_time; - - return !utime(pFilename, &t); -} -#endif /* #ifndef MINIZ_NO_STDIO */ -#endif /* #ifndef MINIZ_NO_TIME */ - -static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip, mz_zip_error err_num) -{ - if (pZip) - pZip->m_last_error = err_num; - return MZ_FALSE; -} - -static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint flags) -{ - (void)flags; - if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!pZip->m_pAlloc) - pZip->m_pAlloc = miniz_def_alloc_func; - if (!pZip->m_pFree) - pZip->m_pFree = miniz_def_free_func; - if (!pZip->m_pRealloc) - pZip->m_pRealloc = miniz_def_realloc_func; - - pZip->m_archive_size = 0; - pZip->m_central_directory_file_ofs = 0; - pZip->m_total_files = 0; - pZip->m_last_error = MZ_ZIP_NO_ERROR; - - if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); - pZip->m_pState->m_init_flags = flags; - pZip->m_pState->m_zip64 = MZ_FALSE; - pZip->m_pState->m_zip64_has_extended_info_fields = MZ_FALSE; - - pZip->m_zip_mode = MZ_ZIP_MODE_READING; - - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index) -{ - const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; - const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index)); - mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS); - mz_uint8 l = 0, r = 0; - pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - pE = pL + MZ_MIN(l_len, r_len); - while (pL < pE) - { - if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) - break; - pL++; - pR++; - } - return (pL == pE) ? (l_len < r_len) : (l < r); -} - -#define MZ_SWAP_UINT32(a, b) \ - do \ - { \ - mz_uint32 t = a; \ - a = b; \ - b = t; \ - } \ - MZ_MACRO_END - -/* Heap sort of lowercased filenames, used to help accelerate plain central directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), but it could allocate memory.) */ -static void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) -{ - mz_zip_internal_state *pState = pZip->m_pState; - const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; - const mz_zip_array *pCentral_dir = &pState->m_central_dir; - mz_uint32 *pIndices; - mz_uint32 start, end; - const mz_uint32 size = pZip->m_total_files; - - if (size <= 1U) - return; - - pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); - - start = (size - 2U) >> 1U; - for (;;) - { - mz_uint64 child, root = start; - for (;;) - { - if ((child = (root << 1U) + 1U) >= size) - break; - child += (((child + 1U) < size) && (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U]))); - if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) - break; - MZ_SWAP_UINT32(pIndices[root], pIndices[child]); - root = child; - } - if (!start) - break; - start--; - } - - end = size - 1; - while (end > 0) - { - mz_uint64 child, root = 0; - MZ_SWAP_UINT32(pIndices[end], pIndices[0]); - for (;;) - { - if ((child = (root << 1U) + 1U) >= end) - break; - child += (((child + 1U) < end) && mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U])); - if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) - break; - MZ_SWAP_UINT32(pIndices[root], pIndices[child]); - root = child; - } - end--; - } -} - -static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip, mz_uint32 record_sig, mz_uint32 record_size, mz_int64 *pOfs) -{ - mz_int64 cur_file_ofs; - mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; - mz_uint8 *pBuf = (mz_uint8 *)buf_u32; - - /* Basic sanity checks - reject files which are too small */ - if (pZip->m_archive_size < record_size) - return MZ_FALSE; - - /* Find the record by scanning the file from the end towards the beginning. */ - cur_file_ofs = MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0); - for (;;) - { - int i, n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs); - - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n) - return MZ_FALSE; - - for (i = n - 4; i >= 0; --i) - { - mz_uint s = MZ_READ_LE32(pBuf + i); - if (s == record_sig) - { - if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size) - break; - } - } - - if (i >= 0) - { - cur_file_ofs += i; - break; - } - - /* Give up if we've searched the entire file, or we've gone back "too far" (~64kb) */ - if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= (MZ_UINT16_MAX + record_size))) - return MZ_FALSE; - - cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0); - } - - *pOfs = cur_file_ofs; - return MZ_TRUE; -} - -static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flags) -{ - mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0, cdir_disk_index = 0; - mz_uint64 cdir_ofs = 0; - mz_int64 cur_file_ofs = 0; - const mz_uint8 *p; - - mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; - mz_uint8 *pBuf = (mz_uint8 *)buf_u32; - mz_bool sort_central_dir = ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0); - mz_uint32 zip64_end_of_central_dir_locator_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32; - - mz_uint32 zip64_end_of_central_dir_header_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pZip64_end_of_central_dir = (mz_uint8 *)zip64_end_of_central_dir_header_u32; - - mz_uint64 zip64_end_of_central_dir_ofs = 0; - - /* Basic sanity checks - reject files which are too small, and check the first 4 bytes of the file to make sure a local header is there. */ - if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (!mz_zip_reader_locate_header_sig(pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs)) - return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR); - - /* Read and verify the end of central directory record. */ - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) - { - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE, pZip64_locator, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) - { - if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) - { - zip64_end_of_central_dir_ofs = MZ_READ_LE64(pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS); - if (zip64_end_of_central_dir_ofs > (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs, pZip64_end_of_central_dir, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) - { - if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) - { - pZip->m_pState->m_zip64 = MZ_TRUE; - } - } - } - } - } - - pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS); - cdir_entries_on_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS); - num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS); - cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS); - cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS); - cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS); - - if (pZip->m_pState->m_zip64) - { - mz_uint32 zip64_total_num_of_disks = MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS); - mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS); - mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS); - mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS); - mz_uint64 zip64_size_of_central_directory = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS); - - if (zip64_size_of_end_of_central_dir_record < (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (zip64_total_num_of_disks != 1U) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - /* Check for miniz's practical limits */ - if (zip64_cdir_total_entries > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - - pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries; - - if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - - cdir_entries_on_this_disk = (mz_uint32)zip64_cdir_total_entries_on_this_disk; - - /* Check for miniz's current practical limits (sorry, this should be enough for millions of files) */ - if (zip64_size_of_central_directory > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - cdir_size = (mz_uint32)zip64_size_of_central_directory; - - num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS); - - cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS); - - cdir_ofs = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS); - } - - if (pZip->m_total_files != cdir_entries_on_this_disk) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1))) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pZip->m_central_directory_file_ofs = cdir_ofs; - - if (pZip->m_total_files) - { - mz_uint i, n; - /* Read the entire central directory into a heap block, and allocate another heap block to hold the unsorted central dir file record offsets, and possibly another to hold the sorted indices. */ - if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, MZ_FALSE)) || - (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, pZip->m_total_files, MZ_FALSE))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if (sort_central_dir) - { - if (!mz_zip_array_resize(pZip, &pZip->m_pState->m_sorted_central_dir_offsets, pZip->m_total_files, MZ_FALSE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, pZip->m_pState->m_central_dir.m_p, cdir_size) != cdir_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - /* Now create an index into the central directory file records, do some basic sanity checking on each record */ - p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p; - for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) - { - mz_uint total_header_size, disk_index, bit_flags, filename_size, ext_data_size; - mz_uint64 comp_size, decomp_size, local_header_ofs; - - if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, i) = (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p); - - if (sort_central_dir) - MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, mz_uint32, i) = i; - - comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); - filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS); - - if ((!pZip->m_pState->m_zip64_has_extended_info_fields) && - (ext_data_size) && - (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) == MZ_UINT32_MAX)) - { - /* Attempt to find zip64 extended information field in the entry's extra data */ - mz_uint32 extra_size_remaining = ext_data_size; - - if (extra_size_remaining) - { - const mz_uint8 *pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size; - - do - { - mz_uint32 field_id; - mz_uint32 field_data_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - - if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - /* Ok, the archive didn't have any zip64 headers but it uses a zip64 extended information field so mark it as zip64 anyway (this can occur with infozip's zip util when it reads compresses files from stdin). */ - pZip->m_pState->m_zip64 = MZ_TRUE; - pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE; - break; - } - - pExtra_data += sizeof(mz_uint16) * 2 + field_data_size; - extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size; - } while (extra_size_remaining); - } - } - - /* I've seen archives that aren't marked as zip64 that uses zip64 ext data, argh */ - if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) - { - if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && (decomp_size != comp_size)) || (decomp_size && !comp_size)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS); - if ((disk_index == MZ_UINT16_MAX) || ((disk_index != num_this_disk) && (disk_index != 1))) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - if (comp_size != MZ_UINT32_MAX) - { - if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > n) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - n -= total_header_size; - p += total_header_size; - } - } - - if (sort_central_dir) - mz_zip_reader_sort_central_dir_offsets_by_filename(pZip); - - return MZ_TRUE; -} - -void mz_zip_zero_struct(mz_zip_archive *pZip) -{ - if (pZip) - MZ_CLEAR_OBJ(*pZip); -} - -static mz_bool mz_zip_reader_end_internal(mz_zip_archive *pZip, mz_bool set_last_error) -{ - mz_bool status = MZ_TRUE; - - if (!pZip) - return MZ_FALSE; - - if ((!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) - { - if (set_last_error) - pZip->m_last_error = MZ_ZIP_INVALID_PARAMETER; - - return MZ_FALSE; - } - - if (pZip->m_pState) - { - mz_zip_internal_state *pState = pZip->m_pState; - pZip->m_pState = NULL; - - mz_zip_array_clear(pZip, &pState->m_central_dir); - mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); - mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); - -#ifndef MINIZ_NO_STDIO - if (pState->m_pFile) - { - if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE) - { - if (MZ_FCLOSE(pState->m_pFile) == EOF) - { - if (set_last_error) - pZip->m_last_error = MZ_ZIP_FILE_CLOSE_FAILED; - status = MZ_FALSE; - } - } - pState->m_pFile = NULL; - } -#endif /* #ifndef MINIZ_NO_STDIO */ - - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - } - pZip->m_zip_mode = MZ_ZIP_MODE_INVALID; - - return status; -} - -mz_bool mz_zip_reader_end(mz_zip_archive *pZip) -{ - return mz_zip_reader_end_internal(pZip, MZ_TRUE); -} -mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags) -{ - if ((!pZip) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_reader_init_internal(pZip, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_USER; - pZip->m_archive_size = size; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -static size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - size_t s = (file_ofs >= pZip->m_archive_size) ? 0 : (size_t)MZ_MIN(pZip->m_archive_size - file_ofs, n); - memcpy(pBuf, (const mz_uint8 *)pZip->m_pState->m_pMem + file_ofs, s); - return s; -} - -mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags) -{ - if (!pMem) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (!mz_zip_reader_init_internal(pZip, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_MEMORY; - pZip->m_archive_size = size; - pZip->m_pRead = mz_zip_mem_read_func; - pZip->m_pIO_opaque = pZip; - pZip->m_pNeeds_keepalive = NULL; - -#ifdef __cplusplus - pZip->m_pState->m_pMem = const_cast(pMem); -#else - pZip->m_pState->m_pMem = (void *)pMem; -#endif - - pZip->m_pState->m_mem_size = size; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -#ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - - file_ofs += pZip->m_pState->m_file_archive_start_ofs; - - if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) - return 0; - - return MZ_FREAD(pBuf, 1, n, pZip->m_pState->m_pFile); -} - -mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags) -{ - return mz_zip_reader_init_file_v2(pZip, pFilename, flags, 0, 0); -} - -mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size) -{ - mz_uint64 file_size; - MZ_FILE *pFile; - - if ((!pZip) || (!pFilename) || ((archive_size) && (archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE))) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pFile = MZ_FOPEN(pFilename, "rb"); - if (!pFile) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - file_size = archive_size; - if (!file_size) - { - if (MZ_FSEEK64(pFile, 0, SEEK_END)) - { - MZ_FCLOSE(pFile); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED); - } - - file_size = MZ_FTELL64(pFile); - } - - /* TODO: Better sanity check archive_size and the # of actual remaining bytes */ - - if (file_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - { - MZ_FCLOSE(pFile); - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - } - - if (!mz_zip_reader_init_internal(pZip, flags)) - { - MZ_FCLOSE(pFile); - return MZ_FALSE; - } - - pZip->m_zip_type = MZ_ZIP_TYPE_FILE; - pZip->m_pRead = mz_zip_file_read_func; - pZip->m_pIO_opaque = pZip; - pZip->m_pState->m_pFile = pFile; - pZip->m_archive_size = file_size; - pZip->m_pState->m_file_archive_start_ofs = file_start_ofs; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size, mz_uint flags) -{ - mz_uint64 cur_file_ofs; - - if ((!pZip) || (!pFile)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - cur_file_ofs = MZ_FTELL64(pFile); - - if (!archive_size) - { - if (MZ_FSEEK64(pFile, 0, SEEK_END)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED); - - archive_size = MZ_FTELL64(pFile) - cur_file_ofs; - - if (archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - } - - if (!mz_zip_reader_init_internal(pZip, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_CFILE; - pZip->m_pRead = mz_zip_file_read_func; - - pZip->m_pIO_opaque = pZip; - pZip->m_pState->m_pFile = pFile; - pZip->m_archive_size = archive_size; - pZip->m_pState->m_file_archive_start_ofs = cur_file_ofs; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -#endif /* #ifndef MINIZ_NO_STDIO */ - -static MZ_FORCEINLINE const mz_uint8 *mz_zip_get_cdh(mz_zip_archive *pZip, mz_uint file_index) -{ - if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files)) - return NULL; - return &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); -} - -mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index) -{ - mz_uint m_bit_flag; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - return (m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) != 0; -} - -mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index) -{ - mz_uint bit_flag; - mz_uint method; - - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); - bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - - if ((method != 0) && (method != MZ_DEFLATED)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - return MZ_FALSE; - } - - if (bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - return MZ_FALSE; - } - - if (bit_flag & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index) -{ - mz_uint filename_len, attribute_mapping_id, external_attr; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - filename_len = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - if (filename_len) - { - if (*(p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_len - 1) == '/') - return MZ_TRUE; - } - - /* Bugfix: This code was also checking if the internal attribute was non-zero, which wasn't correct. */ - /* Most/all zip writers (hopefully) set DOS file/directory attributes in the low 16-bits, so check for the DOS directory flag and ignore the source OS ID in the created by field. */ - /* FIXME: Remove this check? Is it necessary - we already check the filename. */ - attribute_mapping_id = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS) >> 8; - (void)attribute_mapping_id; - - external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); - if ((external_attr & MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG) != 0) - { - return MZ_TRUE; - } - - return MZ_FALSE; -} - -static mz_bool mz_zip_file_stat_internal(mz_zip_archive *pZip, mz_uint file_index, const mz_uint8 *pCentral_dir_header, mz_zip_archive_file_stat *pStat, mz_bool *pFound_zip64_extra_data) -{ - mz_uint n; - const mz_uint8 *p = pCentral_dir_header; - - if (pFound_zip64_extra_data) - *pFound_zip64_extra_data = MZ_FALSE; - - if ((!p) || (!pStat)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Extract fields from the central directory record. */ - pStat->m_file_index = file_index; - pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index); - pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS); - pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS); - pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); -#ifndef MINIZ_NO_TIME - pStat->m_time = mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS), MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS)); -#endif - pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS); - pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - pStat->m_uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - pStat->m_internal_attr = MZ_READ_LE16(p + MZ_ZIP_CDH_INTERNAL_ATTR_OFS); - pStat->m_external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); - pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); - - /* Copy as much of the filename and comment as possible. */ - n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1); - memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); - pStat->m_filename[n] = '\0'; - - n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS); - n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1); - pStat->m_comment_size = n; - memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), n); - pStat->m_comment[n] = '\0'; - - /* Set some flags for convienance */ - pStat->m_is_directory = mz_zip_reader_is_file_a_directory(pZip, file_index); - pStat->m_is_encrypted = mz_zip_reader_is_file_encrypted(pZip, file_index); - pStat->m_is_supported = mz_zip_reader_is_file_supported(pZip, file_index); - - /* See if we need to read any zip64 extended information fields. */ - /* Confusingly, these zip64 fields can be present even on non-zip64 archives (Debian zip on a huge files from stdin piped to stdout creates them). */ - if (MZ_MAX(MZ_MAX(pStat->m_comp_size, pStat->m_uncomp_size), pStat->m_local_header_ofs) == MZ_UINT32_MAX) - { - /* Attempt to find zip64 extended information field in the entry's extra data */ - mz_uint32 extra_size_remaining = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS); - - if (extra_size_remaining) - { - const mz_uint8 *pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - - do - { - mz_uint32 field_id; - mz_uint32 field_data_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - - if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - const mz_uint8 *pField_data = pExtra_data + sizeof(mz_uint16) * 2; - mz_uint32 field_data_remaining = field_data_size; - - if (pFound_zip64_extra_data) - *pFound_zip64_extra_data = MZ_TRUE; - - if (pStat->m_uncomp_size == MZ_UINT32_MAX) - { - if (field_data_remaining < sizeof(mz_uint64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pStat->m_uncomp_size = MZ_READ_LE64(pField_data); - pField_data += sizeof(mz_uint64); - field_data_remaining -= sizeof(mz_uint64); - } - - if (pStat->m_comp_size == MZ_UINT32_MAX) - { - if (field_data_remaining < sizeof(mz_uint64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pStat->m_comp_size = MZ_READ_LE64(pField_data); - pField_data += sizeof(mz_uint64); - field_data_remaining -= sizeof(mz_uint64); - } - - if (pStat->m_local_header_ofs == MZ_UINT32_MAX) - { - if (field_data_remaining < sizeof(mz_uint64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pStat->m_local_header_ofs = MZ_READ_LE64(pField_data); - pField_data += sizeof(mz_uint64); - field_data_remaining -= sizeof(mz_uint64); - } - - break; - } - - pExtra_data += sizeof(mz_uint16) * 2 + field_data_size; - extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size; - } while (extra_size_remaining); - } - } - - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags) -{ - mz_uint i; - if (flags & MZ_ZIP_FLAG_CASE_SENSITIVE) - return 0 == memcmp(pA, pB, len); - for (i = 0; i < len; ++i) - if (MZ_TOLOWER(pA[i]) != MZ_TOLOWER(pB[i])) - return MZ_FALSE; - return MZ_TRUE; -} - -static MZ_FORCEINLINE int mz_zip_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len) -{ - const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; - mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS); - mz_uint8 l = 0, r = 0; - pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - pE = pL + MZ_MIN(l_len, r_len); - while (pL < pE) - { - if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) - break; - pL++; - pR++; - } - return (pL == pE) ? (int)(l_len - r_len) : (l - r); -} - -static mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename, mz_uint32 *pIndex) -{ - mz_zip_internal_state *pState = pZip->m_pState; - const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; - const mz_zip_array *pCentral_dir = &pState->m_central_dir; - mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); - const uint32_t size = pZip->m_total_files; - const mz_uint filename_len = (mz_uint)strlen(pFilename); - - if (pIndex) - *pIndex = 0; - - if (size) - { - /* yes I could use uint32_t's, but then we would have to add some special case checks in the loop, argh, and */ - /* honestly the major expense here on 32-bit CPU's will still be the filename compare */ - mz_int64 l = 0, h = (mz_int64)size - 1; - - while (l <= h) - { - mz_int64 m = l + ((h - l) >> 1); - uint32_t file_index = pIndices[(uint32_t)m]; - - int comp = mz_zip_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len); - if (!comp) - { - if (pIndex) - *pIndex = file_index; - return MZ_TRUE; - } - else if (comp < 0) - l = m + 1; - else - h = m - 1; - } - } - - return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND); -} - -int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags) -{ - mz_uint32 index; - if (!mz_zip_reader_locate_file_v2(pZip, pName, pComment, flags, &index)) - return -1; - else - return (int)index; -} - -mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *pIndex) -{ - mz_uint file_index; - size_t name_len, comment_len; - - if (pIndex) - *pIndex = 0; - - if ((!pZip) || (!pZip->m_pState) || (!pName)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* See if we can use a binary search */ - if (((pZip->m_pState->m_init_flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0) && - (pZip->m_zip_mode == MZ_ZIP_MODE_READING) && - ((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size)) - { - return mz_zip_locate_file_binary_search(pZip, pName, pIndex); - } - - /* Locate the entry by scanning the entire central directory */ - name_len = strlen(pName); - if (name_len > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - comment_len = pComment ? strlen(pComment) : 0; - if (comment_len > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - for (file_index = 0; file_index < pZip->m_total_files; file_index++) - { - const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); - mz_uint filename_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS); - const char *pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - if (filename_len < name_len) - continue; - if (comment_len) - { - mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), file_comment_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS); - const char *pFile_comment = pFilename + filename_len + file_extra_len; - if ((file_comment_len != comment_len) || (!mz_zip_string_equal(pComment, pFile_comment, file_comment_len, flags))) - continue; - } - if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len)) - { - int ofs = filename_len - 1; - do - { - if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\') || (pFilename[ofs] == ':')) - break; - } while (--ofs >= 0); - ofs++; - pFilename += ofs; - filename_len -= ofs; - } - if ((filename_len == name_len) && (mz_zip_string_equal(pName, pFilename, filename_len, flags))) - { - if (pIndex) - *pIndex = file_index; - return MZ_TRUE; - } - } - - return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND); -} - -mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) -{ - int status = TINFL_STATUS_DONE; - mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail; - mz_zip_archive_file_stat file_stat; - void *pRead_buf; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - tinfl_decompressor inflator; - - if ((!pZip) || (!pZip->m_pState) || ((buf_size) && (!pBuf)) || ((user_read_buf_size) && (!pUser_read_buf)) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - /* A directory or zero length file */ - if ((file_stat.m_is_directory) || (!file_stat.m_comp_size)) - return MZ_TRUE; - - /* Encryption and patch files are not supported. */ - if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - /* This function only supports decompressing stored and deflate. */ - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - - /* Ensure supplied output buffer is large enough. */ - needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size; - if (buf_size < needed_size) - return mz_zip_set_error(pZip, MZ_ZIP_BUF_TOO_SMALL); - - /* Read and parse the local directory entry. */ - cur_file_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) - { - /* The file is stored or the caller has requested the compressed data. */ - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, (size_t)needed_size) != needed_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) == 0) - { - if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32) - return mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED); - } -#endif - - return MZ_TRUE; - } - - /* Decompress the file either directly from memory or from a file input buffer. */ - tinfl_init(&inflator); - - if (pZip->m_pState->m_pMem) - { - /* Read directly from the archive in memory. */ - pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; - read_buf_size = read_buf_avail = file_stat.m_comp_size; - comp_remaining = 0; - } - else if (pUser_read_buf) - { - /* Use a user provided read buffer. */ - if (!user_read_buf_size) - return MZ_FALSE; - pRead_buf = (mz_uint8 *)pUser_read_buf; - read_buf_size = user_read_buf_size; - read_buf_avail = 0; - comp_remaining = file_stat.m_comp_size; - } - else - { - /* Temporarily allocate a read buffer. */ - read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); - if (((sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - read_buf_avail = 0; - comp_remaining = file_stat.m_comp_size; - } - - do - { - /* The size_t cast here should be OK because we've verified that the output buffer is >= file_stat.m_uncomp_size above */ - size_t in_buf_size, out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs); - if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) - { - read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - status = TINFL_STATUS_FAILED; - mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); - break; - } - cur_file_ofs += read_buf_avail; - comp_remaining -= read_buf_avail; - read_buf_ofs = 0; - } - in_buf_size = (size_t)read_buf_avail; - status = tinfl_decompress(&inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0)); - read_buf_avail -= in_buf_size; - read_buf_ofs += in_buf_size; - out_buf_ofs += out_buf_size; - } while (status == TINFL_STATUS_NEEDS_MORE_INPUT); - - if (status == TINFL_STATUS_DONE) - { - /* Make sure the entire file was decompressed, and check its CRC. */ - if (out_buf_ofs != file_stat.m_uncomp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); - status = TINFL_STATUS_FAILED; - } -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - else if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32) - { - mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED); - status = TINFL_STATUS_FAILED; - } -#endif - } - - if ((!pZip->m_pState->m_pMem) && (!pUser_read_buf)) - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - - return status == TINFL_STATUS_DONE; -} - -mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - return MZ_FALSE; - return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size); -} - -mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags) -{ - return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, NULL, 0); -} - -mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags) -{ - return mz_zip_reader_extract_file_to_mem_no_alloc(pZip, pFilename, pBuf, buf_size, flags, NULL, 0); -} - -void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags) -{ - mz_uint64 comp_size, uncomp_size, alloc_size; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - void *pBuf; - - if (pSize) - *pSize = 0; - - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return NULL; - } - - comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - - alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? comp_size : uncomp_size; - if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF)) - { - mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - return NULL; - } - - if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - return NULL; - } - - if (!mz_zip_reader_extract_to_mem(pZip, file_index, pBuf, (size_t)alloc_size, flags)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return NULL; - } - - if (pSize) - *pSize = (size_t)alloc_size; - return pBuf; -} - -void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - { - if (pSize) - *pSize = 0; - return MZ_FALSE; - } - return mz_zip_reader_extract_to_heap(pZip, file_index, pSize, flags); -} - -mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags) -{ - int status = TINFL_STATUS_DONE; - mz_uint file_crc32 = MZ_CRC32_INIT; - mz_uint64 read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, out_buf_ofs = 0, cur_file_ofs; - mz_zip_archive_file_stat file_stat; - void *pRead_buf = NULL; - void *pWrite_buf = NULL; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - - if ((!pZip) || (!pZip->m_pState) || (!pCallback) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - /* A directory or zero length file */ - if ((file_stat.m_is_directory) || (!file_stat.m_comp_size)) - return MZ_TRUE; - - /* Encryption and patch files are not supported. */ - if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - /* This function only supports decompressing stored and deflate. */ - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - - /* Read and do some minimal validation of the local directory entry (this doesn't crack the zip64 stuff, which we already have from the central dir) */ - cur_file_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - /* Decompress the file either directly from memory or from a file input buffer. */ - if (pZip->m_pState->m_pMem) - { - pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; - read_buf_size = read_buf_avail = file_stat.m_comp_size; - comp_remaining = 0; - } - else - { - read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); - if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - read_buf_avail = 0; - comp_remaining = file_stat.m_comp_size; - } - - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) - { - /* The file is stored or the caller has requested the compressed data. */ - if (pZip->m_pState->m_pMem) - { - if (((sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)file_stat.m_comp_size) != file_stat.m_comp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED); - status = TINFL_STATUS_FAILED; - } - else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size); -#endif - } - - cur_file_ofs += file_stat.m_comp_size; - out_buf_ofs += file_stat.m_comp_size; - comp_remaining = 0; - } - else - { - while (comp_remaining) - { - read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)read_buf_avail); - } -#endif - - if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - - cur_file_ofs += read_buf_avail; - out_buf_ofs += read_buf_avail; - comp_remaining -= read_buf_avail; - } - } - } - else - { - tinfl_decompressor inflator; - tinfl_init(&inflator); - - if (NULL == (pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - status = TINFL_STATUS_FAILED; - } - else - { - do - { - mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pWrite_buf + (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) - { - read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - cur_file_ofs += read_buf_avail; - comp_remaining -= read_buf_avail; - read_buf_ofs = 0; - } - - in_buf_size = (size_t)read_buf_avail; - status = tinfl_decompress(&inflator, (const mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pWrite_buf, pWrite_buf_cur, &out_buf_size, comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0); - read_buf_avail -= in_buf_size; - read_buf_ofs += in_buf_size; - - if (out_buf_size) - { - if (pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != out_buf_size) - { - mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - file_crc32 = (mz_uint32)mz_crc32(file_crc32, pWrite_buf_cur, out_buf_size); -#endif - if ((out_buf_ofs += out_buf_size) > file_stat.m_uncomp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - } - } while ((status == TINFL_STATUS_NEEDS_MORE_INPUT) || (status == TINFL_STATUS_HAS_MORE_OUTPUT)); - } - } - - if ((status == TINFL_STATUS_DONE) && (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - { - /* Make sure the entire file was decompressed, and check its CRC. */ - if (out_buf_ofs != file_stat.m_uncomp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); - status = TINFL_STATUS_FAILED; - } -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - else if (file_crc32 != file_stat.m_crc32) - { - mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); - status = TINFL_STATUS_FAILED; - } -#endif - } - - if (!pZip->m_pState->m_pMem) - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - - if (pWrite_buf) - pZip->m_pFree(pZip->m_pAlloc_opaque, pWrite_buf); - - return status == TINFL_STATUS_DONE; -} - -mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - return MZ_FALSE; - - return mz_zip_reader_extract_to_callback(pZip, file_index, pCallback, pOpaque, flags); -} - -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags) -{ - mz_zip_reader_extract_iter_state *pState; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - - /* Argument sanity check */ - if ((!pZip) || (!pZip->m_pState)) - return NULL; - - /* Allocate an iterator status structure */ - pState = (mz_zip_reader_extract_iter_state*)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_reader_extract_iter_state)); - if (!pState) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - return NULL; - } - - /* Fetch file details */ - if (!mz_zip_reader_file_stat(pZip, file_index, &pState->file_stat)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* Encryption and patch files are not supported. */ - if (pState->file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* This function only supports decompressing stored and deflate. */ - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (pState->file_stat.m_method != 0) && (pState->file_stat.m_method != MZ_DEFLATED)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* Init state - save args */ - pState->pZip = pZip; - pState->flags = flags; - - /* Init state - reset variables to defaults */ - pState->status = TINFL_STATUS_DONE; -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - pState->file_crc32 = MZ_CRC32_INIT; -#endif - pState->read_buf_ofs = 0; - pState->out_buf_ofs = 0; - pState->pRead_buf = NULL; - pState->pWrite_buf = NULL; - pState->out_blk_remain = 0; - - /* Read and parse the local directory entry. */ - pState->cur_file_ofs = pState->file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, pState->cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - pState->cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - if ((pState->cur_file_ofs + pState->file_stat.m_comp_size) > pZip->m_archive_size) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* Decompress the file either directly from memory or from a file input buffer. */ - if (pZip->m_pState->m_pMem) - { - pState->pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + pState->cur_file_ofs; - pState->read_buf_size = pState->read_buf_avail = pState->file_stat.m_comp_size; - pState->comp_remaining = pState->file_stat.m_comp_size; - } - else - { - if (!((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method))) - { - /* Decompression required, therefore intermediate read buffer required */ - pState->read_buf_size = MZ_MIN(pState->file_stat.m_comp_size, MZ_ZIP_MAX_IO_BUF_SIZE); - if (NULL == (pState->pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)pState->read_buf_size))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - } - else - { - /* Decompression not required - we will be reading directly into user buffer, no temp buf required */ - pState->read_buf_size = 0; - } - pState->read_buf_avail = 0; - pState->comp_remaining = pState->file_stat.m_comp_size; - } - - if (!((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method))) - { - /* Decompression required, init decompressor */ - tinfl_init( &pState->inflator ); - - /* Allocate write buffer */ - if (NULL == (pState->pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - if (pState->pRead_buf) - pZip->m_pFree(pZip->m_pAlloc_opaque, pState->pRead_buf); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - } - - return pState; -} - -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags) -{ - mz_uint32 file_index; - - /* Locate file index by name */ - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - return NULL; - - /* Construct iterator */ - return mz_zip_reader_extract_iter_new(pZip, file_index, flags); -} - -size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size) -{ - size_t copied_to_caller = 0; - - /* Argument sanity check */ - if ((!pState) || (!pState->pZip) || (!pState->pZip->m_pState) || (!pvBuf)) - return 0; - - if ((pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method)) - { - /* The file is stored or the caller has requested the compressed data, calc amount to return. */ - copied_to_caller = MZ_MIN( buf_size, pState->comp_remaining ); - - /* Zip is in memory....or requires reading from a file? */ - if (pState->pZip->m_pState->m_pMem) - { - /* Copy data to caller's buffer */ - memcpy( pvBuf, pState->pRead_buf, copied_to_caller ); - pState->pRead_buf = ((mz_uint8*)pState->pRead_buf) + copied_to_caller; - } - else - { - /* Read directly into caller's buffer */ - if (pState->pZip->m_pRead(pState->pZip->m_pIO_opaque, pState->cur_file_ofs, pvBuf, copied_to_caller) != copied_to_caller) - { - /* Failed to read all that was asked for, flag failure and alert user */ - mz_zip_set_error(pState->pZip, MZ_ZIP_FILE_READ_FAILED); - pState->status = TINFL_STATUS_FAILED; - copied_to_caller = 0; - } - } - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - /* Compute CRC if not returning compressed data only */ - if (!(pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - pState->file_crc32 = (mz_uint32)mz_crc32(pState->file_crc32, (const mz_uint8 *)pvBuf, copied_to_caller); -#endif - - /* Advance offsets, dec counters */ - pState->cur_file_ofs += copied_to_caller; - pState->out_buf_ofs += copied_to_caller; - pState->comp_remaining -= copied_to_caller; - } - else - { - do - { - /* Calc ptr to write buffer - given current output pos and block size */ - mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pState->pWrite_buf + (pState->out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - - /* Calc max output size - given current output pos and block size */ - size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (pState->out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - - if (!pState->out_blk_remain) - { - /* Read more data from file if none available (and reading from file) */ - if ((!pState->read_buf_avail) && (!pState->pZip->m_pState->m_pMem)) - { - /* Calc read size */ - pState->read_buf_avail = MZ_MIN(pState->read_buf_size, pState->comp_remaining); - if (pState->pZip->m_pRead(pState->pZip->m_pIO_opaque, pState->cur_file_ofs, pState->pRead_buf, (size_t)pState->read_buf_avail) != pState->read_buf_avail) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_FILE_READ_FAILED); - pState->status = TINFL_STATUS_FAILED; - break; - } - - /* Advance offsets, dec counters */ - pState->cur_file_ofs += pState->read_buf_avail; - pState->comp_remaining -= pState->read_buf_avail; - pState->read_buf_ofs = 0; - } - - /* Perform decompression */ - in_buf_size = (size_t)pState->read_buf_avail; - pState->status = tinfl_decompress(&pState->inflator, (const mz_uint8 *)pState->pRead_buf + pState->read_buf_ofs, &in_buf_size, (mz_uint8 *)pState->pWrite_buf, pWrite_buf_cur, &out_buf_size, pState->comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0); - pState->read_buf_avail -= in_buf_size; - pState->read_buf_ofs += in_buf_size; - - /* Update current output block size remaining */ - pState->out_blk_remain = out_buf_size; - } - - if (pState->out_blk_remain) - { - /* Calc amount to return. */ - size_t to_copy = MZ_MIN( (buf_size - copied_to_caller), pState->out_blk_remain ); - - /* Copy data to caller's buffer */ - memcpy( (uint8_t*)pvBuf + copied_to_caller, pWrite_buf_cur, to_copy ); - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - /* Perform CRC */ - pState->file_crc32 = (mz_uint32)mz_crc32(pState->file_crc32, pWrite_buf_cur, to_copy); -#endif - - /* Decrement data consumed from block */ - pState->out_blk_remain -= to_copy; - - /* Inc output offset, while performing sanity check */ - if ((pState->out_buf_ofs += to_copy) > pState->file_stat.m_uncomp_size) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_DECOMPRESSION_FAILED); - pState->status = TINFL_STATUS_FAILED; - break; - } - - /* Increment counter of data copied to caller */ - copied_to_caller += to_copy; - } - } while ( (copied_to_caller < buf_size) && ((pState->status == TINFL_STATUS_NEEDS_MORE_INPUT) || (pState->status == TINFL_STATUS_HAS_MORE_OUTPUT)) ); - } - - /* Return how many bytes were copied into user buffer */ - return copied_to_caller; -} - -mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState) -{ - int status; - - /* Argument sanity check */ - if ((!pState) || (!pState->pZip) || (!pState->pZip->m_pState)) - return MZ_FALSE; - - /* Was decompression completed and requested? */ - if ((pState->status == TINFL_STATUS_DONE) && (!(pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - { - /* Make sure the entire file was decompressed, and check its CRC. */ - if (pState->out_buf_ofs != pState->file_stat.m_uncomp_size) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); - pState->status = TINFL_STATUS_FAILED; - } -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - else if (pState->file_crc32 != pState->file_stat.m_crc32) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_DECOMPRESSION_FAILED); - pState->status = TINFL_STATUS_FAILED; - } -#endif - } - - /* Free buffers */ - if (!pState->pZip->m_pState->m_pMem) - pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState->pRead_buf); - if (pState->pWrite_buf) - pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState->pWrite_buf); - - /* Save status */ - status = pState->status; - - /* Free context */ - pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState); - - return status == TINFL_STATUS_DONE; -} - -#ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n) -{ - (void)ofs; - - return MZ_FWRITE(pBuf, 1, n, (MZ_FILE *)pOpaque); -} - -mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags) -{ - mz_bool status; - mz_zip_archive_file_stat file_stat; - MZ_FILE *pFile; - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - if ((file_stat.m_is_directory) || (!file_stat.m_is_supported)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - - pFile = MZ_FOPEN(pDst_filename, "wb"); - if (!pFile) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - status = mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags); - - if (MZ_FCLOSE(pFile) == EOF) - { - if (status) - mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED); - - status = MZ_FALSE; - } - -#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO) - if (status) - mz_zip_set_file_times(pDst_filename, file_stat.m_time, file_stat.m_time); -#endif - - return status; -} - -mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pArchive_filename, NULL, flags, &file_index)) - return MZ_FALSE; - - return mz_zip_reader_extract_to_file(pZip, file_index, pDst_filename, flags); -} - -mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *pFile, mz_uint flags) -{ - mz_zip_archive_file_stat file_stat; - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - if ((file_stat.m_is_directory) || (!file_stat.m_is_supported)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - - return mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags); -} - -mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, MZ_FILE *pFile, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pArchive_filename, NULL, flags, &file_index)) - return MZ_FALSE; - - return mz_zip_reader_extract_to_cfile(pZip, file_index, pFile, flags); -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -static size_t mz_zip_compute_crc32_callback(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ - mz_uint32 *p = (mz_uint32 *)pOpaque; - (void)file_ofs; - *p = (mz_uint32)mz_crc32(*p, (const mz_uint8 *)pBuf, n); - return n; -} - -mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags) -{ - mz_zip_archive_file_stat file_stat; - mz_zip_internal_state *pState; - const mz_uint8 *pCentral_dir_header; - mz_bool found_zip64_ext_data_in_cdir = MZ_FALSE; - mz_bool found_zip64_ext_data_in_ldir = MZ_FALSE; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - mz_uint64 local_header_ofs = 0; - mz_uint32 local_header_filename_len, local_header_extra_len, local_header_crc32; - mz_uint64 local_header_comp_size, local_header_uncomp_size; - mz_uint32 uncomp_crc32 = MZ_CRC32_INIT; - mz_bool has_data_descriptor; - mz_uint32 local_header_bit_flags; - - mz_zip_array file_data_array; - mz_zip_array_init(&file_data_array, 1); - - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (file_index > pZip->m_total_files) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - pCentral_dir_header = mz_zip_get_cdh(pZip, file_index); - - if (!mz_zip_file_stat_internal(pZip, file_index, pCentral_dir_header, &file_stat, &found_zip64_ext_data_in_cdir)) - return MZ_FALSE; - - /* A directory or zero length file */ - if ((file_stat.m_is_directory) || (!file_stat.m_uncomp_size)) - return MZ_TRUE; - - /* Encryption and patch files are not supported. */ - if (file_stat.m_is_encrypted) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - /* This function only supports stored and deflate. */ - if ((file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - - if (!file_stat.m_is_supported) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - - /* Read and parse the local directory entry. */ - local_header_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - local_header_filename_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS); - local_header_extra_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - local_header_comp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS); - local_header_uncomp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS); - local_header_crc32 = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_CRC32_OFS); - local_header_bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS); - has_data_descriptor = (local_header_bit_flags & 8) != 0; - - if (local_header_filename_len != strlen(file_stat.m_filename)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if ((local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len + local_header_extra_len + file_stat.m_comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (!mz_zip_array_resize(pZip, &file_data_array, MZ_MAX(local_header_filename_len, local_header_extra_len), MZ_FALSE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if (local_header_filename_len) - { - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE, file_data_array.m_p, local_header_filename_len) != local_header_filename_len) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - goto handle_failure; - } - - /* I've seen 1 archive that had the same pathname, but used backslashes in the local dir and forward slashes in the central dir. Do we care about this? For now, this case will fail validation. */ - if (memcmp(file_stat.m_filename, file_data_array.m_p, local_header_filename_len) != 0) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - goto handle_failure; - } - } - - if ((local_header_extra_len) && ((local_header_comp_size == MZ_UINT32_MAX) || (local_header_uncomp_size == MZ_UINT32_MAX))) - { - mz_uint32 extra_size_remaining = local_header_extra_len; - const mz_uint8 *pExtra_data = (const mz_uint8 *)file_data_array.m_p; - - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len, file_data_array.m_p, local_header_extra_len) != local_header_extra_len) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - goto handle_failure; - } - - do - { - mz_uint32 field_id, field_data_size, field_total_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - field_total_size = field_data_size + sizeof(mz_uint16) * 2; - - if (field_total_size > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - const mz_uint8 *pSrc_field_data = pExtra_data + sizeof(mz_uint32); - - if (field_data_size < sizeof(mz_uint64) * 2) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - goto handle_failure; - } - - local_header_uncomp_size = MZ_READ_LE64(pSrc_field_data); - local_header_comp_size = MZ_READ_LE64(pSrc_field_data + sizeof(mz_uint64)); - - found_zip64_ext_data_in_ldir = MZ_TRUE; - break; - } - - pExtra_data += field_total_size; - extra_size_remaining -= field_total_size; - } while (extra_size_remaining); - } - - /* TODO: parse local header extra data when local_header_comp_size is 0xFFFFFFFF! (big_descriptor.zip) */ - /* I've seen zips in the wild with the data descriptor bit set, but proper local header values and bogus data descriptors */ - if ((has_data_descriptor) && (!local_header_comp_size) && (!local_header_crc32)) - { - mz_uint8 descriptor_buf[32]; - mz_bool has_id; - const mz_uint8 *pSrc; - mz_uint32 file_crc32; - mz_uint64 comp_size = 0, uncomp_size = 0; - - mz_uint32 num_descriptor_uint32s = ((pState->m_zip64) || (found_zip64_ext_data_in_ldir)) ? 6 : 4; - - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len + local_header_extra_len + file_stat.m_comp_size, descriptor_buf, sizeof(mz_uint32) * num_descriptor_uint32s) != (sizeof(mz_uint32) * num_descriptor_uint32s)) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - goto handle_failure; - } - - has_id = (MZ_READ_LE32(descriptor_buf) == MZ_ZIP_DATA_DESCRIPTOR_ID); - pSrc = has_id ? (descriptor_buf + sizeof(mz_uint32)) : descriptor_buf; - - file_crc32 = MZ_READ_LE32(pSrc); - - if ((pState->m_zip64) || (found_zip64_ext_data_in_ldir)) - { - comp_size = MZ_READ_LE64(pSrc + sizeof(mz_uint32)); - uncomp_size = MZ_READ_LE64(pSrc + sizeof(mz_uint32) + sizeof(mz_uint64)); - } - else - { - comp_size = MZ_READ_LE32(pSrc + sizeof(mz_uint32)); - uncomp_size = MZ_READ_LE32(pSrc + sizeof(mz_uint32) + sizeof(mz_uint32)); - } - - if ((file_crc32 != file_stat.m_crc32) || (comp_size != file_stat.m_comp_size) || (uncomp_size != file_stat.m_uncomp_size)) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - goto handle_failure; - } - } - else - { - if ((local_header_crc32 != file_stat.m_crc32) || (local_header_comp_size != file_stat.m_comp_size) || (local_header_uncomp_size != file_stat.m_uncomp_size)) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - goto handle_failure; - } - } - - mz_zip_array_clear(pZip, &file_data_array); - - if ((flags & MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY) == 0) - { - if (!mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_compute_crc32_callback, &uncomp_crc32, 0)) - return MZ_FALSE; - - /* 1 more check to be sure, although the extract checks too. */ - if (uncomp_crc32 != file_stat.m_crc32) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - return MZ_FALSE; - } - } - - return MZ_TRUE; - -handle_failure: - mz_zip_array_clear(pZip, &file_data_array); - return MZ_FALSE; -} - -mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags) -{ - mz_zip_internal_state *pState; - uint32_t i; - - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - /* Basic sanity checks */ - if (!pState->m_zip64) - { - if (pZip->m_total_files > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - if (pZip->m_archive_size > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - } - else - { - if (pZip->m_total_files >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - if (pState->m_central_dir.m_size >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - } - - for (i = 0; i < pZip->m_total_files; i++) - { - if (MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG & flags) - { - mz_uint32 found_index; - mz_zip_archive_file_stat stat; - - if (!mz_zip_reader_file_stat(pZip, i, &stat)) - return MZ_FALSE; - - if (!mz_zip_reader_locate_file_v2(pZip, stat.m_filename, NULL, 0, &found_index)) - return MZ_FALSE; - - /* This check can fail if there are duplicate filenames in the archive (which we don't check for when writing - that's up to the user) */ - if (found_index != i) - return mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - } - - if (!mz_zip_validate_file(pZip, i, flags)) - return MZ_FALSE; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr) -{ - mz_bool success = MZ_TRUE; - mz_zip_archive zip; - mz_zip_error actual_err = MZ_ZIP_NO_ERROR; - - if ((!pMem) || (!size)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - return MZ_FALSE; - } - - mz_zip_zero_struct(&zip); - - if (!mz_zip_reader_init_mem(&zip, pMem, size, flags)) - { - if (pErr) - *pErr = zip.m_last_error; - return MZ_FALSE; - } - - if (!mz_zip_validate_archive(&zip, flags)) - { - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (!mz_zip_reader_end_internal(&zip, success)) - { - if (!actual_err) - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (pErr) - *pErr = actual_err; - - return success; -} - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr) -{ - mz_bool success = MZ_TRUE; - mz_zip_archive zip; - mz_zip_error actual_err = MZ_ZIP_NO_ERROR; - - if (!pFilename) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - return MZ_FALSE; - } - - mz_zip_zero_struct(&zip); - - if (!mz_zip_reader_init_file_v2(&zip, pFilename, flags, 0, 0)) - { - if (pErr) - *pErr = zip.m_last_error; - return MZ_FALSE; - } - - if (!mz_zip_validate_archive(&zip, flags)) - { - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (!mz_zip_reader_end_internal(&zip, success)) - { - if (!actual_err) - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (pErr) - *pErr = actual_err; - - return success; -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -/* ------------------- .ZIP archive writing */ - -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS - -static MZ_FORCEINLINE void mz_write_le16(mz_uint8 *p, mz_uint16 v) -{ - p[0] = (mz_uint8)v; - p[1] = (mz_uint8)(v >> 8); -} -static MZ_FORCEINLINE void mz_write_le32(mz_uint8 *p, mz_uint32 v) -{ - p[0] = (mz_uint8)v; - p[1] = (mz_uint8)(v >> 8); - p[2] = (mz_uint8)(v >> 16); - p[3] = (mz_uint8)(v >> 24); -} -static MZ_FORCEINLINE void mz_write_le64(mz_uint8 *p, mz_uint64 v) -{ - mz_write_le32(p, (mz_uint32)v); - mz_write_le32(p + sizeof(mz_uint32), (mz_uint32)(v >> 32)); -} - -#define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v)) -#define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v)) -#define MZ_WRITE_LE64(p, v) mz_write_le64((mz_uint8 *)(p), (mz_uint64)(v)) - -static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - mz_zip_internal_state *pState = pZip->m_pState; - mz_uint64 new_size = MZ_MAX(file_ofs + n, pState->m_mem_size); - - if (!n) - return 0; - - /* An allocation this big is likely to just fail on 32-bit systems, so don't even go there. */ - if ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF)) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE); - return 0; - } - - if (new_size > pState->m_mem_capacity) - { - void *pNew_block; - size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity); - - while (new_capacity < new_size) - new_capacity *= 2; - - if (NULL == (pNew_block = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - return 0; - } - - pState->m_pMem = pNew_block; - pState->m_mem_capacity = new_capacity; - } - memcpy((mz_uint8 *)pState->m_pMem + file_ofs, pBuf, n); - pState->m_mem_size = (size_t)new_size; - return n; -} - -static mz_bool mz_zip_writer_end_internal(mz_zip_archive *pZip, mz_bool set_last_error) -{ - mz_zip_internal_state *pState; - mz_bool status = MZ_TRUE; - - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || ((pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) && (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED))) - { - if (set_last_error) - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - pState = pZip->m_pState; - pZip->m_pState = NULL; - mz_zip_array_clear(pZip, &pState->m_central_dir); - mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); - mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); - -#ifndef MINIZ_NO_STDIO - if (pState->m_pFile) - { - if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE) - { - if (MZ_FCLOSE(pState->m_pFile) == EOF) - { - if (set_last_error) - mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED); - status = MZ_FALSE; - } - } - - pState->m_pFile = NULL; - } -#endif /* #ifndef MINIZ_NO_STDIO */ - - if ((pZip->m_pWrite == mz_zip_heap_write_func) && (pState->m_pMem)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pState->m_pMem); - pState->m_pMem = NULL; - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - pZip->m_zip_mode = MZ_ZIP_MODE_INVALID; - return status; -} - -mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags) -{ - mz_bool zip64 = (flags & MZ_ZIP_FLAG_WRITE_ZIP64) != 0; - - if ((!pZip) || (pZip->m_pState) || (!pZip->m_pWrite) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - { - if (!pZip->m_pRead) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - if (pZip->m_file_offset_alignment) - { - /* Ensure user specified file offset alignment is a power of 2. */ - if (pZip->m_file_offset_alignment & (pZip->m_file_offset_alignment - 1)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - if (!pZip->m_pAlloc) - pZip->m_pAlloc = miniz_def_alloc_func; - if (!pZip->m_pFree) - pZip->m_pFree = miniz_def_free_func; - if (!pZip->m_pRealloc) - pZip->m_pRealloc = miniz_def_realloc_func; - - pZip->m_archive_size = existing_size; - pZip->m_central_directory_file_ofs = 0; - pZip->m_total_files = 0; - - if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); - - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); - - pZip->m_pState->m_zip64 = zip64; - pZip->m_pState->m_zip64_has_extended_info_fields = zip64; - - pZip->m_zip_type = MZ_ZIP_TYPE_USER; - pZip->m_zip_mode = MZ_ZIP_MODE_WRITING; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size) -{ - return mz_zip_writer_init_v2(pZip, existing_size, 0); -} - -mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags) -{ - pZip->m_pWrite = mz_zip_heap_write_func; - pZip->m_pNeeds_keepalive = NULL; - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - pZip->m_pRead = mz_zip_mem_read_func; - - pZip->m_pIO_opaque = pZip; - - if (!mz_zip_writer_init_v2(pZip, size_to_reserve_at_beginning, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_HEAP; - - if (0 != (initial_allocation_size = MZ_MAX(initial_allocation_size, size_to_reserve_at_beginning))) - { - if (NULL == (pZip->m_pState->m_pMem = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, initial_allocation_size))) - { - mz_zip_writer_end_internal(pZip, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - pZip->m_pState->m_mem_capacity = initial_allocation_size; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size) -{ - return mz_zip_writer_init_heap_v2(pZip, size_to_reserve_at_beginning, initial_allocation_size, 0); -} - -#ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - - file_ofs += pZip->m_pState->m_file_archive_start_ofs; - - if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED); - return 0; - } - - return MZ_FWRITE(pBuf, 1, n, pZip->m_pState->m_pFile); -} - -mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning) -{ - return mz_zip_writer_init_file_v2(pZip, pFilename, size_to_reserve_at_beginning, 0); -} - -mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags) -{ - MZ_FILE *pFile; - - pZip->m_pWrite = mz_zip_file_write_func; - pZip->m_pNeeds_keepalive = NULL; - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - pZip->m_pRead = mz_zip_file_read_func; - - pZip->m_pIO_opaque = pZip; - - if (!mz_zip_writer_init_v2(pZip, size_to_reserve_at_beginning, flags)) - return MZ_FALSE; - - if (NULL == (pFile = MZ_FOPEN(pFilename, (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) ? "w+b" : "wb"))) - { - mz_zip_writer_end(pZip); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - } - - pZip->m_pState->m_pFile = pFile; - pZip->m_zip_type = MZ_ZIP_TYPE_FILE; - - if (size_to_reserve_at_beginning) - { - mz_uint64 cur_ofs = 0; - char buf[4096]; - - MZ_CLEAR_OBJ(buf); - - do - { - size_t n = (size_t)MZ_MIN(sizeof(buf), size_to_reserve_at_beginning); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_ofs, buf, n) != n) - { - mz_zip_writer_end(pZip); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_ofs += n; - size_to_reserve_at_beginning -= n; - } while (size_to_reserve_at_beginning); - } - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags) -{ - pZip->m_pWrite = mz_zip_file_write_func; - pZip->m_pNeeds_keepalive = NULL; - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - pZip->m_pRead = mz_zip_file_read_func; - - pZip->m_pIO_opaque = pZip; - - if (!mz_zip_writer_init_v2(pZip, 0, flags)) - return MZ_FALSE; - - pZip->m_pState->m_pFile = pFile; - pZip->m_pState->m_file_archive_start_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - pZip->m_zip_type = MZ_ZIP_TYPE_CFILE; - - return MZ_TRUE; -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags) -{ - mz_zip_internal_state *pState; - - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (flags & MZ_ZIP_FLAG_WRITE_ZIP64) - { - /* We don't support converting a non-zip64 file to zip64 - this seems like more trouble than it's worth. (What about the existing 32-bit data descriptors that could follow the compressed data?) */ - if (!pZip->m_pState->m_zip64) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - /* No sense in trying to write to an archive that's already at the support max size */ - if (pZip->m_pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if (pZip->m_total_files == MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - - if ((pZip->m_archive_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE); - } - - pState = pZip->m_pState; - - if (pState->m_pFile) - { -#ifdef MINIZ_NO_STDIO - (void)pFilename; - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); -#else - if (pZip->m_pIO_opaque != pZip) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE) - { - if (!pFilename) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Archive is being read from stdio and was originally opened only for reading. Try to reopen as writable. */ - if (NULL == (pState->m_pFile = MZ_FREOPEN(pFilename, "r+b", pState->m_pFile))) - { - /* The mz_zip_archive is now in a bogus state because pState->m_pFile is NULL, so just close it. */ - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - } - } - - pZip->m_pWrite = mz_zip_file_write_func; - pZip->m_pNeeds_keepalive = NULL; -#endif /* #ifdef MINIZ_NO_STDIO */ - } - else if (pState->m_pMem) - { - /* Archive lives in a memory block. Assume it's from the heap that we can resize using the realloc callback. */ - if (pZip->m_pIO_opaque != pZip) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState->m_mem_capacity = pState->m_mem_size; - pZip->m_pWrite = mz_zip_heap_write_func; - pZip->m_pNeeds_keepalive = NULL; - } - /* Archive is being read via a user provided read function - make sure the user has specified a write function too. */ - else if (!pZip->m_pWrite) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Start writing new files at the archive's current central directory location. */ - /* TODO: We could add a flag that lets the user start writing immediately AFTER the existing central dir - this would be safer. */ - pZip->m_archive_size = pZip->m_central_directory_file_ofs; - pZip->m_central_directory_file_ofs = 0; - - /* Clear the sorted central dir offsets, they aren't useful or maintained now. */ - /* Even though we're now in write mode, files can still be extracted and verified, but file locates will be slow. */ - /* TODO: We could easily maintain the sorted central directory offsets. */ - mz_zip_array_clear(pZip, &pZip->m_pState->m_sorted_central_dir_offsets); - - pZip->m_zip_mode = MZ_ZIP_MODE_WRITING; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename) -{ - return mz_zip_writer_init_from_reader_v2(pZip, pFilename, 0); -} - -/* TODO: pArchive_name is a terrible name here! */ -mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags) -{ - return mz_zip_writer_add_mem_ex(pZip, pArchive_name, pBuf, buf_size, NULL, 0, level_and_flags, 0, 0); -} - -typedef struct -{ - mz_zip_archive *m_pZip; - mz_uint64 m_cur_archive_file_ofs; - mz_uint64 m_comp_size; -} mz_zip_writer_add_state; - -static mz_bool mz_zip_writer_add_put_buf_callback(const void *pBuf, int len, void *pUser) -{ - mz_zip_writer_add_state *pState = (mz_zip_writer_add_state *)pUser; - if ((int)pState->m_pZip->m_pWrite(pState->m_pZip->m_pIO_opaque, pState->m_cur_archive_file_ofs, pBuf, len) != len) - return MZ_FALSE; - - pState->m_cur_archive_file_ofs += len; - pState->m_comp_size += len; - return MZ_TRUE; -} - -#define MZ_ZIP64_MAX_LOCAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 2) -#define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 3) -static mz_uint32 mz_zip_writer_create_zip64_extra_data(mz_uint8 *pBuf, mz_uint64 *pUncomp_size, mz_uint64 *pComp_size, mz_uint64 *pLocal_header_ofs) -{ - mz_uint8 *pDst = pBuf; - mz_uint32 field_size = 0; - - MZ_WRITE_LE16(pDst + 0, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID); - MZ_WRITE_LE16(pDst + 2, 0); - pDst += sizeof(mz_uint16) * 2; - - if (pUncomp_size) - { - MZ_WRITE_LE64(pDst, *pUncomp_size); - pDst += sizeof(mz_uint64); - field_size += sizeof(mz_uint64); - } - - if (pComp_size) - { - MZ_WRITE_LE64(pDst, *pComp_size); - pDst += sizeof(mz_uint64); - field_size += sizeof(mz_uint64); - } - - if (pLocal_header_ofs) - { - MZ_WRITE_LE64(pDst, *pLocal_header_ofs); - pDst += sizeof(mz_uint64); - field_size += sizeof(mz_uint64); - } - - MZ_WRITE_LE16(pBuf + 2, field_size); - - return (mz_uint32)(pDst - pBuf); -} - -static mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date) -{ - (void)pZip; - memset(pDst, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_SIG_OFS, MZ_ZIP_LOCAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_VERSION_NEEDED_OFS, method ? 20 : 0); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_BIT_FLAG_OFS, bit_flags); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_METHOD_OFS, method); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_TIME_OFS, dos_time); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_DATE_OFS, dos_date); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_CRC32_OFS, uncomp_crc32); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS, MZ_MIN(comp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS, MZ_MIN(uncomp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILENAME_LEN_OFS, filename_size); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_EXTRA_LEN_OFS, extra_size); - return MZ_TRUE; -} - -static mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, - mz_uint16 filename_size, mz_uint16 extra_size, mz_uint16 comment_size, - mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, - mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, - mz_uint64 local_header_ofs, mz_uint32 ext_attributes) -{ - (void)pZip; - memset(pDst, 0, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_SIG_OFS, MZ_ZIP_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_VERSION_NEEDED_OFS, method ? 20 : 0); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_BIT_FLAG_OFS, bit_flags); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_METHOD_OFS, method); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_TIME_OFS, dos_time); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_DATE_OFS, dos_date); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_CRC32_OFS, uncomp_crc32); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, MZ_MIN(comp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, MZ_MIN(uncomp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILENAME_LEN_OFS, filename_size); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_EXTRA_LEN_OFS, extra_size); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_COMMENT_LEN_OFS, comment_size); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS, ext_attributes); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_LOCAL_HEADER_OFS, MZ_MIN(local_header_ofs, MZ_UINT32_MAX)); - return MZ_TRUE; -} - -static mz_bool mz_zip_writer_add_to_central_dir(mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size, - const void *pExtra, mz_uint16 extra_size, const void *pComment, mz_uint16 comment_size, - mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, - mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, - mz_uint64 local_header_ofs, mz_uint32 ext_attributes, - const char *user_extra_data, mz_uint user_extra_data_len) -{ - mz_zip_internal_state *pState = pZip->m_pState; - mz_uint32 central_dir_ofs = (mz_uint32)pState->m_central_dir.m_size; - size_t orig_central_dir_size = pState->m_central_dir.m_size; - mz_uint8 central_dir_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE]; - - if (!pZip->m_pState->m_zip64) - { - if (local_header_ofs > 0xFFFFFFFF) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE); - } - - /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */ - if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + extra_size + user_extra_data_len + comment_size) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - if (!mz_zip_writer_create_central_dir_header(pZip, central_dir_header, filename_size, extra_size + user_extra_data_len, comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_header_ofs, ext_attributes)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if ((!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_dir_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pFilename, filename_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pExtra, extra_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, user_extra_data, user_extra_data_len)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pComment, comment_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, ¢ral_dir_ofs, 1))) - { - /* Try to resize the central directory array back into its original state. */ - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - return MZ_TRUE; -} - -static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name) -{ - /* Basic ZIP archive filename validity checks: Valid filenames cannot start with a forward slash, cannot contain a drive letter, and cannot use DOS-style backward slashes. */ - if (*pArchive_name == '/') - return MZ_FALSE; - - while (*pArchive_name) - { - if ((*pArchive_name == '\\') || (*pArchive_name == ':')) - return MZ_FALSE; - - pArchive_name++; - } - - return MZ_TRUE; -} - -static mz_uint mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip) -{ - mz_uint32 n; - if (!pZip->m_file_offset_alignment) - return 0; - n = (mz_uint32)(pZip->m_archive_size & (pZip->m_file_offset_alignment - 1)); - return (mz_uint)((pZip->m_file_offset_alignment - n) & (pZip->m_file_offset_alignment - 1)); -} - -static mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, mz_uint64 cur_file_ofs, mz_uint32 n) -{ - char buf[4096]; - memset(buf, 0, MZ_MIN(sizeof(buf), n)); - while (n) - { - mz_uint32 s = MZ_MIN(sizeof(buf), n); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_file_ofs, buf, s) != s) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_file_ofs += s; - n -= s; - } - return MZ_TRUE; -} - -mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - mz_uint64 uncomp_size, mz_uint32 uncomp_crc32) -{ - return mz_zip_writer_add_mem_ex_v2(pZip, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, uncomp_size, uncomp_crc32, NULL, NULL, 0, NULL, 0); -} - -mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, - mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, MZ_TIME_T *last_modified, - const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len) -{ - mz_uint16 method = 0, dos_time = 0, dos_date = 0; - mz_uint level, ext_attributes = 0, num_alignment_padding_bytes; - mz_uint64 local_dir_header_ofs = pZip->m_archive_size, cur_archive_file_ofs = pZip->m_archive_size, comp_size = 0; - size_t archive_name_size; - mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; - tdefl_compressor *pComp = NULL; - mz_bool store_data_uncompressed; - mz_zip_internal_state *pState; - mz_uint8 *pExtra_data = NULL; - mz_uint32 extra_size = 0; - mz_uint8 extra_data[MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE]; - mz_uint16 bit_flags = 0; - - if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - - if (uncomp_size || (buf_size && !(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - bit_flags |= MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR; - - if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME)) - bit_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8; - - level = level_and_flags & 0xF; - store_data_uncompressed = ((!level) || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)); - - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || ((buf_size) && (!pBuf)) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - if (pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if (pZip->m_total_files == MZ_UINT16_MAX) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */ - } - if ((buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF)) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - } - } - - if ((!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (uncomp_size)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_writer_validate_archive_name(pArchive_name)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - -#ifndef MINIZ_NO_TIME - if (last_modified != NULL) - { - mz_zip_time_t_to_dos_time(*last_modified, &dos_time, &dos_date); - } - else - { - MZ_TIME_T cur_time; - time(&cur_time); - mz_zip_time_t_to_dos_time(cur_time, &dos_time, &dos_date); - } -#endif /* #ifndef MINIZ_NO_TIME */ - - if (!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - uncomp_crc32 = (mz_uint32)mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, buf_size); - uncomp_size = buf_size; - if (uncomp_size <= 3) - { - level = 0; - store_data_uncompressed = MZ_TRUE; - } - } - - archive_name_size = strlen(pArchive_name); - if (archive_name_size > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); - - /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */ - if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE + comment_size) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - if (!pState->m_zip64) - { - /* Bail early if the archive would obviously become too large */ - if ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + archive_name_size - + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size + user_extra_data_len + - pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + user_extra_data_central_len - + MZ_ZIP_DATA_DESCRIPTER_SIZE32) > 0xFFFFFFFF) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - } - } - - if ((archive_name_size) && (pArchive_name[archive_name_size - 1] == '/')) - { - /* Set DOS Subdirectory attribute bit. */ - ext_attributes |= MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG; - - /* Subdirectories cannot contain data. */ - if ((buf_size) || (uncomp_size)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - /* Try to do any allocations before writing to the archive, so if an allocation fails the file remains unmodified. (A good idea if we're doing an in-place modification.) */ - if ((!mz_zip_array_ensure_room(pZip, &pState->m_central_dir, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size + (pState->m_zip64 ? MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE : 0))) || (!mz_zip_array_ensure_room(pZip, &pState->m_central_dir_offsets, 1))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if ((!store_data_uncompressed) && (buf_size)) - { - if (NULL == (pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return MZ_FALSE; - } - - local_dir_header_ofs += num_alignment_padding_bytes; - if (pZip->m_file_offset_alignment) - { - MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); - } - cur_archive_file_ofs += num_alignment_padding_bytes; - - MZ_CLEAR_OBJ(local_dir_header); - - if (!store_data_uncompressed || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - method = MZ_DEFLATED; - } - - if (pState->m_zip64) - { - if (uncomp_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX) - { - pExtra_data = extra_data; - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, extra_size + user_extra_data_len, 0, 0, 0, method, bit_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_archive_file_ofs += archive_name_size; - - if (pExtra_data != NULL) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += extra_size; - } - } - else - { - if ((comp_size > MZ_UINT32_MAX) || (cur_archive_file_ofs > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, user_extra_data_len, 0, 0, 0, method, bit_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_archive_file_ofs += archive_name_size; - } - - if (user_extra_data_len > 0) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += user_extra_data_len; - } - - if (store_data_uncompressed) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pBuf, buf_size) != buf_size) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += buf_size; - comp_size = buf_size; - } - else if (buf_size) - { - mz_zip_writer_add_state state; - - state.m_pZip = pZip; - state.m_cur_archive_file_ofs = cur_archive_file_ofs; - state.m_comp_size = 0; - - if ((tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) || - (tdefl_compress_buffer(pComp, pBuf, buf_size, TDEFL_FINISH) != TDEFL_STATUS_DONE)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_COMPRESSION_FAILED); - } - - comp_size = state.m_comp_size; - cur_archive_file_ofs = state.m_cur_archive_file_ofs; - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - pComp = NULL; - - if (uncomp_size) - { - mz_uint8 local_dir_footer[MZ_ZIP_DATA_DESCRIPTER_SIZE64]; - mz_uint32 local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE32; - - MZ_ASSERT(bit_flags & MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR); - - MZ_WRITE_LE32(local_dir_footer + 0, MZ_ZIP_DATA_DESCRIPTOR_ID); - MZ_WRITE_LE32(local_dir_footer + 4, uncomp_crc32); - if (pExtra_data == NULL) - { - if (comp_size > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - MZ_WRITE_LE32(local_dir_footer + 8, comp_size); - MZ_WRITE_LE32(local_dir_footer + 12, uncomp_size); - } - else - { - MZ_WRITE_LE64(local_dir_footer + 8, comp_size); - MZ_WRITE_LE64(local_dir_footer + 16, uncomp_size); - local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE64; - } - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size) - return MZ_FALSE; - - cur_archive_file_ofs += local_dir_footer_size; - } - - if (pExtra_data != NULL) - { - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, pExtra_data, extra_size, pComment, - comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes, - user_extra_data_central, user_extra_data_central_len)) - return MZ_FALSE; - - pZip->m_total_files++; - pZip->m_archive_size = cur_archive_file_ofs; - - return MZ_TRUE; -} - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file, mz_uint64 size_to_add, const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len) -{ - mz_uint16 gen_flags = MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR; - mz_uint uncomp_crc32 = MZ_CRC32_INIT, level, num_alignment_padding_bytes; - mz_uint16 method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0; - mz_uint64 local_dir_header_ofs, cur_archive_file_ofs = pZip->m_archive_size, uncomp_size = size_to_add, comp_size = 0; - size_t archive_name_size; - mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; - mz_uint8 *pExtra_data = NULL; - mz_uint32 extra_size = 0; - mz_uint8 extra_data[MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE]; - mz_zip_internal_state *pState; - - if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME)) - gen_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8; - - if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - level = level_and_flags & 0xF; - - /* Sanity checks */ - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - if ((!pState->m_zip64) && (uncomp_size > MZ_UINT32_MAX)) - { - /* Source file is too large for non-zip64 */ - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - pState->m_zip64 = MZ_TRUE; - } - - /* We could support this, but why? */ - if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_writer_validate_archive_name(pArchive_name)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - - if (pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if (pZip->m_total_files == MZ_UINT16_MAX) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */ - } - } - - archive_name_size = strlen(pArchive_name); - if (archive_name_size > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); - - /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */ - if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE + comment_size) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - if (!pState->m_zip64) - { - /* Bail early if the archive would obviously become too large */ - if ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE - + archive_name_size + comment_size + user_extra_data_len + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + 1024 - + MZ_ZIP_DATA_DESCRIPTER_SIZE32 + user_extra_data_central_len) > 0xFFFFFFFF) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - } - } - -#ifndef MINIZ_NO_TIME - if (pFile_time) - { - mz_zip_time_t_to_dos_time(*pFile_time, &dos_time, &dos_date); - } -#endif - - if (uncomp_size <= 3) - level = 0; - - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes)) - { - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += num_alignment_padding_bytes; - local_dir_header_ofs = cur_archive_file_ofs; - - if (pZip->m_file_offset_alignment) - { - MZ_ASSERT((cur_archive_file_ofs & (pZip->m_file_offset_alignment - 1)) == 0); - } - - if (uncomp_size && level) - { - method = MZ_DEFLATED; - } - - MZ_CLEAR_OBJ(local_dir_header); - if (pState->m_zip64) - { - if (uncomp_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX) - { - pExtra_data = extra_data; - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, extra_size + user_extra_data_len, 0, 0, 0, method, gen_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += archive_name_size; - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += extra_size; - } - else - { - if ((comp_size > MZ_UINT32_MAX) || (cur_archive_file_ofs > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, user_extra_data_len, 0, 0, 0, method, gen_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += archive_name_size; - } - - if (user_extra_data_len > 0) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += user_extra_data_len; - } - - if (uncomp_size) - { - mz_uint64 uncomp_remaining = uncomp_size; - void *pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, MZ_ZIP_MAX_IO_BUF_SIZE); - if (!pRead_buf) - { - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!level) - { - while (uncomp_remaining) - { - mz_uint n = (mz_uint)MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, uncomp_remaining); - if ((MZ_FREAD(pRead_buf, 1, n, pSrc_file) != n) || (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pRead_buf, n) != n)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n); - uncomp_remaining -= n; - cur_archive_file_ofs += n; - } - comp_size = uncomp_size; - } - else - { - mz_bool result = MZ_FALSE; - mz_zip_writer_add_state state; - tdefl_compressor *pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)); - if (!pComp) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - state.m_pZip = pZip; - state.m_cur_archive_file_ofs = cur_archive_file_ofs; - state.m_comp_size = 0; - - if (tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - } - - for (;;) - { - size_t in_buf_size = (mz_uint32)MZ_MIN(uncomp_remaining, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); - tdefl_status status; - tdefl_flush flush = TDEFL_NO_FLUSH; - - if (MZ_FREAD(pRead_buf, 1, in_buf_size, pSrc_file) != in_buf_size) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - break; - } - - uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, in_buf_size); - uncomp_remaining -= in_buf_size; - - if (pZip->m_pNeeds_keepalive != NULL && pZip->m_pNeeds_keepalive(pZip->m_pIO_opaque)) - flush = TDEFL_FULL_FLUSH; - - status = tdefl_compress_buffer(pComp, pRead_buf, in_buf_size, uncomp_remaining ? flush : TDEFL_FINISH); - if (status == TDEFL_STATUS_DONE) - { - result = MZ_TRUE; - break; - } - else if (status != TDEFL_STATUS_OKAY) - { - mz_zip_set_error(pZip, MZ_ZIP_COMPRESSION_FAILED); - break; - } - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - - if (!result) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return MZ_FALSE; - } - - comp_size = state.m_comp_size; - cur_archive_file_ofs = state.m_cur_archive_file_ofs; - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - } - - { - mz_uint8 local_dir_footer[MZ_ZIP_DATA_DESCRIPTER_SIZE64]; - mz_uint32 local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE32; - - MZ_WRITE_LE32(local_dir_footer + 0, MZ_ZIP_DATA_DESCRIPTOR_ID); - MZ_WRITE_LE32(local_dir_footer + 4, uncomp_crc32); - if (pExtra_data == NULL) - { - if (comp_size > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - MZ_WRITE_LE32(local_dir_footer + 8, comp_size); - MZ_WRITE_LE32(local_dir_footer + 12, uncomp_size); - } - else - { - MZ_WRITE_LE64(local_dir_footer + 8, comp_size); - MZ_WRITE_LE64(local_dir_footer + 16, uncomp_size); - local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE64; - } - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size) - return MZ_FALSE; - - cur_archive_file_ofs += local_dir_footer_size; - } - - if (pExtra_data != NULL) - { - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, pExtra_data, extra_size, pComment, comment_size, - uncomp_size, comp_size, uncomp_crc32, method, gen_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes, - user_extra_data_central, user_extra_data_central_len)) - return MZ_FALSE; - - pZip->m_total_files++; - pZip->m_archive_size = cur_archive_file_ofs; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags) -{ - MZ_FILE *pSrc_file = NULL; - mz_uint64 uncomp_size = 0; - MZ_TIME_T file_modified_time; - MZ_TIME_T *pFile_time = NULL; - mz_bool status; - - memset(&file_modified_time, 0, sizeof(file_modified_time)); - -#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO) - pFile_time = &file_modified_time; - if (!mz_zip_get_file_modified_time(pSrc_filename, &file_modified_time)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_STAT_FAILED); -#endif - - pSrc_file = MZ_FOPEN(pSrc_filename, "rb"); - if (!pSrc_file) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - MZ_FSEEK64(pSrc_file, 0, SEEK_END); - uncomp_size = MZ_FTELL64(pSrc_file); - MZ_FSEEK64(pSrc_file, 0, SEEK_SET); - - status = mz_zip_writer_add_cfile(pZip, pArchive_name, pSrc_file, uncomp_size, pFile_time, pComment, comment_size, level_and_flags, NULL, 0, NULL, 0); - - MZ_FCLOSE(pSrc_file); - - return status; -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -static mz_bool mz_zip_writer_update_zip64_extension_block(mz_zip_array *pNew_ext, mz_zip_archive *pZip, const mz_uint8 *pExt, uint32_t ext_len, mz_uint64 *pComp_size, mz_uint64 *pUncomp_size, mz_uint64 *pLocal_header_ofs, mz_uint32 *pDisk_start) -{ - /* + 64 should be enough for any new zip64 data */ - if (!mz_zip_array_reserve(pZip, pNew_ext, ext_len + 64, MZ_FALSE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - mz_zip_array_resize(pZip, pNew_ext, 0, MZ_FALSE); - - if ((pUncomp_size) || (pComp_size) || (pLocal_header_ofs) || (pDisk_start)) - { - mz_uint8 new_ext_block[64]; - mz_uint8 *pDst = new_ext_block; - mz_write_le16(pDst, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID); - mz_write_le16(pDst + sizeof(mz_uint16), 0); - pDst += sizeof(mz_uint16) * 2; - - if (pUncomp_size) - { - mz_write_le64(pDst, *pUncomp_size); - pDst += sizeof(mz_uint64); - } - - if (pComp_size) - { - mz_write_le64(pDst, *pComp_size); - pDst += sizeof(mz_uint64); - } - - if (pLocal_header_ofs) - { - mz_write_le64(pDst, *pLocal_header_ofs); - pDst += sizeof(mz_uint64); - } - - if (pDisk_start) - { - mz_write_le32(pDst, *pDisk_start); - pDst += sizeof(mz_uint32); - } - - mz_write_le16(new_ext_block + sizeof(mz_uint16), (mz_uint16)((pDst - new_ext_block) - sizeof(mz_uint16) * 2)); - - if (!mz_zip_array_push_back(pZip, pNew_ext, new_ext_block, pDst - new_ext_block)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if ((pExt) && (ext_len)) - { - mz_uint32 extra_size_remaining = ext_len; - const mz_uint8 *pExtra_data = pExt; - - do - { - mz_uint32 field_id, field_data_size, field_total_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - field_total_size = field_data_size + sizeof(mz_uint16) * 2; - - if (field_total_size > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id != MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - if (!mz_zip_array_push_back(pZip, pNew_ext, pExtra_data, field_total_size)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - pExtra_data += field_total_size; - extra_size_remaining -= field_total_size; - } while (extra_size_remaining); - } - - return MZ_TRUE; -} - -/* TODO: This func is now pretty freakin complex due to zip64, split it up? */ -mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index) -{ - mz_uint n, bit_flags, num_alignment_padding_bytes, src_central_dir_following_data_size; - mz_uint64 src_archive_bytes_remaining, local_dir_header_ofs; - mz_uint64 cur_src_file_ofs, cur_dst_file_ofs; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - mz_uint8 new_central_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE]; - size_t orig_central_dir_size; - mz_zip_internal_state *pState; - void *pBuf; - const mz_uint8 *pSrc_central_header; - mz_zip_archive_file_stat src_file_stat; - mz_uint32 src_filename_len, src_comment_len, src_ext_len; - mz_uint32 local_header_filename_size, local_header_extra_len; - mz_uint64 local_header_comp_size, local_header_uncomp_size; - mz_bool found_zip64_ext_data_in_ldir = MZ_FALSE; - - /* Sanity checks */ - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pSource_zip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - /* Don't support copying files from zip64 archives to non-zip64, even though in some cases this is possible */ - if ((pSource_zip->m_pState->m_zip64) && (!pZip->m_pState->m_zip64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Get pointer to the source central dir header and crack it */ - if (NULL == (pSrc_central_header = mz_zip_get_cdh(pSource_zip, src_file_index))) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_SIG_OFS) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - src_filename_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_FILENAME_LEN_OFS); - src_comment_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_COMMENT_LEN_OFS); - src_ext_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS); - src_central_dir_following_data_size = src_filename_len + src_ext_len + src_comment_len; - - /* TODO: We don't support central dir's >= MZ_UINT32_MAX bytes right now (+32 fudge factor in case we need to add more extra data) */ - if ((pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_central_dir_following_data_size + 32) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); - - if (!pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - /* TODO: Our zip64 support still has some 32-bit limits that may not be worth fixing. */ - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - - if (!mz_zip_file_stat_internal(pSource_zip, src_file_index, pSrc_central_header, &src_file_stat, NULL)) - return MZ_FALSE; - - cur_src_file_ofs = src_file_stat.m_local_header_ofs; - cur_dst_file_ofs = pZip->m_archive_size; - - /* Read the source archive's local dir header */ - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - cur_src_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE; - - /* Compute the total size we need to copy (filename+extra data+compressed data) */ - local_header_filename_size = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS); - local_header_extra_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - local_header_comp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS); - local_header_uncomp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS); - src_archive_bytes_remaining = local_header_filename_size + local_header_extra_len + src_file_stat.m_comp_size; - - /* Try to find a zip64 extended information field */ - if ((local_header_extra_len) && ((local_header_comp_size == MZ_UINT32_MAX) || (local_header_uncomp_size == MZ_UINT32_MAX))) - { - mz_zip_array file_data_array; - const mz_uint8 *pExtra_data; - mz_uint32 extra_size_remaining = local_header_extra_len; - - mz_zip_array_init(&file_data_array, 1); - if (!mz_zip_array_resize(pZip, &file_data_array, local_header_extra_len, MZ_FALSE)) - { - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, src_file_stat.m_local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_size, file_data_array.m_p, local_header_extra_len) != local_header_extra_len) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - - pExtra_data = (const mz_uint8 *)file_data_array.m_p; - - do - { - mz_uint32 field_id, field_data_size, field_total_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - field_total_size = field_data_size + sizeof(mz_uint16) * 2; - - if (field_total_size > extra_size_remaining) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - const mz_uint8 *pSrc_field_data = pExtra_data + sizeof(mz_uint32); - - if (field_data_size < sizeof(mz_uint64) * 2) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - local_header_uncomp_size = MZ_READ_LE64(pSrc_field_data); - local_header_comp_size = MZ_READ_LE64(pSrc_field_data + sizeof(mz_uint64)); /* may be 0 if there's a descriptor */ - - found_zip64_ext_data_in_ldir = MZ_TRUE; - break; - } - - pExtra_data += field_total_size; - extra_size_remaining -= field_total_size; - } while (extra_size_remaining); - - mz_zip_array_clear(pZip, &file_data_array); - } - - if (!pState->m_zip64) - { - /* Try to detect if the new archive will most likely wind up too big and bail early (+(sizeof(mz_uint32) * 4) is for the optional descriptor which could be present, +64 is a fudge factor). */ - /* We also check when the archive is finalized so this doesn't need to be perfect. */ - mz_uint64 approx_new_archive_size = cur_dst_file_ofs + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + src_archive_bytes_remaining + (sizeof(mz_uint32) * 4) + - pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_central_dir_following_data_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + 64; - - if (approx_new_archive_size >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - } - - /* Write dest archive padding */ - if (!mz_zip_writer_write_zeros(pZip, cur_dst_file_ofs, num_alignment_padding_bytes)) - return MZ_FALSE; - - cur_dst_file_ofs += num_alignment_padding_bytes; - - local_dir_header_ofs = cur_dst_file_ofs; - if (pZip->m_file_offset_alignment) - { - MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); - } - - /* The original zip's local header+ext block doesn't change, even with zip64, so we can just copy it over to the dest zip */ - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_dst_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE; - - /* Copy over the source archive bytes to the dest archive, also ensure we have enough buf space to handle optional data descriptor */ - if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)MZ_MAX(32U, MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, src_archive_bytes_remaining))))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - while (src_archive_bytes_remaining) - { - n = (mz_uint)MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, src_archive_bytes_remaining); - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, n) != n) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - cur_src_file_ofs += n; - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_dst_file_ofs += n; - - src_archive_bytes_remaining -= n; - } - - /* Now deal with the optional data descriptor */ - bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS); - if (bit_flags & 8) - { - /* Copy data descriptor */ - if ((pSource_zip->m_pState->m_zip64) || (found_zip64_ext_data_in_ldir)) - { - /* src is zip64, dest must be zip64 */ - - /* name uint32_t's */ - /* id 1 (optional in zip64?) */ - /* crc 1 */ - /* comp_size 2 */ - /* uncomp_size 2 */ - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, (sizeof(mz_uint32) * 6)) != (sizeof(mz_uint32) * 6)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - - n = sizeof(mz_uint32) * ((MZ_READ_LE32(pBuf) == MZ_ZIP_DATA_DESCRIPTOR_ID) ? 6 : 5); - } - else - { - /* src is NOT zip64 */ - mz_bool has_id; - - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, sizeof(mz_uint32) * 4) != sizeof(mz_uint32) * 4) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - - has_id = (MZ_READ_LE32(pBuf) == MZ_ZIP_DATA_DESCRIPTOR_ID); - - if (pZip->m_pState->m_zip64) - { - /* dest is zip64, so upgrade the data descriptor */ - const mz_uint32 *pSrc_descriptor = (const mz_uint32 *)((const mz_uint8 *)pBuf + (has_id ? sizeof(mz_uint32) : 0)); - const mz_uint32 src_crc32 = pSrc_descriptor[0]; - const mz_uint64 src_comp_size = pSrc_descriptor[1]; - const mz_uint64 src_uncomp_size = pSrc_descriptor[2]; - - mz_write_le32((mz_uint8 *)pBuf, MZ_ZIP_DATA_DESCRIPTOR_ID); - mz_write_le32((mz_uint8 *)pBuf + sizeof(mz_uint32) * 1, src_crc32); - mz_write_le64((mz_uint8 *)pBuf + sizeof(mz_uint32) * 2, src_comp_size); - mz_write_le64((mz_uint8 *)pBuf + sizeof(mz_uint32) * 4, src_uncomp_size); - - n = sizeof(mz_uint32) * 6; - } - else - { - /* dest is NOT zip64, just copy it as-is */ - n = sizeof(mz_uint32) * (has_id ? 4 : 3); - } - } - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_src_file_ofs += n; - cur_dst_file_ofs += n; - } - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - - /* Finally, add the new central dir header */ - orig_central_dir_size = pState->m_central_dir.m_size; - - memcpy(new_central_header, pSrc_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE); - - if (pState->m_zip64) - { - /* This is the painful part: We need to write a new central dir header + ext block with updated zip64 fields, and ensure the old fields (if any) are not included. */ - const mz_uint8 *pSrc_ext = pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_filename_len; - mz_zip_array new_ext_block; - - mz_zip_array_init(&new_ext_block, sizeof(mz_uint8)); - - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, MZ_UINT32_MAX); - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, MZ_UINT32_MAX); - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, MZ_UINT32_MAX); - - if (!mz_zip_writer_update_zip64_extension_block(&new_ext_block, pZip, pSrc_ext, src_ext_len, &src_file_stat.m_comp_size, &src_file_stat.m_uncomp_size, &local_dir_header_ofs, NULL)) - { - mz_zip_array_clear(pZip, &new_ext_block); - return MZ_FALSE; - } - - MZ_WRITE_LE16(new_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS, new_ext_block.m_size); - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) - { - mz_zip_array_clear(pZip, &new_ext_block); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, src_filename_len)) - { - mz_zip_array_clear(pZip, &new_ext_block); - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_ext_block.m_p, new_ext_block.m_size)) - { - mz_zip_array_clear(pZip, &new_ext_block); - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_filename_len + src_ext_len, src_comment_len)) - { - mz_zip_array_clear(pZip, &new_ext_block); - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - mz_zip_array_clear(pZip, &new_ext_block); - } - else - { - /* sanity checks */ - if (cur_dst_file_ofs > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - if (local_dir_header_ofs >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, local_dir_header_ofs); - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, src_central_dir_following_data_size)) - { - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - } - - /* This shouldn't trigger unless we screwed up during the initial sanity checks */ - if (pState->m_central_dir.m_size >= MZ_UINT32_MAX) - { - /* TODO: Support central dirs >= 32-bits in size */ - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - } - - n = (mz_uint32)orig_central_dir_size; - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &n, 1)) - { - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - pZip->m_total_files++; - pZip->m_archive_size = cur_dst_file_ofs; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip) -{ - mz_zip_internal_state *pState; - mz_uint64 central_dir_ofs, central_dir_size; - mz_uint8 hdr[256]; - - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - if (pState->m_zip64) - { - if ((pZip->m_total_files > MZ_UINT32_MAX) || (pState->m_central_dir.m_size >= MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if ((pZip->m_total_files > MZ_UINT16_MAX) || ((pZip->m_archive_size + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - - central_dir_ofs = 0; - central_dir_size = 0; - if (pZip->m_total_files) - { - /* Write central directory */ - central_dir_ofs = pZip->m_archive_size; - central_dir_size = pState->m_central_dir.m_size; - pZip->m_central_directory_file_ofs = central_dir_ofs; - if (pZip->m_pWrite(pZip->m_pIO_opaque, central_dir_ofs, pState->m_central_dir.m_p, (size_t)central_dir_size) != central_dir_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - pZip->m_archive_size += central_dir_size; - } - - if (pState->m_zip64) - { - /* Write zip64 end of central directory header */ - mz_uint64 rel_ofs_to_zip64_ecdr = pZip->m_archive_size; - - MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDH_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - sizeof(mz_uint32) - sizeof(mz_uint64)); - MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS, 0x031E); /* TODO: always Unix */ - MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_NEEDED_OFS, 0x002D); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, pZip->m_total_files); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS, pZip->m_total_files); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_SIZE_OFS, central_dir_size); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_OFS_OFS, central_dir_ofs); - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE; - - /* Write zip64 end of central directory locator */ - MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS, rel_ofs_to_zip64_ecdr); - MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS, 1); - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) != MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE; - } - - /* Write end of central directory record */ - MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files)); - MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files)); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_SIZE_OFS, MZ_MIN(MZ_UINT32_MAX, central_dir_size)); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_OFS_OFS, MZ_MIN(MZ_UINT32_MAX, central_dir_ofs)); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - -#ifndef MINIZ_NO_STDIO - if ((pState->m_pFile) && (MZ_FFLUSH(pState->m_pFile) == EOF)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED); -#endif /* #ifndef MINIZ_NO_STDIO */ - - pZip->m_archive_size += MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE; - - pZip->m_zip_mode = MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED; - return MZ_TRUE; -} - -mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize) -{ - if ((!ppBuf) || (!pSize)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - *ppBuf = NULL; - *pSize = 0; - - if ((!pZip) || (!pZip->m_pState)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (pZip->m_pWrite != mz_zip_heap_write_func) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_writer_finalize_archive(pZip)) - return MZ_FALSE; - - *ppBuf = pZip->m_pState->m_pMem; - *pSize = pZip->m_pState->m_mem_size; - pZip->m_pState->m_pMem = NULL; - pZip->m_pState->m_mem_size = pZip->m_pState->m_mem_capacity = 0; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_end(mz_zip_archive *pZip) -{ - return mz_zip_writer_end_internal(pZip, MZ_TRUE); -} - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags) -{ - return mz_zip_add_mem_to_archive_file_in_place_v2(pZip_filename, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, NULL); -} - -mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr) -{ - mz_bool status, created_new_archive = MZ_FALSE; - mz_zip_archive zip_archive; - struct MZ_FILE_STAT_STRUCT file_stat; - mz_zip_error actual_err = MZ_ZIP_NO_ERROR; - - mz_zip_zero_struct(&zip_archive); - if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - - if ((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || ((comment_size) && (!pComment)) || ((level_and_flags & 0xF) > MZ_UBER_COMPRESSION)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - return MZ_FALSE; - } - - if (!mz_zip_writer_validate_archive_name(pArchive_name)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_FILENAME; - return MZ_FALSE; - } - - /* Important: The regular non-64 bit version of stat() can fail here if the file is very large, which could cause the archive to be overwritten. */ - /* So be sure to compile with _LARGEFILE64_SOURCE 1 */ - if (MZ_FILE_STAT(pZip_filename, &file_stat) != 0) - { - /* Create a new archive. */ - if (!mz_zip_writer_init_file_v2(&zip_archive, pZip_filename, 0, level_and_flags)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - return MZ_FALSE; - } - - created_new_archive = MZ_TRUE; - } - else - { - /* Append to an existing archive. */ - if (!mz_zip_reader_init_file_v2(&zip_archive, pZip_filename, level_and_flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY, 0, 0)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - return MZ_FALSE; - } - - if (!mz_zip_writer_init_from_reader_v2(&zip_archive, pZip_filename, level_and_flags)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - - mz_zip_reader_end_internal(&zip_archive, MZ_FALSE); - - return MZ_FALSE; - } - } - - status = mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, 0, 0); - actual_err = zip_archive.m_last_error; - - /* Always finalize, even if adding failed for some reason, so we have a valid central directory. (This may not always succeed, but we can try.) */ - if (!mz_zip_writer_finalize_archive(&zip_archive)) - { - if (!actual_err) - actual_err = zip_archive.m_last_error; - - status = MZ_FALSE; - } - - if (!mz_zip_writer_end_internal(&zip_archive, status)) - { - if (!actual_err) - actual_err = zip_archive.m_last_error; - - status = MZ_FALSE; - } - - if ((!status) && (created_new_archive)) - { - /* It's a new archive and something went wrong, so just delete it. */ - int ignoredStatus = MZ_DELETE_FILE(pZip_filename); - (void)ignoredStatus; - } - - if (pErr) - *pErr = actual_err; - - return status; -} - -void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr) -{ - mz_uint32 file_index; - mz_zip_archive zip_archive; - void *p = NULL; - - if (pSize) - *pSize = 0; - - if ((!pZip_filename) || (!pArchive_name)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - - return NULL; - } - - mz_zip_zero_struct(&zip_archive); - if (!mz_zip_reader_init_file_v2(&zip_archive, pZip_filename, flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY, 0, 0)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - - return NULL; - } - - if (mz_zip_reader_locate_file_v2(&zip_archive, pArchive_name, pComment, flags, &file_index)) - { - p = mz_zip_reader_extract_to_heap(&zip_archive, file_index, pSize, flags); - } - - mz_zip_reader_end_internal(&zip_archive, p != NULL); - - if (pErr) - *pErr = zip_archive.m_last_error; - - return p; -} - -void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags) -{ - return mz_zip_extract_archive_file_to_heap_v2(pZip_filename, pArchive_name, NULL, pSize, flags, NULL); -} - -#endif /* #ifndef MINIZ_NO_STDIO */ - -#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */ - -/* ------------------- Misc utils */ - -mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip) -{ - return pZip ? pZip->m_zip_mode : MZ_ZIP_MODE_INVALID; -} - -mz_zip_type mz_zip_get_type(mz_zip_archive *pZip) -{ - return pZip ? pZip->m_zip_type : MZ_ZIP_TYPE_INVALID; -} - -mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num) -{ - mz_zip_error prev_err; - - if (!pZip) - return MZ_ZIP_INVALID_PARAMETER; - - prev_err = pZip->m_last_error; - - pZip->m_last_error = err_num; - return prev_err; -} - -mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip) -{ - if (!pZip) - return MZ_ZIP_INVALID_PARAMETER; - - return pZip->m_last_error; -} - -mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip) -{ - return mz_zip_set_last_error(pZip, MZ_ZIP_NO_ERROR); -} - -mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip) -{ - mz_zip_error prev_err; - - if (!pZip) - return MZ_ZIP_INVALID_PARAMETER; - - prev_err = pZip->m_last_error; - - pZip->m_last_error = MZ_ZIP_NO_ERROR; - return prev_err; -} - -const char *mz_zip_get_error_string(mz_zip_error mz_err) -{ - switch (mz_err) - { - case MZ_ZIP_NO_ERROR: - return "no error"; - case MZ_ZIP_UNDEFINED_ERROR: - return "undefined error"; - case MZ_ZIP_TOO_MANY_FILES: - return "too many files"; - case MZ_ZIP_FILE_TOO_LARGE: - return "file too large"; - case MZ_ZIP_UNSUPPORTED_METHOD: - return "unsupported method"; - case MZ_ZIP_UNSUPPORTED_ENCRYPTION: - return "unsupported encryption"; - case MZ_ZIP_UNSUPPORTED_FEATURE: - return "unsupported feature"; - case MZ_ZIP_FAILED_FINDING_CENTRAL_DIR: - return "failed finding central directory"; - case MZ_ZIP_NOT_AN_ARCHIVE: - return "not a ZIP archive"; - case MZ_ZIP_INVALID_HEADER_OR_CORRUPTED: - return "invalid header or archive is corrupted"; - case MZ_ZIP_UNSUPPORTED_MULTIDISK: - return "unsupported multidisk archive"; - case MZ_ZIP_DECOMPRESSION_FAILED: - return "decompression failed or archive is corrupted"; - case MZ_ZIP_COMPRESSION_FAILED: - return "compression failed"; - case MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE: - return "unexpected decompressed size"; - case MZ_ZIP_CRC_CHECK_FAILED: - return "CRC-32 check failed"; - case MZ_ZIP_UNSUPPORTED_CDIR_SIZE: - return "unsupported central directory size"; - case MZ_ZIP_ALLOC_FAILED: - return "allocation failed"; - case MZ_ZIP_FILE_OPEN_FAILED: - return "file open failed"; - case MZ_ZIP_FILE_CREATE_FAILED: - return "file create failed"; - case MZ_ZIP_FILE_WRITE_FAILED: - return "file write failed"; - case MZ_ZIP_FILE_READ_FAILED: - return "file read failed"; - case MZ_ZIP_FILE_CLOSE_FAILED: - return "file close failed"; - case MZ_ZIP_FILE_SEEK_FAILED: - return "file seek failed"; - case MZ_ZIP_FILE_STAT_FAILED: - return "file stat failed"; - case MZ_ZIP_INVALID_PARAMETER: - return "invalid parameter"; - case MZ_ZIP_INVALID_FILENAME: - return "invalid filename"; - case MZ_ZIP_BUF_TOO_SMALL: - return "buffer too small"; - case MZ_ZIP_INTERNAL_ERROR: - return "internal error"; - case MZ_ZIP_FILE_NOT_FOUND: - return "file not found"; - case MZ_ZIP_ARCHIVE_TOO_LARGE: - return "archive is too large"; - case MZ_ZIP_VALIDATION_FAILED: - return "validation failed"; - case MZ_ZIP_WRITE_CALLBACK_FAILED: - return "write calledback failed"; - default: - break; - } - - return "unknown error"; -} - -/* Note: Just because the archive is not zip64 doesn't necessarily mean it doesn't have Zip64 extended information extra field, argh. */ -mz_bool mz_zip_is_zip64(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return MZ_FALSE; - - return pZip->m_pState->m_zip64; -} - -size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return 0; - - return pZip->m_pState->m_central_dir.m_size; -} - -mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip) -{ - return pZip ? pZip->m_total_files : 0; -} - -mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip) -{ - if (!pZip) - return 0; - return pZip->m_archive_size; -} - -mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return 0; - return pZip->m_pState->m_file_archive_start_ofs; -} - -MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return 0; - return pZip->m_pState->m_pFile; -} - -size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n) -{ - if ((!pZip) || (!pZip->m_pState) || (!pBuf) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - return pZip->m_pRead(pZip->m_pIO_opaque, file_ofs, pBuf, n); -} - -mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size) -{ - mz_uint n; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - if (filename_buf_size) - pFilename[0] = '\0'; - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return 0; - } - n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - if (filename_buf_size) - { - n = MZ_MIN(n, filename_buf_size - 1); - memcpy(pFilename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); - pFilename[n] = '\0'; - } - return n + 1; -} - -mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat) -{ - return mz_zip_file_stat_internal(pZip, file_index, mz_zip_get_cdh(pZip, file_index), pStat, NULL); -} - -mz_bool mz_zip_end(mz_zip_archive *pZip) -{ - if (!pZip) - return MZ_FALSE; - - if (pZip->m_zip_mode == MZ_ZIP_MODE_READING) - return mz_zip_reader_end(pZip); -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS - else if ((pZip->m_zip_mode == MZ_ZIP_MODE_WRITING) || (pZip->m_zip_mode == MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED)) - return mz_zip_writer_end(pZip); -#endif - - return MZ_FALSE; -} - -#ifdef __cplusplus -} -#endif - -#endif /*#ifndef MINIZ_NO_ARCHIVE_APIS*/ diff --git a/contrib/lokinet-bootstrap-winnt/zpipe.c b/contrib/lokinet-bootstrap-winnt/zpipe.c deleted file mode 100644 index 75b13c10a..000000000 --- a/contrib/lokinet-bootstrap-winnt/zpipe.c +++ /dev/null @@ -1,209 +0,0 @@ -/* zpipe.c: example of proper use of zlib's inflate() and deflate() - Not copyrighted -- provided to the public domain - Version 1.4 11 December 2005 Mark Adler */ - - /* Version history: - 1.0 30 Oct 2004 First version - 1.1 8 Nov 2004 Add void casting for unused return values - Use switch statement for inflate() return values - 1.2 9 Nov 2004 Add assertions to document zlib guarantees - 1.3 6 Apr 2005 Remove incorrect assertion in inf() - 1.4 11 Dec 2005 Add hack to avoid MSDOS end-of-line conversions - Avoid some compiler warnings for input and output buffers - */ - -#include -#include -#include -#include "miniz.h" - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#define CHUNK 16384 - - /* Compress from file source to file dest until EOF on source. - def() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_STREAM_ERROR if an invalid compression - level is supplied, Z_VERSION_ERROR if the version of zlib.h and the - version of the library linked do not match, or Z_ERRNO if there is - an error reading or writing the files. */ -int def(FILE *source, FILE *dest, int level) -{ - int ret, flush; - unsigned have; - z_stream strm; - unsigned char in[CHUNK];unsigned char out[CHUNK]; - - /* allocate deflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = deflateInit(&strm, level); - if (ret != Z_OK) - return ret; - - /* compress until end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - flush = feof(source) ? Z_FINISH : Z_NO_FLUSH; - strm.next_in = in; - - /* run deflate() on input until output buffer not full, finish - compression if all of source has been read in */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = deflate(&strm, flush); /* no bad return value */ - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - assert(strm.avail_in == 0); /* all input will be used */ - - /* done when last data in file processed */ - } while (flush != Z_FINISH); - assert(ret == Z_STREAM_END); /* stream will be complete */ - - /* clean up and return */ - (void)deflateEnd(&strm); - return Z_OK; -} - -/* Decompress from file source to file dest until stream ends or EOF. - inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_DATA_ERROR if the deflate data is - invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and - the version of the library linked do not match, or Z_ERRNO if there - is an error reading or writing the files. */ -int inf(FILE *source, FILE *dest) -{ - int ret; - unsigned have; - z_stream strm; - unsigned char in[CHUNK]; - unsigned char out[CHUNK]; - - /* allocate inflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); - if (ret != Z_OK) - return ret; - - /* decompress until deflate stream ends or end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - if (strm.avail_in == 0) - break; - strm.next_in = in; - - /* run inflate() on input until output buffer not full */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - switch (ret) { - case Z_NEED_DICT: - ret = Z_DATA_ERROR; /* and fall through */ - case Z_DATA_ERROR: - case Z_MEM_ERROR: - (void)inflateEnd(&strm); - return ret; - } - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - - /* done when inflate() says it's done */ - } while (ret != Z_STREAM_END); - - /* clean up and return */ - (void)inflateEnd(&strm); - return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR; -} - -/* report a zlib or i/o error */ -void zerr(int ret) -{ - fputs("zpipe: ", stderr); - switch (ret) { - case Z_ERRNO: - if (ferror(stdin)) - fputs("error reading stdin\n", stderr); - if (ferror(stdout)) - fputs("error writing stdout\n", stderr); - break; - case Z_STREAM_ERROR: - fputs("invalid compression level\n", stderr); - break; - case Z_DATA_ERROR: - fputs("invalid or incomplete deflate data\n", stderr); - break; - case Z_MEM_ERROR: - fputs("out of memory\n", stderr); - break; - case Z_VERSION_ERROR: - fputs("zlib version mismatch!\n", stderr); - } -} - -/* compress or decompress from stdin to stdout */ -int main(int argc, char **argv) -{ - int ret; - - /* avoid end-of-line conversions */ - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - - /* do compression if no arguments */ - /* Warning: Not compatible with plain libz, dial it back down to - * 9 if this is required, uber-level is 10 - * since we have everything crammed in miniz, we don't depend on - * libz at all. - */ - if (argc == 1) { - ret = def(stdin, stdout, MZ_UBER_COMPRESSION); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* do decompression if -d specified */ - else if (argc == 2 && strcmp(argv[1], "-d") == 0) { - ret = inf(stdin, stdout); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* otherwise, report usage */ - else { - fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr); - return 1; - } -} \ No newline at end of file From 98284ad6e66c992991473771b307c1e2f8583447 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 17:05:26 -0500 Subject: [PATCH 21/38] build mbedtls from source JIT --- win32-setup/.gitignore | 2 + win32-setup/Makefile | 15 ++- win32-setup/mbedtls-win32.patch | 205 ++++++++++++++++++++++++++++++++ 3 files changed, 220 insertions(+), 2 deletions(-) create mode 100644 win32-setup/.gitignore create mode 100644 win32-setup/mbedtls-win32.patch diff --git a/win32-setup/.gitignore b/win32-setup/.gitignore new file mode 100644 index 000000000..8186f730d --- /dev/null +++ b/win32-setup/.gitignore @@ -0,0 +1,2 @@ +mbedtls*.tgz* +mbedtls-*/ \ No newline at end of file diff --git a/win32-setup/Makefile b/win32-setup/Makefile index ef3412a62..b20f86230 100644 --- a/win32-setup/Makefile +++ b/win32-setup/Makefile @@ -2,13 +2,24 @@ all: regdbhelper.dll lokinet-bootstrap.exe +CC=i686-w64-mingw32-gcc +CXX=i686-w64-mingw32-g++ +CFLAGS=-Ofast -march=nocona -mfpmath=sse +LIBS=-lws2_32 + default: all regdbhelper.dll: i686-w64-mingw32-gcc regdb_helper.c -o $@ -shared -Os -s -lokinet-bootstrap.exe: - wget https://snowlight.net/loki/win32-dist/lokinet-bootstrap.exe +mbedtls: + wget https://tls.mbed.org/download/mbedtls-2.16.3-apache.tgz + tar xvf mbedtls-2.16.3-apache.tgz + patch -p0 -d mbedtls-2.16.3 < mbedtls-win32.patch + $(MAKE) -C mbedtls-2.16.3 CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" LDFLAGS=$(LIBS) + +#lokinet-bootstrap.exe: +# wget https://snowlight.net/loki/win32-dist/lokinet-bootstrap.exe clean: rm *.dll *.exe diff --git a/win32-setup/mbedtls-win32.patch b/win32-setup/mbedtls-win32.patch new file mode 100644 index 000000000..835454453 --- /dev/null +++ b/win32-setup/mbedtls-win32.patch @@ -0,0 +1,205 @@ +diff -ruN include/mbedtls/aesni.h include/mbedtls/aesni.h +--- include/mbedtls/aesni.h 2018-03-16 11:25:12.000000000 -0500 ++++ include/mbedtls/aesni.h 2018-04-17 15:47:59.320514100 -0500 +@@ -26,17 +26,16 @@ + + #include "aes.h" + ++/* ++ * despair: This code appears to be 32-bit clean. Remove the CPP macros ++ * that restrict usage to AMD64 and EM64T processors. ++ * Obviously, you still need to have this insn set available in order to ++ * use it in either of protected or long mode anyway. ++ */ ++ + #define MBEDTLS_AESNI_AES 0x02000000u + #define MBEDTLS_AESNI_CLMUL 0x00000002u + +-#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && \ +- ( defined(__amd64__) || defined(__x86_64__) ) && \ +- ! defined(MBEDTLS_HAVE_X86_64) +-#define MBEDTLS_HAVE_X86_64 +-#endif +- +-#if defined(MBEDTLS_HAVE_X86_64) +- + #ifdef __cplusplus + extern "C" { + #endif +@@ -107,6 +106,4 @@ + } + #endif + +-#endif /* MBEDTLS_HAVE_X86_64 */ +- + #endif /* MBEDTLS_AESNI_H */ +diff -ruN include/mbedtls/bn_mul.h include/mbedtls/bn_mul.h +--- include/mbedtls/bn_mul.h 2018-03-16 11:25:12.000000000 -0500 ++++ include/mbedtls/bn_mul.h 2018-04-17 15:42:09.045117300 -0500 +@@ -754,7 +754,9 @@ + #if defined(MBEDTLS_HAVE_SSE2) + + #define EMIT __asm _emit +- ++/* Because the Visual C++ inline assembler STILL does ++ not support MMX insns! reeeeee (old -GM flag no longer exists) ++ */ + #define MULADDC_HUIT \ + EMIT 0x0F EMIT 0x6E EMIT 0xC9 \ + EMIT 0x0F EMIT 0x6E EMIT 0xC3 \ +diff -ruN include/mbedtls/config.h include/mbedtls/config.h +--- include/mbedtls/config.h 2018-03-16 11:25:12.000000000 -0500 ++++ include/mbedtls/config.h 2018-04-17 17:27:18.350938700 -0500 +@@ -91,7 +91,7 @@ + * + * Uncomment if the CPU supports SSE2 (IA-32 specific). + */ +-//#define MBEDTLS_HAVE_SSE2 ++#define MBEDTLS_HAVE_SSE2 + + /** + * \def MBEDTLS_HAVE_TIME +@@ -1571,7 +1571,7 @@ + * Module: library/aesni.c + * Caller: library/aes.c + * +- * Requires: MBEDTLS_HAVE_ASM ++ * Requires: None. Enable only for i386 or AMD64 targets only! -despair + * + * This modules adds support for the AES-NI instructions on x86-64 + */ +@@ -1850,7 +1850,7 @@ + * Requires: MBEDTLS_AES_C or MBEDTLS_DES_C + * + */ +-//#define MBEDTLS_CMAC_C ++#define MBEDTLS_CMAC_C + + /** + * \def MBEDTLS_CTR_DRBG_C +@@ -2055,7 +2055,7 @@ + * + * Uncomment to enable the HAVEGE random generator. + */ +-//#define MBEDTLS_HAVEGE_C ++#define MBEDTLS_HAVEGE_C + + /** + * \def MBEDTLS_HMAC_DRBG_C +diff -ruN library/aes.c library/aes.c +--- library/aes.c 2018-03-16 11:25:12.000000000 -0500 ++++ library/aes.c 2018-04-17 16:51:37.098413400 -0500 +@@ -514,7 +514,7 @@ + #endif + ctx->rk = RK = ctx->buf; + +-#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) ++#if defined(MBEDTLS_AESNI_C) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) + return( mbedtls_aesni_setkey_enc( (unsigned char *) ctx->rk, key, keybits ) ); + #endif +@@ -621,7 +621,7 @@ + + ctx->nr = cty.nr; + +-#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) ++#if defined(MBEDTLS_AESNI_C) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) + { + mbedtls_aesni_inverse_key( (unsigned char *) ctx->rk, +@@ -1016,7 +1016,7 @@ + AES_VALIDATE_RET( mode == MBEDTLS_AES_ENCRYPT || + mode == MBEDTLS_AES_DECRYPT ); + +-#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) ++#if defined(MBEDTLS_AESNI_C) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_AES ) ) + return( mbedtls_aesni_crypt_ecb( ctx, mode, input, output ) ); + #endif +diff -ruN library/aesni.c library/aesni.c +--- library/aesni.c 2018-03-16 11:25:12.000000000 -0500 ++++ library/aesni.c 2018-04-17 16:09:26.050605000 -0500 +@@ -30,7 +30,16 @@ + #include MBEDTLS_CONFIG_FILE + #endif + +-#if defined(MBEDTLS_AESNI_C) ++ ++/* ++ * despair: This code appears to be 32-bit clean. Remove the CPP macros ++ * that restrict usage to AMD64 and EM64T processors. ++ * Obviously, you still need to have this insn set available in order to ++ * use it in either of protected or long mode anyway. ++ * GCC or Clang only, no MSVC here, sorry. (Must pass -march=core2 or later ++ * if your compiler's default is anything older or generic.) ++ */ ++#if defined(MBEDTLS_AESNI_C) && !defined(_MSC_VER) + + #include "mbedtls/aesni.h" + +@@ -40,8 +49,6 @@ + #define asm __asm + #endif + +-#if defined(MBEDTLS_HAVE_X86_64) +- + /* + * AES-NI support detection routine + */ +@@ -459,6 +466,4 @@ + return( 0 ); + } + +-#endif /* MBEDTLS_HAVE_X86_64 */ +- + #endif /* MBEDTLS_AESNI_C */ +diff -ruN library/entropy_poll.c library/entropy_poll.c +--- library/entropy_poll.c 2018-03-16 11:25:12.000000000 -0500 ++++ library/entropy_poll.c 2018-04-17 15:52:13.013004200 -0500 +@@ -56,6 +56,12 @@ + #include + #include + ++/* ++ * WARNING(despair): The next release of PolarSSL will remove the existing codepaths ++ * to enable Windows RT and UWP app support. This also breaks NT 5.x and early Longhorn. ++ * ++ * TODO(despair): create CPP macro to switch between old and new CAPI codepaths ++ */ + int mbedtls_platform_entropy_poll( void *data, unsigned char *output, size_t len, + size_t *olen ) + { +diff -ruN library/gcm.c library/gcm.c +--- library/gcm.c 2018-03-16 11:25:12.000000000 -0500 ++++ library/gcm.c 2018-04-17 16:53:18.630262400 -0500 +@@ -126,7 +126,7 @@ + ctx->HL[8] = vl; + ctx->HH[8] = vh; + +-#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) ++#if defined(MBEDTLS_AESNI_C) + /* With CLMUL support, we need only h, not the rest of the table */ + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_CLMUL ) ) + return( 0 ); +@@ -217,7 +217,7 @@ + unsigned char lo, hi, rem; + uint64_t zh, zl; + +-#if defined(MBEDTLS_AESNI_C) && defined(MBEDTLS_HAVE_X86_64) ++#if defined(MBEDTLS_AESNI_C) + if( mbedtls_aesni_has_support( MBEDTLS_AESNI_CLMUL ) ) { + unsigned char h[16]; + +diff -ruN library/net_sockets.c library/net_sockets.c +--- library/net_sockets.c 2018-03-16 11:25:12.000000000 -0500 ++++ library/net_sockets.c 2018-04-17 15:50:08.118440600 -0500 +@@ -51,7 +51,8 @@ + /* Enables getaddrinfo() & Co */ + #define _WIN32_WINNT 0x0501 + #include +- ++/* despair: re-enable Windows 2000/XP */ ++#include + #include + #include + From 9ca2c3582419a1b84d45350eec4fc2254fe634c9 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 18:23:50 -0500 Subject: [PATCH 22/38] replace custom bootstrap with curl to match all other platforms remove dead code --- libhttp/.gitignore | 9 - libhttp/COPYING | 17 - libhttp/Makefile | 62 - libhttp/README.md | 26 - libhttp/base64enc.c | 64 - libhttp/cacerts.c | 2227 ---------- libhttp/include/miniz.h | 1321 ------ libhttp/include/sysconf.h | 95 - libhttp/internal.c | 39 - libhttp/internal.h | 84 - libhttp/libhttp.c | 301 -- libhttp/libhttp.h | 59 - libhttp/miniz.c | 7564 --------------------------------- libhttp/uri.c | 138 - libhttp/zpipe.c | 209 - win32-setup/.gitignore | 6 +- win32-setup/Makefile | 20 +- win32-setup/curl-win32.patch | 82 + win32-setup/lokinet-win32.iss | 5 +- 19 files changed, 106 insertions(+), 12222 deletions(-) delete mode 100644 libhttp/.gitignore delete mode 100644 libhttp/COPYING delete mode 100644 libhttp/Makefile delete mode 100644 libhttp/README.md delete mode 100644 libhttp/base64enc.c delete mode 100644 libhttp/cacerts.c delete mode 100644 libhttp/include/miniz.h delete mode 100644 libhttp/include/sysconf.h delete mode 100644 libhttp/internal.c delete mode 100644 libhttp/internal.h delete mode 100644 libhttp/libhttp.c delete mode 100644 libhttp/libhttp.h delete mode 100644 libhttp/miniz.c delete mode 100644 libhttp/uri.c delete mode 100644 libhttp/zpipe.c create mode 100644 win32-setup/curl-win32.patch diff --git a/libhttp/.gitignore b/libhttp/.gitignore deleted file mode 100644 index 098bdada2..000000000 --- a/libhttp/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -*.o -mbedtls/ -*.a -*.dll -*.so -*.exe -cacert.pem -*.enc -*.bin* \ No newline at end of file diff --git a/libhttp/COPYING b/libhttp/COPYING deleted file mode 100644 index 184e964e2..000000000 --- a/libhttp/COPYING +++ /dev/null @@ -1,17 +0,0 @@ -Copyright (c)2018-2019 Rick V. All rights reserved. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not -claim that you wrote the original software. If you use this software -in a product, an acknowledgment in the product documentation would be -appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be -misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. diff --git a/libhttp/Makefile b/libhttp/Makefile deleted file mode 100644 index 00543c1e7..000000000 --- a/libhttp/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -# makefile for libhttp -# requires mbedtls to be installed somewhere, for both host and target systems -# requires wget to be installed for ca bundle download - -# to build: -# make prepare; make libhttp - -# set this beforehand if you use clang -# make sure to preset CFLAGS if you use non-ix86 platform -# or non-GNU-compat C compilation system -# Uncomment these if you're on a 32-bit Linux? -# CC = cc -# CFLAGS = -Ofast -march=nocona -mfpmath=sse - -# path to mbedtls headers/libs and system libs -# if you have local copies of libs in this folder, -# try LIBS=-L. (other stuff here) -# -# -lsocket -lnsl on Sun -# -lws2_32 on windows nt -#INCLUDE := -#LIBS := - -.PHONY: download prepare all default - -.c.o: - $(CC) $(INCLUDE) -fPIC -Iinclude $(CFLAGS) $< -c - -zpipe: zpipe.c miniz.c - $(CC) $(INCLUDE) -Iinclude $(CFLAGS) $^ -s -static -o $@ - -base64enc: base64enc.c - $(CC) $(INCLUDE) -Iinclude $(CFLAGS) $^ -s -static -o $@ -lmbedx509 -lmbedtls -lmbedcrypto $(LIBS) - -download: - wget -O ./cacert.pem https://curl.haxx.se/ca/cacert.pem - -# I *think* this only work with GNU sed... -prepare: zpipe base64enc download - ./zpipe < cacert.pem > data.enc - ./base64enc < data.enc > out.bin - sed -ie "s/.\{76\}/&\n/g" out.bin - sed -i 's/.*/\"&\"/g' out.bin - sed -i '38,2228d' cacerts.c - echo ';' >> out.bin - sed -i '37r out.bin' cacerts.c - -libhttp.dll: cacerts.o miniz.o libhttp.o uri.o internal.o - $(CC) -fPIC $(CFLAGS) $^ -s -shared -o $@ -static -lmbedx509 -lmbedtls -lmbedcrypto $(LIBS) - -libhttp.so: cacerts.o miniz.o libhttp.o uri.o internal.o - $(CC) $^ -fPIC $(CFLAGS) -shared -o $@ $(LIBS) -lmbedx509 -lmbedtls -lmbedcrypto $(SYS_LIBS) - -clean: - -@rm base64enc - -@rm zpipe - -@rm cacert.pem - -@rm data.enc - -@rm out.* - -@rm *.o - -@rm *.so - -@rm *.dll diff --git a/libhttp/README.md b/libhttp/README.md deleted file mode 100644 index c9ea0c7ff..000000000 --- a/libhttp/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# liblokiweb (libhttp) - -## Building - -### requirements - -- mbedtls 2.13.0 or later, for both host and target (if cross-compiling) -- wget for host (to download Netscape root certificate store from cURL website) -- Also included is a patch that can be applied to the mbedtls source to enable features like AES-NI in protected mode, plus some networking fixes for win32, see `../contrib/lokinet-bootstrap-winnt/mbedtls-win32.patch` - -build: - - $ make prepare; make libhttp.[so|dll] - -## Useful build-time variables - -- INCLUDE: path to mbedtls headers -- LIBS: path to mbedtls libraries -- SYS_LIBS: system-specific link libraries (`-lsocket -lnsl` on Sun systems, `-lws2_32` [or `-lwsock32` if IPv6 is disabled] on Windows) - -## Usage - -- include libhttp.h in your source -- link against libhttp.[so|dll] - --rick diff --git a/libhttp/base64enc.c b/libhttp/base64enc.c deleted file mode 100644 index 4bdcc1815..000000000 --- a/libhttp/base64enc.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*/ - -/* this is a tiny build-time utility that base64 encodes up to 512K - * of text/binary data from stdin. (On UNIX, we'd use GNU's [g]base64(1) - * to encode the stream. Can't guarantee that a windows user will have cygwin - * installed, so we bootstrap these at build-time instead.) - * - * here, it is used to encode the compressed zlib-stream of the - * Netscape root certificate trust store on behalf of the lokinet - * for NT bootstrap stubs. - */ - -#include -#include -#include -#include "sysconf.h" -#ifdef HAVE_SETMODE -# define SET_BINARY_MODE(handle) setmode(handle, O_BINARY) -#else -# define SET_BINARY_MODE(handle) ((void)0) -#endif -#include -#include - -main(argc, argv) -char** argv; -{ - int size,r, inl; - unsigned char in[524288]; - unsigned char out[1048576]; - unsigned char err[1024]; - memset(&in, 0, 524288); - memset(&out, 0, 1048576); - SET_BINARY_MODE(0); - /* Read up to 512K of data from stdin */ - inl = fread(in, 1, 524288, stdin); - r = mbedtls_base64_encode(out, 1048576, &size, in, inl); - if (r) - { - mbedtls_strerror(r, err, 1024); - printf("error: %s\n", err); - return r; - } - fprintf(stdout, "%s", out); - return 0; -} \ No newline at end of file diff --git a/libhttp/cacerts.c b/libhttp/cacerts.c deleted file mode 100644 index eeb4bcc94..000000000 --- a/libhttp/cacerts.c +++ /dev/null @@ -1,2227 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* Netscape CA certificate bundle, zipped, text encoded -* no functions here -* -* HTTPS only; why the hell would you serve semi-sensitive data over an -* unencrypted channel? In fact, the polarssl integration is intended to -* bypass limitations in the native TLS stack (no TLS 1.1+ on some older -* platforms, lack of high-encryption ciphersuites other than ARC4 or -* Triple-DES, etc) -* -rick -*/ - -#include -#include -#include - -#include "internal.h" - -const unsigned char ca_cert_store_encoded[] = -"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"; diff --git a/libhttp/include/miniz.h b/libhttp/include/miniz.h deleted file mode 100644 index 3f2a55d32..000000000 --- a/libhttp/include/miniz.h +++ /dev/null @@ -1,1321 +0,0 @@ -/* miniz.c 2.0.8 - public domain deflate/inflate, zlib-subset, ZIP reading/writing/appending, PNG writing - See "unlicense" statement at the end of this file. - Rich Geldreich , last updated Oct. 13, 2013 - Implements RFC 1950: http://www.ietf.org/rfc/rfc1950.txt and RFC 1951: http://www.ietf.org/rfc/rfc1951.txt - - Most API's defined in miniz.c are optional. For example, to disable the archive related functions just define - MINIZ_NO_ARCHIVE_APIS, or to get rid of all stdio usage define MINIZ_NO_STDIO (see the list below for more macros). - - * Low-level Deflate/Inflate implementation notes: - - Compression: Use the "tdefl" API's. The compressor supports raw, static, and dynamic blocks, lazy or - greedy parsing, match length filtering, RLE-only, and Huffman-only streams. It performs and compresses - approximately as well as zlib. - - Decompression: Use the "tinfl" API's. The entire decompressor is implemented as a single function - coroutine: see tinfl_decompress(). It supports decompression into a 32KB (or larger power of 2) wrapping buffer, or into a memory - block large enough to hold the entire file. - - The low-level tdefl/tinfl API's do not make any use of dynamic memory allocation. - - * zlib-style API notes: - - miniz.c implements a fairly large subset of zlib. There's enough functionality present for it to be a drop-in - zlib replacement in many apps: - The z_stream struct, optional memory allocation callbacks - deflateInit/deflateInit2/deflate/deflateReset/deflateEnd/deflateBound - inflateInit/inflateInit2/inflate/inflateEnd - compress, compress2, compressBound, uncompress - CRC-32, Adler-32 - Using modern, minimal code size, CPU cache friendly routines. - Supports raw deflate streams or standard zlib streams with adler-32 checking. - - Limitations: - The callback API's are not implemented yet. No support for gzip headers or zlib static dictionaries. - I've tried to closely emulate zlib's various flavors of stream flushing and return status codes, but - there are no guarantees that miniz.c pulls this off perfectly. - - * PNG writing: See the tdefl_write_image_to_png_file_in_memory() function, originally written by - Alex Evans. Supports 1-4 bytes/pixel images. - - * ZIP archive API notes: - - The ZIP archive API's where designed with simplicity and efficiency in mind, with just enough abstraction to - get the job done with minimal fuss. There are simple API's to retrieve file information, read files from - existing archives, create new archives, append new files to existing archives, or clone archive data from - one archive to another. It supports archives located in memory or the heap, on disk (using stdio.h), - or you can specify custom file read/write callbacks. - - - Archive reading: Just call this function to read a single file from a disk archive: - - void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, - size_t *pSize, mz_uint zip_flags); - - For more complex cases, use the "mz_zip_reader" functions. Upon opening an archive, the entire central - directory is located and read as-is into memory, and subsequent file access only occurs when reading individual files. - - - Archives file scanning: The simple way is to use this function to scan a loaded archive for a specific file: - - int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); - - The locate operation can optionally check file comments too, which (as one example) can be used to identify - multiple versions of the same file in an archive. This function uses a simple linear search through the central - directory, so it's not very fast. - - Alternately, you can iterate through all the files in an archive (using mz_zip_reader_get_num_files()) and - retrieve detailed info on each file by calling mz_zip_reader_file_stat(). - - - Archive creation: Use the "mz_zip_writer" functions. The ZIP writer immediately writes compressed file data - to disk and builds an exact image of the central directory in memory. The central directory image is written - all at once at the end of the archive file when the archive is finalized. - - The archive writer can optionally align each file's local header and file data to any power of 2 alignment, - which can be useful when the archive will be read from optical media. Also, the writer supports placing - arbitrary data blobs at the very beginning of ZIP archives. Archives written using either feature are still - readable by any ZIP tool. - - - Archive appending: The simple way to add a single file to an archive is to call this function: - - mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, - const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); - - The archive will be created if it doesn't already exist, otherwise it'll be appended to. - Note the appending is done in-place and is not an atomic operation, so if something goes wrong - during the operation it's possible the archive could be left without a central directory (although the local - file headers and file data will be fine, so the archive will be recoverable). - - For more complex archive modification scenarios: - 1. The safest way is to use a mz_zip_reader to read the existing archive, cloning only those bits you want to - preserve into a new archive using using the mz_zip_writer_add_from_zip_reader() function (which compiles the - compressed file data as-is). When you're done, delete the old archive and rename the newly written archive, and - you're done. This is safe but requires a bunch of temporary disk space or heap memory. - - 2. Or, you can convert an mz_zip_reader in-place to an mz_zip_writer using mz_zip_writer_init_from_reader(), - append new files as needed, then finalize the archive which will write an updated central directory to the - original archive. (This is basically what mz_zip_add_mem_to_archive_file_in_place() does.) There's a - possibility that the archive's central directory could be lost with this method if anything goes wrong, though. - - - ZIP archive support limitations: - No zip64 or spanning support. Extraction functions can only handle unencrypted, stored or deflated files. - Requires streams capable of seeking. - - * This is a header file library, like stb_image.c. To get only a header file, either cut and paste the - below header, or create miniz.h, #define MINIZ_HEADER_FILE_ONLY, and then include miniz.c from it. - - * Important: For best perf. be sure to customize the below macros for your target platform: - #define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 - #define MINIZ_LITTLE_ENDIAN 1 - #define MINIZ_HAS_64BIT_REGISTERS 1 - - * On platforms using glibc, Be sure to "#define _LARGEFILE64_SOURCE 1" before including miniz.c to ensure miniz - uses the 64-bit variants: fopen64(), stat64(), etc. Otherwise you won't be able to process large files - (i.e. 32-bit stat() fails for me on files > 0x7FFFFFFF bytes). -*/ -#pragma once - - - - - -/* Defines to completely disable specific portions of miniz.c: - If all macros here are defined the only functionality remaining will be CRC-32, adler-32, tinfl, and tdefl. */ - -/* Define MINIZ_NO_STDIO to disable all usage and any functions which rely on stdio for file I/O. */ -/*#define MINIZ_NO_STDIO */ - -/* If MINIZ_NO_TIME is specified then the ZIP archive functions will not be able to get the current time, or */ -/* get/set file times, and the C run-time funcs that get/set times won't be called. */ -/* The current downside is the times written to your archives will be from 1979. */ -/*#define MINIZ_NO_TIME */ - -/* Define MINIZ_NO_ARCHIVE_APIS to disable all ZIP archive API's. */ -#define MINIZ_NO_ARCHIVE_APIS - -/* Define MINIZ_NO_ARCHIVE_WRITING_APIS to disable all writing related ZIP archive API's. */ -#define MINIZ_NO_ARCHIVE_WRITING_APIS - -/* Define MINIZ_NO_ZLIB_APIS to remove all ZLIB-style compression/decompression API's. */ -/*#define MINIZ_NO_ZLIB_APIS */ - -/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAME to disable zlib names, to prevent conflicts against stock zlib. */ -/*#define MINIZ_NO_ZLIB_COMPATIBLE_NAMES */ - -/* Define MINIZ_NO_MALLOC to disable all calls to malloc, free, and realloc. - Note if MINIZ_NO_MALLOC is defined then the user must always provide custom user alloc/free/realloc - callbacks to the zlib and archive API's, and a few stand-alone helper API's which don't provide custom user - functions (such as tdefl_compress_mem_to_heap() and tinfl_decompress_mem_to_heap()) won't work. */ -/*#define MINIZ_NO_MALLOC */ - -#if defined(__TINYC__) && (defined(__linux) || defined(__linux__)) -/* TODO: Work around "error: include file 'sys\utime.h' when compiling with tcc on Linux */ -#define MINIZ_NO_TIME -#endif - -#include - -#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_ARCHIVE_APIS) -#include -#endif - -#if defined(_M_IX86) || defined(_M_X64) || defined(__i386__) || defined(__i386) || defined(__i486__) || defined(__i486) || defined(i386) || defined(__ia64__) || defined(__x86_64__) -/* MINIZ_X86_OR_X64_CPU is only used to help set the below macros. */ -#define MINIZ_X86_OR_X64_CPU 1 -#else -#define MINIZ_X86_OR_X64_CPU 0 -#endif - -#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || MINIZ_X86_OR_X64_CPU -/* Set MINIZ_LITTLE_ENDIAN to 1 if the processor is little endian. */ -#define MINIZ_LITTLE_ENDIAN 1 -#else -#define MINIZ_LITTLE_ENDIAN 0 -#endif - -#if MINIZ_X86_OR_X64_CPU -/* Set MINIZ_USE_UNALIGNED_LOADS_AND_STORES to 1 on CPU's that permit efficient integer loads and stores from unaligned addresses. */ -#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 1 -#else -#define MINIZ_USE_UNALIGNED_LOADS_AND_STORES 0 -#endif - -#if defined(_M_X64) || defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__) || defined(__ia64__) || defined(__x86_64__) -/* Set MINIZ_HAS_64BIT_REGISTERS to 1 if operations on 64-bit integers are reasonably fast (and don't involve compiler generated calls to helper functions). */ -#define MINIZ_HAS_64BIT_REGISTERS 1 -#else -#define MINIZ_HAS_64BIT_REGISTERS 0 -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- zlib-style API Definitions. */ - -/* For more compatibility with zlib, miniz.c uses unsigned long for some parameters/struct members. Beware: mz_ulong can be either 32 or 64-bits! */ -typedef unsigned long mz_ulong; - -/* mz_free() internally uses the MZ_FREE() macro (which by default calls free() unless you've modified the MZ_MALLOC macro) to release a block allocated from the heap. */ -void mz_free(void *p); - -#define MZ_ADLER32_INIT (1) -/* mz_adler32() returns the initial adler-32 value to use when called with ptr==NULL. */ -mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len); - -#define MZ_CRC32_INIT (0) -/* mz_crc32() returns the initial CRC-32 value to use when called with ptr==NULL. */ -mz_ulong mz_crc32(mz_ulong crc, const unsigned char *ptr, size_t buf_len); - -/* Compression strategies. */ -enum -{ - MZ_DEFAULT_STRATEGY = 0, - MZ_FILTERED = 1, - MZ_HUFFMAN_ONLY = 2, - MZ_RLE = 3, - MZ_FIXED = 4 -}; - -/* Method */ -#define MZ_DEFLATED 8 - -/* Heap allocation callbacks. -Note that mz_alloc_func parameter types purpsosely differ from zlib's: items/size is size_t, not unsigned long. */ -typedef void *(*mz_alloc_func)(void *opaque, size_t items, size_t size); -typedef void (*mz_free_func)(void *opaque, void *address); -typedef void *(*mz_realloc_func)(void *opaque, void *address, size_t items, size_t size); - -/* Compression levels: 0-9 are the standard zlib-style levels, 10 is best possible compression (not zlib compatible, and may be very slow), MZ_DEFAULT_COMPRESSION=MZ_DEFAULT_LEVEL. */ -enum -{ - MZ_NO_COMPRESSION = 0, - MZ_BEST_SPEED = 1, - MZ_BEST_COMPRESSION = 9, - MZ_UBER_COMPRESSION = 10, - MZ_DEFAULT_LEVEL = 6, - MZ_DEFAULT_COMPRESSION = -1 -}; - -#define MZ_VERSION "10.0.3" -#define MZ_VERNUM 0xA030 -#define MZ_VER_MAJOR 10 -#define MZ_VER_MINOR 0 -#define MZ_VER_REVISION 3 -#define MZ_VER_SUBREVISION 0 - -#ifndef MINIZ_NO_ZLIB_APIS - -/* Flush values. For typical usage you only need MZ_NO_FLUSH and MZ_FINISH. The other values are for advanced use (refer to the zlib docs). */ -enum -{ - MZ_NO_FLUSH = 0, - MZ_PARTIAL_FLUSH = 1, - MZ_SYNC_FLUSH = 2, - MZ_FULL_FLUSH = 3, - MZ_FINISH = 4, - MZ_BLOCK = 5 -}; - -/* Return status codes. MZ_PARAM_ERROR is non-standard. */ -enum -{ - MZ_OK = 0, - MZ_STREAM_END = 1, - MZ_NEED_DICT = 2, - MZ_ERRNO = -1, - MZ_STREAM_ERROR = -2, - MZ_DATA_ERROR = -3, - MZ_MEM_ERROR = -4, - MZ_BUF_ERROR = -5, - MZ_VERSION_ERROR = -6, - MZ_PARAM_ERROR = -10000 -}; - -/* Window bits */ -#define MZ_DEFAULT_WINDOW_BITS 15 - -struct mz_internal_state; - -/* Compression/decompression stream struct. */ -typedef struct mz_stream_s -{ - const unsigned char *next_in; /* pointer to next byte to read */ - unsigned int avail_in; /* number of bytes available at next_in */ - mz_ulong total_in; /* total number of bytes consumed so far */ - - unsigned char *next_out; /* pointer to next byte to write */ - unsigned int avail_out; /* number of bytes that can be written to next_out */ - mz_ulong total_out; /* total number of bytes produced so far */ - - char *msg; /* error msg (unused) */ - struct mz_internal_state *state; /* internal state, allocated by zalloc/zfree */ - - mz_alloc_func zalloc; /* optional heap allocation function (defaults to malloc) */ - mz_free_func zfree; /* optional heap free function (defaults to free) */ - void *opaque; /* heap alloc function user pointer */ - - int data_type; /* data_type (unused) */ - mz_ulong adler; /* adler32 of the source or uncompressed data */ - mz_ulong reserved; /* not used */ -} mz_stream; - -typedef mz_stream *mz_streamp; - -/* Returns the version string of miniz.c. */ -const char *mz_version(void); - -/* mz_deflateInit() initializes a compressor with default options: */ -/* Parameters: */ -/* pStream must point to an initialized mz_stream struct. */ -/* level must be between [MZ_NO_COMPRESSION, MZ_BEST_COMPRESSION]. */ -/* level 1 enables a specially optimized compression function that's been optimized purely for performance, not ratio. */ -/* (This special func. is currently only enabled when MINIZ_USE_UNALIGNED_LOADS_AND_STORES and MINIZ_LITTLE_ENDIAN are defined.) */ -/* Return values: */ -/* MZ_OK on success. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -/* MZ_PARAM_ERROR if the input parameters are bogus. */ -/* MZ_MEM_ERROR on out of memory. */ -int mz_deflateInit(mz_streamp pStream, int level); - -/* mz_deflateInit2() is like mz_deflate(), except with more control: */ -/* Additional parameters: */ -/* method must be MZ_DEFLATED */ -/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to wrap the deflate stream with zlib header/adler-32 footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate/no header or footer) */ -/* mem_level must be between [1, 9] (it's checked but ignored by miniz.c) */ -int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy); - -/* Quickly resets a compressor without having to reallocate anything. Same as calling mz_deflateEnd() followed by mz_deflateInit()/mz_deflateInit2(). */ -int mz_deflateReset(mz_streamp pStream); - -/* mz_deflate() compresses the input to output, consuming as much of the input and producing as much output as possible. */ -/* Parameters: */ -/* pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. */ -/* flush may be MZ_NO_FLUSH, MZ_PARTIAL_FLUSH/MZ_SYNC_FLUSH, MZ_FULL_FLUSH, or MZ_FINISH. */ -/* Return values: */ -/* MZ_OK on success (when flushing, or if more input is needed but not available, and/or there's more output to be written but the output buffer is full). */ -/* MZ_STREAM_END if all input has been consumed and all output bytes have been written. Don't call mz_deflate() on the stream anymore. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -/* MZ_PARAM_ERROR if one of the parameters is invalid. */ -/* MZ_BUF_ERROR if no forward progress is possible because the input and/or output buffers are empty. (Fill up the input buffer or free up some output space and try again.) */ -int mz_deflate(mz_streamp pStream, int flush); - -/* mz_deflateEnd() deinitializes a compressor: */ -/* Return values: */ -/* MZ_OK on success. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -int mz_deflateEnd(mz_streamp pStream); - -/* mz_deflateBound() returns a (very) conservative upper bound on the amount of data that could be generated by deflate(), assuming flush is set to only MZ_NO_FLUSH or MZ_FINISH. */ -mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len); - -/* Single-call compression functions mz_compress() and mz_compress2(): */ -/* Returns MZ_OK on success, or one of the error codes from mz_deflate() on failure. */ -int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len); -int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level); - -/* mz_compressBound() returns a (very) conservative upper bound on the amount of data that could be generated by calling mz_compress(). */ -mz_ulong mz_compressBound(mz_ulong source_len); - -/* Initializes a decompressor. */ -int mz_inflateInit(mz_streamp pStream); - -/* mz_inflateInit2() is like mz_inflateInit() with an additional option that controls the window size and whether or not the stream has been wrapped with a zlib header/footer: */ -/* window_bits must be MZ_DEFAULT_WINDOW_BITS (to parse zlib header/footer) or -MZ_DEFAULT_WINDOW_BITS (raw deflate). */ -int mz_inflateInit2(mz_streamp pStream, int window_bits); - -/* Decompresses the input stream to the output, consuming only as much of the input as needed, and writing as much to the output as possible. */ -/* Parameters: */ -/* pStream is the stream to read from and write to. You must initialize/update the next_in, avail_in, next_out, and avail_out members. */ -/* flush may be MZ_NO_FLUSH, MZ_SYNC_FLUSH, or MZ_FINISH. */ -/* On the first call, if flush is MZ_FINISH it's assumed the input and output buffers are both sized large enough to decompress the entire stream in a single call (this is slightly faster). */ -/* MZ_FINISH implies that there are no more source bytes available beside what's already in the input buffer, and that the output buffer is large enough to hold the rest of the decompressed data. */ -/* Return values: */ -/* MZ_OK on success. Either more input is needed but not available, and/or there's more output to be written but the output buffer is full. */ -/* MZ_STREAM_END if all needed input has been consumed and all output bytes have been written. For zlib streams, the adler-32 of the decompressed data has also been verified. */ -/* MZ_STREAM_ERROR if the stream is bogus. */ -/* MZ_DATA_ERROR if the deflate stream is invalid. */ -/* MZ_PARAM_ERROR if one of the parameters is invalid. */ -/* MZ_BUF_ERROR if no forward progress is possible because the input buffer is empty but the inflater needs more input to continue, or if the output buffer is not large enough. Call mz_inflate() again */ -/* with more input data, or with more room in the output buffer (except when using single call decompression, described above). */ -int mz_inflate(mz_streamp pStream, int flush); - -/* Deinitializes a decompressor. */ -int mz_inflateEnd(mz_streamp pStream); - -/* Single-call decompression. */ -/* Returns MZ_OK on success, or one of the error codes from mz_inflate() on failure. */ -int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len); - -/* Returns a string description of the specified error code, or NULL if the error code is invalid. */ -const char *mz_error(int err); - -/* Redefine zlib-compatible names to miniz equivalents, so miniz.c can be used as a drop-in replacement for the subset of zlib that miniz.c supports. */ -/* Define MINIZ_NO_ZLIB_COMPATIBLE_NAMES to disable zlib-compatibility if you use zlib in the same project. */ -#ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES -typedef unsigned char Byte; -typedef unsigned int uInt; -typedef mz_ulong uLong; -typedef Byte Bytef; -typedef uInt uIntf; -typedef char charf; -typedef int intf; -typedef void *voidpf; -typedef uLong uLongf; -typedef void *voidp; -typedef void *const voidpc; -#define Z_NULL 0 -#define Z_NO_FLUSH MZ_NO_FLUSH -#define Z_PARTIAL_FLUSH MZ_PARTIAL_FLUSH -#define Z_SYNC_FLUSH MZ_SYNC_FLUSH -#define Z_FULL_FLUSH MZ_FULL_FLUSH -#define Z_FINISH MZ_FINISH -#define Z_BLOCK MZ_BLOCK -#define Z_OK MZ_OK -#define Z_STREAM_END MZ_STREAM_END -#define Z_NEED_DICT MZ_NEED_DICT -#define Z_ERRNO MZ_ERRNO -#define Z_STREAM_ERROR MZ_STREAM_ERROR -#define Z_DATA_ERROR MZ_DATA_ERROR -#define Z_MEM_ERROR MZ_MEM_ERROR -#define Z_BUF_ERROR MZ_BUF_ERROR -#define Z_VERSION_ERROR MZ_VERSION_ERROR -#define Z_PARAM_ERROR MZ_PARAM_ERROR -#define Z_NO_COMPRESSION MZ_NO_COMPRESSION -#define Z_BEST_SPEED MZ_BEST_SPEED -#define Z_BEST_COMPRESSION MZ_BEST_COMPRESSION -#define Z_DEFAULT_COMPRESSION MZ_DEFAULT_COMPRESSION -#define Z_DEFAULT_STRATEGY MZ_DEFAULT_STRATEGY -#define Z_FILTERED MZ_FILTERED -#define Z_HUFFMAN_ONLY MZ_HUFFMAN_ONLY -#define Z_RLE MZ_RLE -#define Z_FIXED MZ_FIXED -#define Z_DEFLATED MZ_DEFLATED -#define Z_DEFAULT_WINDOW_BITS MZ_DEFAULT_WINDOW_BITS -#define alloc_func mz_alloc_func -#define free_func mz_free_func -#define internal_state mz_internal_state -#define z_stream mz_stream -#define deflateInit mz_deflateInit -#define deflateInit2 mz_deflateInit2 -#define deflateReset mz_deflateReset -#define deflate mz_deflate -#define deflateEnd mz_deflateEnd -#define deflateBound mz_deflateBound -#define compress mz_compress -#define compress2 mz_compress2 -#define compressBound mz_compressBound -#define inflateInit mz_inflateInit -#define inflateInit2 mz_inflateInit2 -#define inflate mz_inflate -#define inflateEnd mz_inflateEnd -#define uncompress mz_uncompress -#define crc32 mz_crc32 -#define adler32 mz_adler32 -#define MAX_WBITS 15 -#define MAX_MEM_LEVEL 9 -#define zError mz_error -#define ZLIB_VERSION MZ_VERSION -#define ZLIB_VERNUM MZ_VERNUM -#define ZLIB_VER_MAJOR MZ_VER_MAJOR -#define ZLIB_VER_MINOR MZ_VER_MINOR -#define ZLIB_VER_REVISION MZ_VER_REVISION -#define ZLIB_VER_SUBREVISION MZ_VER_SUBREVISION -#define zlibVersion mz_version -#define zlib_version mz_version() -#endif /* #ifndef MINIZ_NO_ZLIB_COMPATIBLE_NAMES */ - -#endif /* MINIZ_NO_ZLIB_APIS */ - -#ifdef __cplusplus -} -#endif -#pragma once -#include -#include -#include -#include - -/* ------------------- Types and macros */ -typedef unsigned char mz_uint8; -typedef signed short mz_int16; -typedef unsigned short mz_uint16; -typedef unsigned int mz_uint32; -typedef unsigned int mz_uint; -typedef int64_t mz_int64; -typedef uint64_t mz_uint64; -typedef int mz_bool; - -#define MZ_FALSE (0) -#define MZ_TRUE (1) - -/* Works around MSVC's spammy "warning C4127: conditional expression is constant" message. */ -#ifdef _MSC_VER -#define MZ_MACRO_END while (0, 0) -#else -#define MZ_MACRO_END while (0) -#endif - -#ifdef MINIZ_NO_STDIO -#define MZ_FILE void * -#else -#include -#define MZ_FILE FILE -#endif /* #ifdef MINIZ_NO_STDIO */ - -#ifdef MINIZ_NO_TIME -typedef struct mz_dummy_time_t_tag -{ - int m_dummy; -} mz_dummy_time_t; -#define MZ_TIME_T mz_dummy_time_t -#else -#define MZ_TIME_T time_t -#endif - -#define MZ_ASSERT(x) assert(x) - -#ifdef MINIZ_NO_MALLOC -#define MZ_MALLOC(x) NULL -#define MZ_FREE(x) (void)x, ((void)0) -#define MZ_REALLOC(p, x) NULL -#else -#define MZ_MALLOC(x) malloc(x) -#define MZ_FREE(x) free(x) -#define MZ_REALLOC(p, x) realloc(p, x) -#endif - -#define MZ_MAX(a, b) (((a) > (b)) ? (a) : (b)) -#define MZ_MIN(a, b) (((a) < (b)) ? (a) : (b)) -#define MZ_CLEAR_OBJ(obj) memset(&(obj), 0, sizeof(obj)) - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN -#define MZ_READ_LE16(p) *((const mz_uint16 *)(p)) -#define MZ_READ_LE32(p) *((const mz_uint32 *)(p)) -#else -#define MZ_READ_LE16(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U)) -#define MZ_READ_LE32(p) ((mz_uint32)(((const mz_uint8 *)(p))[0]) | ((mz_uint32)(((const mz_uint8 *)(p))[1]) << 8U) | ((mz_uint32)(((const mz_uint8 *)(p))[2]) << 16U) | ((mz_uint32)(((const mz_uint8 *)(p))[3]) << 24U)) -#endif - -#define MZ_READ_LE64(p) (((mz_uint64)MZ_READ_LE32(p)) | (((mz_uint64)MZ_READ_LE32((const mz_uint8 *)(p) + sizeof(mz_uint32))) << 32U)) - -#ifdef _MSC_VER -#define MZ_FORCEINLINE __forceinline -#elif defined(__GNUC__) -#define MZ_FORCEINLINE __inline__ __attribute__((__always_inline__)) -#else -#define MZ_FORCEINLINE inline -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern void *miniz_def_alloc_func(void *opaque, size_t items, size_t size); -extern void miniz_def_free_func(void *opaque, void *address); -extern void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size); - -#define MZ_UINT16_MAX (0xFFFFU) -#define MZ_UINT32_MAX (0xFFFFFFFFU) - -#ifdef __cplusplus -} -#endif -#pragma once - - -#ifdef __cplusplus -extern "C" { -#endif -/* ------------------- Low-level Compression API Definitions */ - -/* Set TDEFL_LESS_MEMORY to 1 to use less memory (compression will be slightly slower, and raw/dynamic blocks will be output more frequently). */ -#define TDEFL_LESS_MEMORY 0 - -/* tdefl_init() compression flags logically OR'd together (low 12 bits contain the max. number of probes per dictionary search): */ -/* TDEFL_DEFAULT_MAX_PROBES: The compressor defaults to 128 dictionary probes per dictionary search. 0=Huffman only, 1=Huffman+LZ (fastest/crap compression), 4095=Huffman+LZ (slowest/best compression). */ -enum -{ - TDEFL_HUFFMAN_ONLY = 0, - TDEFL_DEFAULT_MAX_PROBES = 128, - TDEFL_MAX_PROBES_MASK = 0xFFF -}; - -/* TDEFL_WRITE_ZLIB_HEADER: If set, the compressor outputs a zlib header before the deflate data, and the Adler-32 of the source data at the end. Otherwise, you'll get raw deflate data. */ -/* TDEFL_COMPUTE_ADLER32: Always compute the adler-32 of the input data (even when not writing zlib headers). */ -/* TDEFL_GREEDY_PARSING_FLAG: Set to use faster greedy parsing, instead of more efficient lazy parsing. */ -/* TDEFL_NONDETERMINISTIC_PARSING_FLAG: Enable to decrease the compressor's initialization time to the minimum, but the output may vary from run to run given the same input (depending on the contents of memory). */ -/* TDEFL_RLE_MATCHES: Only look for RLE matches (matches with a distance of 1) */ -/* TDEFL_FILTER_MATCHES: Discards matches <= 5 chars if enabled. */ -/* TDEFL_FORCE_ALL_STATIC_BLOCKS: Disable usage of optimized Huffman tables. */ -/* TDEFL_FORCE_ALL_RAW_BLOCKS: Only use raw (uncompressed) deflate blocks. */ -/* The low 12 bits are reserved to control the max # of hash probes per dictionary lookup (see TDEFL_MAX_PROBES_MASK). */ -enum -{ - TDEFL_WRITE_ZLIB_HEADER = 0x01000, - TDEFL_COMPUTE_ADLER32 = 0x02000, - TDEFL_GREEDY_PARSING_FLAG = 0x04000, - TDEFL_NONDETERMINISTIC_PARSING_FLAG = 0x08000, - TDEFL_RLE_MATCHES = 0x10000, - TDEFL_FILTER_MATCHES = 0x20000, - TDEFL_FORCE_ALL_STATIC_BLOCKS = 0x40000, - TDEFL_FORCE_ALL_RAW_BLOCKS = 0x80000 -}; - -/* High level compression functions: */ -/* tdefl_compress_mem_to_heap() compresses a block in memory to a heap block allocated via malloc(). */ -/* On entry: */ -/* pSrc_buf, src_buf_len: Pointer and size of source block to compress. */ -/* flags: The max match finder probes (default is 128) logically OR'd against the above flags. Higher probes are slower but improve compression. */ -/* On return: */ -/* Function returns a pointer to the compressed data, or NULL on failure. */ -/* *pOut_len will be set to the compressed data's size, which could be larger than src_buf_len on uncompressible data. */ -/* The caller must free() the returned block when it's no longer needed. */ -void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags); - -/* tdefl_compress_mem_to_mem() compresses a block in memory to another block in memory. */ -/* Returns 0 on failure. */ -size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags); - -/* Compresses an image to a compressed PNG file in memory. */ -/* On entry: */ -/* pImage, w, h, and num_chans describe the image to compress. num_chans may be 1, 2, 3, or 4. */ -/* The image pitch in bytes per scanline will be w*num_chans. The leftmost pixel on the top scanline is stored first in memory. */ -/* level may range from [0,10], use MZ_NO_COMPRESSION, MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc. or a decent default is MZ_DEFAULT_LEVEL */ -/* If flip is true, the image will be flipped on the Y axis (useful for OpenGL apps). */ -/* On return: */ -/* Function returns a pointer to the compressed data, or NULL on failure. */ -/* *pLen_out will be set to the size of the PNG image file. */ -/* The caller must mz_free() the returned heap block (which will typically be larger than *pLen_out) when it's no longer needed. */ -void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip); -void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out); - -/* Output stream interface. The compressor uses this interface to write compressed data. It'll typically be called TDEFL_OUT_BUF_SIZE at a time. */ -typedef mz_bool (*tdefl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser); - -/* tdefl_compress_mem_to_output() compresses a block to an output stream. The above helpers use this function internally. */ -mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); - -enum -{ - TDEFL_MAX_HUFF_TABLES = 3, - TDEFL_MAX_HUFF_SYMBOLS_0 = 288, - TDEFL_MAX_HUFF_SYMBOLS_1 = 32, - TDEFL_MAX_HUFF_SYMBOLS_2 = 19, - TDEFL_LZ_DICT_SIZE = 32768, - TDEFL_LZ_DICT_SIZE_MASK = TDEFL_LZ_DICT_SIZE - 1, - TDEFL_MIN_MATCH_LEN = 3, - TDEFL_MAX_MATCH_LEN = 258 -}; - -/* TDEFL_OUT_BUF_SIZE MUST be large enough to hold a single entire compressed output block (using static/fixed Huffman codes). */ -#if TDEFL_LESS_MEMORY -enum -{ - TDEFL_LZ_CODE_BUF_SIZE = 24 * 1024, - TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10, - TDEFL_MAX_HUFF_SYMBOLS = 288, - TDEFL_LZ_HASH_BITS = 12, - TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, - TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, - TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS -}; -#else -enum -{ - TDEFL_LZ_CODE_BUF_SIZE = 64 * 1024, - TDEFL_OUT_BUF_SIZE = (TDEFL_LZ_CODE_BUF_SIZE * 13) / 10, - TDEFL_MAX_HUFF_SYMBOLS = 288, - TDEFL_LZ_HASH_BITS = 15, - TDEFL_LEVEL1_HASH_SIZE_MASK = 4095, - TDEFL_LZ_HASH_SHIFT = (TDEFL_LZ_HASH_BITS + 2) / 3, - TDEFL_LZ_HASH_SIZE = 1 << TDEFL_LZ_HASH_BITS -}; -#endif - -/* The low-level tdefl functions below may be used directly if the above helper functions aren't flexible enough. The low-level functions don't make any heap allocations, unlike the above helper functions. */ -typedef enum { - TDEFL_STATUS_BAD_PARAM = -2, - TDEFL_STATUS_PUT_BUF_FAILED = -1, - TDEFL_STATUS_OKAY = 0, - TDEFL_STATUS_DONE = 1 -} tdefl_status; - -/* Must map to MZ_NO_FLUSH, MZ_SYNC_FLUSH, etc. enums */ -typedef enum { - TDEFL_NO_FLUSH = 0, - TDEFL_SYNC_FLUSH = 2, - TDEFL_FULL_FLUSH = 3, - TDEFL_FINISH = 4 -} tdefl_flush; - -/* tdefl's compression state structure. */ -typedef struct -{ - tdefl_put_buf_func_ptr m_pPut_buf_func; - void *m_pPut_buf_user; - mz_uint m_flags, m_max_probes[2]; - int m_greedy_parsing; - mz_uint m_adler32, m_lookahead_pos, m_lookahead_size, m_dict_size; - mz_uint8 *m_pLZ_code_buf, *m_pLZ_flags, *m_pOutput_buf, *m_pOutput_buf_end; - mz_uint m_num_flags_left, m_total_lz_bytes, m_lz_code_buf_dict_pos, m_bits_in, m_bit_buffer; - mz_uint m_saved_match_dist, m_saved_match_len, m_saved_lit, m_output_flush_ofs, m_output_flush_remaining, m_finished, m_block_index, m_wants_to_finish; - tdefl_status m_prev_return_status; - const void *m_pIn_buf; - void *m_pOut_buf; - size_t *m_pIn_buf_size, *m_pOut_buf_size; - tdefl_flush m_flush; - const mz_uint8 *m_pSrc; - size_t m_src_buf_left, m_out_buf_ofs; - mz_uint8 m_dict[TDEFL_LZ_DICT_SIZE + TDEFL_MAX_MATCH_LEN - 1]; - mz_uint16 m_huff_count[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]; - mz_uint16 m_huff_codes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]; - mz_uint8 m_huff_code_sizes[TDEFL_MAX_HUFF_TABLES][TDEFL_MAX_HUFF_SYMBOLS]; - mz_uint8 m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE]; - mz_uint16 m_next[TDEFL_LZ_DICT_SIZE]; - mz_uint16 m_hash[TDEFL_LZ_HASH_SIZE]; - mz_uint8 m_output_buf[TDEFL_OUT_BUF_SIZE]; -} tdefl_compressor; - -/* Initializes the compressor. */ -/* There is no corresponding deinit() function because the tdefl API's do not dynamically allocate memory. */ -/* pBut_buf_func: If NULL, output data will be supplied to the specified callback. In this case, the user should call the tdefl_compress_buffer() API for compression. */ -/* If pBut_buf_func is NULL the user should always call the tdefl_compress() API. */ -/* flags: See the above enums (TDEFL_HUFFMAN_ONLY, TDEFL_WRITE_ZLIB_HEADER, etc.) */ -tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); - -/* Compresses a block of data, consuming as much of the specified input buffer as possible, and writing as much compressed data to the specified output buffer as possible. */ -tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush); - -/* tdefl_compress_buffer() is only usable when the tdefl_init() is called with a non-NULL tdefl_put_buf_func_ptr. */ -/* tdefl_compress_buffer() always consumes the entire input buffer. */ -tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush); - -tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d); -mz_uint32 tdefl_get_adler32(tdefl_compressor *d); - -/* Create tdefl_compress() flags given zlib-style compression parameters. */ -/* level may range from [0,10] (where 10 is absolute max compression, but may be much slower on some files) */ -/* window_bits may be -15 (raw deflate) or 15 (zlib) */ -/* strategy may be either MZ_DEFAULT_STRATEGY, MZ_FILTERED, MZ_HUFFMAN_ONLY, MZ_RLE, or MZ_FIXED */ -mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy); - -/* Allocate the tdefl_compressor structure in C so that */ -/* non-C language bindings to tdefl_ API don't need to worry about */ -/* structure size and allocation mechanism. */ -tdefl_compressor *tdefl_compressor_alloc(); -void tdefl_compressor_free(tdefl_compressor *pComp); - -#ifdef __cplusplus -} -#endif -#pragma once - -/* ------------------- Low-level Decompression API Definitions */ - -#ifdef __cplusplus -extern "C" { -#endif -/* Decompression flags used by tinfl_decompress(). */ -/* TINFL_FLAG_PARSE_ZLIB_HEADER: If set, the input has a valid zlib header and ends with an adler32 checksum (it's a valid zlib stream). Otherwise, the input is a raw deflate stream. */ -/* TINFL_FLAG_HAS_MORE_INPUT: If set, there are more input bytes available beyond the end of the supplied input buffer. If clear, the input buffer contains all remaining input. */ -/* TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF: If set, the output buffer is large enough to hold the entire decompressed stream. If clear, the output buffer is at least the size of the dictionary (typically 32KB). */ -/* TINFL_FLAG_COMPUTE_ADLER32: Force adler-32 checksum computation of the decompressed bytes. */ -enum -{ - TINFL_FLAG_PARSE_ZLIB_HEADER = 1, - TINFL_FLAG_HAS_MORE_INPUT = 2, - TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF = 4, - TINFL_FLAG_COMPUTE_ADLER32 = 8 -}; - -/* High level decompression functions: */ -/* tinfl_decompress_mem_to_heap() decompresses a block in memory to a heap block allocated via malloc(). */ -/* On entry: */ -/* pSrc_buf, src_buf_len: Pointer and size of the Deflate or zlib source data to decompress. */ -/* On return: */ -/* Function returns a pointer to the decompressed data, or NULL on failure. */ -/* *pOut_len will be set to the decompressed data's size, which could be larger than src_buf_len on uncompressible data. */ -/* The caller must call mz_free() on the returned block when it's no longer needed. */ -void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags); - -/* tinfl_decompress_mem_to_mem() decompresses a block in memory to another block in memory. */ -/* Returns TINFL_DECOMPRESS_MEM_TO_MEM_FAILED on failure, or the number of bytes written on success. */ -#define TINFL_DECOMPRESS_MEM_TO_MEM_FAILED ((size_t)(-1)) -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags); - -/* tinfl_decompress_mem_to_callback() decompresses a block in memory to an internal 32KB buffer, and a user provided callback function will be called to flush the buffer. */ -/* Returns 1 on success or 0 on failure. */ -typedef int (*tinfl_put_buf_func_ptr)(const void *pBuf, int len, void *pUser); -int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags); - -struct tinfl_decompressor_tag; -typedef struct tinfl_decompressor_tag tinfl_decompressor; - -/* Allocate the tinfl_decompressor structure in C so that */ -/* non-C language bindings to tinfl_ API don't need to worry about */ -/* structure size and allocation mechanism. */ - -tinfl_decompressor *tinfl_decompressor_alloc(); -void tinfl_decompressor_free(tinfl_decompressor *pDecomp); - -/* Max size of LZ dictionary. */ -#define TINFL_LZ_DICT_SIZE 32768 - -/* Return status. */ -typedef enum { - /* This flags indicates the inflator needs 1 or more input bytes to make forward progress, but the caller is indicating that no more are available. The compressed data */ - /* is probably corrupted. If you call the inflator again with more bytes it'll try to continue processing the input but this is a BAD sign (either the data is corrupted or you called it incorrectly). */ - /* If you call it again with no input you'll just get TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS again. */ - TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS = -4, - - /* This flag indicates that one or more of the input parameters was obviously bogus. (You can try calling it again, but if you get this error the calling code is wrong.) */ - TINFL_STATUS_BAD_PARAM = -3, - - /* This flags indicate the inflator is finished but the adler32 check of the uncompressed data didn't match. If you call it again it'll return TINFL_STATUS_DONE. */ - TINFL_STATUS_ADLER32_MISMATCH = -2, - - /* This flags indicate the inflator has somehow failed (bad code, corrupted input, etc.). If you call it again without resetting via tinfl_init() it it'll just keep on returning the same status failure code. */ - TINFL_STATUS_FAILED = -1, - - /* Any status code less than TINFL_STATUS_DONE must indicate a failure. */ - - /* This flag indicates the inflator has returned every byte of uncompressed data that it can, has consumed every byte that it needed, has successfully reached the end of the deflate stream, and */ - /* if zlib headers and adler32 checking enabled that it has successfully checked the uncompressed data's adler32. If you call it again you'll just get TINFL_STATUS_DONE over and over again. */ - TINFL_STATUS_DONE = 0, - - /* This flag indicates the inflator MUST have more input data (even 1 byte) before it can make any more forward progress, or you need to clear the TINFL_FLAG_HAS_MORE_INPUT */ - /* flag on the next call if you don't have any more source data. If the source data was somehow corrupted it's also possible (but unlikely) for the inflator to keep on demanding input to */ - /* proceed, so be sure to properly set the TINFL_FLAG_HAS_MORE_INPUT flag. */ - TINFL_STATUS_NEEDS_MORE_INPUT = 1, - - /* This flag indicates the inflator definitely has 1 or more bytes of uncompressed data available, but it cannot write this data into the output buffer. */ - /* Note if the source compressed data was corrupted it's possible for the inflator to return a lot of uncompressed data to the caller. I've been assuming you know how much uncompressed data to expect */ - /* (either exact or worst case) and will stop calling the inflator and fail after receiving too much. In pure streaming scenarios where you have no idea how many bytes to expect this may not be possible */ - /* so I may need to add some code to address this. */ - TINFL_STATUS_HAS_MORE_OUTPUT = 2 -} tinfl_status; - -/* Initializes the decompressor to its initial state. */ -#define tinfl_init(r) \ - do \ - { \ - (r)->m_state = 0; \ - } \ - MZ_MACRO_END -#define tinfl_get_adler32(r) (r)->m_check_adler32 - -/* Main low-level decompressor coroutine function. This is the only function actually needed for decompression. All the other functions are just high-level helpers for improved usability. */ -/* This is a universal API, i.e. it can be used as a building block to build any desired higher level decompression API. In the limit case, it can be called once per every byte input or output. */ -tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags); - -/* Internal/private bits follow. */ -enum -{ - TINFL_MAX_HUFF_TABLES = 3, - TINFL_MAX_HUFF_SYMBOLS_0 = 288, - TINFL_MAX_HUFF_SYMBOLS_1 = 32, - TINFL_MAX_HUFF_SYMBOLS_2 = 19, - TINFL_FAST_LOOKUP_BITS = 10, - TINFL_FAST_LOOKUP_SIZE = 1 << TINFL_FAST_LOOKUP_BITS -}; - -typedef struct -{ - mz_uint8 m_code_size[TINFL_MAX_HUFF_SYMBOLS_0]; - mz_int16 m_look_up[TINFL_FAST_LOOKUP_SIZE], m_tree[TINFL_MAX_HUFF_SYMBOLS_0 * 2]; -} tinfl_huff_table; - -#if MINIZ_HAS_64BIT_REGISTERS -#define TINFL_USE_64BIT_BITBUF 1 -#else -#define TINFL_USE_64BIT_BITBUF 0 -#endif - -#if TINFL_USE_64BIT_BITBUF -typedef mz_uint64 tinfl_bit_buf_t; -#define TINFL_BITBUF_SIZE (64) -#else -typedef mz_uint32 tinfl_bit_buf_t; -#define TINFL_BITBUF_SIZE (32) -#endif - -struct tinfl_decompressor_tag -{ - mz_uint32 m_state, m_num_bits, m_zhdr0, m_zhdr1, m_z_adler32, m_final, m_type, m_check_adler32, m_dist, m_counter, m_num_extra, m_table_sizes[TINFL_MAX_HUFF_TABLES]; - tinfl_bit_buf_t m_bit_buf; - size_t m_dist_from_out_buf_start; - tinfl_huff_table m_tables[TINFL_MAX_HUFF_TABLES]; - mz_uint8 m_raw_header[4], m_len_codes[TINFL_MAX_HUFF_SYMBOLS_0 + TINFL_MAX_HUFF_SYMBOLS_1 + 137]; -}; - -#ifdef __cplusplus -} -#endif - -#pragma once - - -/* ------------------- ZIP archive reading/writing */ - -#ifndef MINIZ_NO_ARCHIVE_APIS - -#ifdef __cplusplus -extern "C" { -#endif - -enum -{ - /* Note: These enums can be reduced as needed to save memory or stack space - they are pretty conservative. */ - MZ_ZIP_MAX_IO_BUF_SIZE = 64 * 1024, - MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE = 512, - MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE = 512 -}; - -typedef struct -{ - /* Central directory file index. */ - mz_uint32 m_file_index; - - /* Byte offset of this entry in the archive's central directory. Note we currently only support up to UINT_MAX or less bytes in the central dir. */ - mz_uint64 m_central_dir_ofs; - - /* These fields are copied directly from the zip's central dir. */ - mz_uint16 m_version_made_by; - mz_uint16 m_version_needed; - mz_uint16 m_bit_flag; - mz_uint16 m_method; - -#ifndef MINIZ_NO_TIME - MZ_TIME_T m_time; -#endif - - /* CRC-32 of uncompressed data. */ - mz_uint32 m_crc32; - - /* File's compressed size. */ - mz_uint64 m_comp_size; - - /* File's uncompressed size. Note, I've seen some old archives where directory entries had 512 bytes for their uncompressed sizes, but when you try to unpack them you actually get 0 bytes. */ - mz_uint64 m_uncomp_size; - - /* Zip internal and external file attributes. */ - mz_uint16 m_internal_attr; - mz_uint32 m_external_attr; - - /* Entry's local header file offset in bytes. */ - mz_uint64 m_local_header_ofs; - - /* Size of comment in bytes. */ - mz_uint32 m_comment_size; - - /* MZ_TRUE if the entry appears to be a directory. */ - mz_bool m_is_directory; - - /* MZ_TRUE if the entry uses encryption/strong encryption (which miniz_zip doesn't support) */ - mz_bool m_is_encrypted; - - /* MZ_TRUE if the file is not encrypted, a patch file, and if it uses a compression method we support. */ - mz_bool m_is_supported; - - /* Filename. If string ends in '/' it's a subdirectory entry. */ - /* Guaranteed to be zero terminated, may be truncated to fit. */ - char m_filename[MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE]; - - /* Comment field. */ - /* Guaranteed to be zero terminated, may be truncated to fit. */ - char m_comment[MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE]; - -} mz_zip_archive_file_stat; - -typedef size_t (*mz_file_read_func)(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n); -typedef size_t (*mz_file_write_func)(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n); -typedef mz_bool (*mz_file_needs_keepalive)(void *pOpaque); - -struct mz_zip_internal_state_tag; -typedef struct mz_zip_internal_state_tag mz_zip_internal_state; - -typedef enum { - MZ_ZIP_MODE_INVALID = 0, - MZ_ZIP_MODE_READING = 1, - MZ_ZIP_MODE_WRITING = 2, - MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED = 3 -} mz_zip_mode; - -typedef enum { - MZ_ZIP_FLAG_CASE_SENSITIVE = 0x0100, - MZ_ZIP_FLAG_IGNORE_PATH = 0x0200, - MZ_ZIP_FLAG_COMPRESSED_DATA = 0x0400, - MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY = 0x0800, - MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG = 0x1000, /* if enabled, mz_zip_reader_locate_file() will be called on each file as its validated to ensure the func finds the file in the central dir (intended for testing) */ - MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY = 0x2000, /* validate the local headers, but don't decompress the entire file and check the crc32 */ - MZ_ZIP_FLAG_WRITE_ZIP64 = 0x4000, /* always use the zip64 file format, instead of the original zip file format with automatic switch to zip64. Use as flags parameter with mz_zip_writer_init*_v2 */ - MZ_ZIP_FLAG_WRITE_ALLOW_READING = 0x8000, - MZ_ZIP_FLAG_ASCII_FILENAME = 0x10000 -} mz_zip_flags; - -typedef enum { - MZ_ZIP_TYPE_INVALID = 0, - MZ_ZIP_TYPE_USER, - MZ_ZIP_TYPE_MEMORY, - MZ_ZIP_TYPE_HEAP, - MZ_ZIP_TYPE_FILE, - MZ_ZIP_TYPE_CFILE, - MZ_ZIP_TOTAL_TYPES -} mz_zip_type; - -/* miniz error codes. Be sure to update mz_zip_get_error_string() if you add or modify this enum. */ -typedef enum { - MZ_ZIP_NO_ERROR = 0, - MZ_ZIP_UNDEFINED_ERROR, - MZ_ZIP_TOO_MANY_FILES, - MZ_ZIP_FILE_TOO_LARGE, - MZ_ZIP_UNSUPPORTED_METHOD, - MZ_ZIP_UNSUPPORTED_ENCRYPTION, - MZ_ZIP_UNSUPPORTED_FEATURE, - MZ_ZIP_FAILED_FINDING_CENTRAL_DIR, - MZ_ZIP_NOT_AN_ARCHIVE, - MZ_ZIP_INVALID_HEADER_OR_CORRUPTED, - MZ_ZIP_UNSUPPORTED_MULTIDISK, - MZ_ZIP_DECOMPRESSION_FAILED, - MZ_ZIP_COMPRESSION_FAILED, - MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE, - MZ_ZIP_CRC_CHECK_FAILED, - MZ_ZIP_UNSUPPORTED_CDIR_SIZE, - MZ_ZIP_ALLOC_FAILED, - MZ_ZIP_FILE_OPEN_FAILED, - MZ_ZIP_FILE_CREATE_FAILED, - MZ_ZIP_FILE_WRITE_FAILED, - MZ_ZIP_FILE_READ_FAILED, - MZ_ZIP_FILE_CLOSE_FAILED, - MZ_ZIP_FILE_SEEK_FAILED, - MZ_ZIP_FILE_STAT_FAILED, - MZ_ZIP_INVALID_PARAMETER, - MZ_ZIP_INVALID_FILENAME, - MZ_ZIP_BUF_TOO_SMALL, - MZ_ZIP_INTERNAL_ERROR, - MZ_ZIP_FILE_NOT_FOUND, - MZ_ZIP_ARCHIVE_TOO_LARGE, - MZ_ZIP_VALIDATION_FAILED, - MZ_ZIP_WRITE_CALLBACK_FAILED, - MZ_ZIP_TOTAL_ERRORS -} mz_zip_error; - -typedef struct -{ - mz_uint64 m_archive_size; - mz_uint64 m_central_directory_file_ofs; - - /* We only support up to UINT32_MAX files in zip64 mode. */ - mz_uint32 m_total_files; - mz_zip_mode m_zip_mode; - mz_zip_type m_zip_type; - mz_zip_error m_last_error; - - mz_uint64 m_file_offset_alignment; - - mz_alloc_func m_pAlloc; - mz_free_func m_pFree; - mz_realloc_func m_pRealloc; - void *m_pAlloc_opaque; - - mz_file_read_func m_pRead; - mz_file_write_func m_pWrite; - mz_file_needs_keepalive m_pNeeds_keepalive; - void *m_pIO_opaque; - - mz_zip_internal_state *m_pState; - -} mz_zip_archive; - -typedef struct -{ - mz_zip_archive *pZip; - mz_uint flags; - - int status; -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - mz_uint file_crc32; -#endif - mz_uint64 read_buf_size, read_buf_ofs, read_buf_avail, comp_remaining, out_buf_ofs, cur_file_ofs; - mz_zip_archive_file_stat file_stat; - void *pRead_buf; - void *pWrite_buf; - - size_t out_blk_remain; - - tinfl_decompressor inflator; - -} mz_zip_reader_extract_iter_state; - -/* -------- ZIP reading */ - -/* Inits a ZIP archive reader. */ -/* These functions read and validate the archive's central directory. */ -mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags); - -mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags); - -#ifndef MINIZ_NO_STDIO -/* Read a archive from a disk file. */ -/* file_start_ofs is the file offset where the archive actually begins, or 0. */ -/* actual_archive_size is the true total size of the archive, which may be smaller than the file's actual size on disk. If zero the entire file is treated as the archive. */ -mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags); -mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size); - -/* Read an archive from an already opened FILE, beginning at the current file position. */ -/* The archive is assumed to be archive_size bytes long. If archive_size is < 0, then the entire rest of the file is assumed to contain the archive. */ -/* The FILE will NOT be closed when mz_zip_reader_end() is called. */ -mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size, mz_uint flags); -#endif - -/* Ends archive reading, freeing all allocations, and closing the input archive file if mz_zip_reader_init_file() was used. */ -mz_bool mz_zip_reader_end(mz_zip_archive *pZip); - -/* -------- ZIP reading or writing */ - -/* Clears a mz_zip_archive struct to all zeros. */ -/* Important: This must be done before passing the struct to any mz_zip functions. */ -void mz_zip_zero_struct(mz_zip_archive *pZip); - -mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip); -mz_zip_type mz_zip_get_type(mz_zip_archive *pZip); - -/* Returns the total number of files in the archive. */ -mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip); - -mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip); -mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip); -MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip); - -/* Reads n bytes of raw archive data, starting at file offset file_ofs, to pBuf. */ -size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n); - -/* All mz_zip funcs set the m_last_error field in the mz_zip_archive struct. These functions retrieve/manipulate this field. */ -/* Note that the m_last_error functionality is not thread safe. */ -mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num); -mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip); -mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip); -mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip); -const char *mz_zip_get_error_string(mz_zip_error mz_err); - -/* MZ_TRUE if the archive file entry is a directory entry. */ -mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index); - -/* MZ_TRUE if the file is encrypted/strong encrypted. */ -mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index); - -/* MZ_TRUE if the compression method is supported, and the file is not encrypted, and the file is not a compressed patch file. */ -mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index); - -/* Retrieves the filename of an archive file entry. */ -/* Returns the number of bytes written to pFilename, or if filename_buf_size is 0 this function returns the number of bytes needed to fully store the filename. */ -mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size); - -/* Attempts to locates a file in the archive's central directory. */ -/* Valid flags: MZ_ZIP_FLAG_CASE_SENSITIVE, MZ_ZIP_FLAG_IGNORE_PATH */ -/* Returns -1 if the file cannot be found. */ -int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags); -int mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *file_index); - -/* Returns detailed information about an archive file entry. */ -mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat); - -/* MZ_TRUE if the file is in zip64 format. */ -/* A file is considered zip64 if it contained a zip64 end of central directory marker, or if it contained any zip64 extended file information fields in the central directory. */ -mz_bool mz_zip_is_zip64(mz_zip_archive *pZip); - -/* Returns the total central directory size in bytes. */ -/* The current max supported size is <= MZ_UINT32_MAX. */ -size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip); - -/* Extracts a archive file to a memory buffer using no memory allocation. */ -/* There must be at least enough room on the stack to store the inflator's state (~34KB or so). */ -mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); -mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size); - -/* Extracts a archive file to a memory buffer. */ -mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags); - -/* Extracts a archive file to a dynamically allocated heap buffer. */ -/* The memory will be allocated via the mz_zip_archive's alloc/realloc functions. */ -/* Returns NULL and sets the last error on failure. */ -void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags); -void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags); - -/* Extracts a archive file using a callback function to output the file's data. */ -mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags); - -/* Extract a file iteratively */ -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags); -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags); -size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size); -mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState); - -#ifndef MINIZ_NO_STDIO -/* Extracts a archive file to a disk file and sets its last accessed and modified times. */ -/* This function only extracts files, not archive directory records. */ -mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags); - -/* Extracts a archive file starting at the current position in the destination FILE stream. */ -mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *File, mz_uint flags); -mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, MZ_FILE *pFile, mz_uint flags); -#endif - -#if 0 -/* TODO */ - typedef void *mz_zip_streaming_extract_state_ptr; - mz_zip_streaming_extract_state_ptr mz_zip_streaming_extract_begin(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags); - uint64_t mz_zip_streaming_extract_get_size(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState); - uint64_t mz_zip_streaming_extract_get_cur_ofs(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState); - mz_bool mz_zip_streaming_extract_seek(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, uint64_t new_ofs); - size_t mz_zip_streaming_extract_read(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState, void *pBuf, size_t buf_size); - mz_bool mz_zip_streaming_extract_end(mz_zip_archive *pZip, mz_zip_streaming_extract_state_ptr pState); -#endif - -/* This function compares the archive's local headers, the optional local zip64 extended information block, and the optional descriptor following the compressed data vs. the data in the central directory. */ -/* It also validates that each file can be successfully uncompressed unless the MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY is specified. */ -mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags); - -/* Validates an entire archive by calling mz_zip_validate_file() on each file. */ -mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags); - -/* Misc utils/helpers, valid for ZIP reading or writing */ -mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr); -mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr); - -/* Universal end function - calls either mz_zip_reader_end() or mz_zip_writer_end(). */ -mz_bool mz_zip_end(mz_zip_archive *pZip); - -/* -------- ZIP writing */ - -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS - -/* Inits a ZIP archive writer. */ -/*Set pZip->m_pWrite (and pZip->m_pIO_opaque) before calling mz_zip_writer_init or mz_zip_writer_init_v2*/ -/*The output is streamable, i.e. file_ofs in mz_file_write_func always increases only by n*/ -mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size); -mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags); - -mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size); -mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags); - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning); -mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags); -mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags); -#endif - -/* Converts a ZIP archive reader object into a writer object, to allow efficient in-place file appends to occur on an existing archive. */ -/* For archives opened using mz_zip_reader_init_file, pFilename must be the archive's filename so it can be reopened for writing. If the file can't be reopened, mz_zip_reader_end() will be called. */ -/* For archives opened using mz_zip_reader_init_mem, the memory block must be growable using the realloc callback (which defaults to realloc unless you've overridden it). */ -/* Finally, for archives opened using mz_zip_reader_init, the mz_zip_archive's user provided m_pWrite function cannot be NULL. */ -/* Note: In-place archive modification is not recommended unless you know what you're doing, because if execution stops or something goes wrong before */ -/* the archive is finalized the file's central directory will be hosed. */ -mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename); -mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags); - -/* Adds the contents of a memory buffer to an archive. These functions record the current local time into the archive. */ -/* To add a directory entry, call this method with an archive name ending in a forwardslash with an empty buffer. */ -/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */ -mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags); - -/* Like mz_zip_writer_add_mem(), except you can specify a file comment field, and optionally supply the function with already compressed data. */ -/* uncomp_size/uncomp_crc32 are only used if the MZ_ZIP_FLAG_COMPRESSED_DATA flag is specified. */ -mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - mz_uint64 uncomp_size, mz_uint32 uncomp_crc32); - -mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, MZ_TIME_T *last_modified, const char *user_extra_data_local, mz_uint user_extra_data_local_len, - const char *user_extra_data_central, mz_uint user_extra_data_central_len); - -#ifndef MINIZ_NO_STDIO -/* Adds the contents of a disk file to an archive. This function also records the disk file's modified time into the archive. */ -/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */ -mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); - -/* Like mz_zip_writer_add_file(), except the file data is read from the specified FILE stream. */ -mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file, mz_uint64 size_to_add, - const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, const char *user_extra_data_local, mz_uint user_extra_data_local_len, - const char *user_extra_data_central, mz_uint user_extra_data_central_len); -#endif - -/* Adds a file to an archive by fully cloning the data from another archive. */ -/* This function fully clones the source file's compressed data (no recompression), along with its full filename, extra data (it may add or modify the zip64 local header extra data field), and the optional descriptor following the compressed data. */ -mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index); - -/* Finalizes the archive by writing the central directory records followed by the end of central directory record. */ -/* After an archive is finalized, the only valid call on the mz_zip_archive struct is mz_zip_writer_end(). */ -/* An archive must be manually finalized by calling this function for it to be valid. */ -mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip); - -/* Finalizes a heap archive, returning a poiner to the heap block and its size. */ -/* The heap block will be allocated using the mz_zip_archive's alloc/realloc callbacks. */ -mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize); - -/* Ends archive writing, freeing all allocations, and closing the output file if mz_zip_writer_init_file() was used. */ -/* Note for the archive to be valid, it *must* have been finalized before ending (this function will not do it for you). */ -mz_bool mz_zip_writer_end(mz_zip_archive *pZip); - -/* -------- Misc. high-level helper functions: */ - -/* mz_zip_add_mem_to_archive_file_in_place() efficiently (but not atomically) appends a memory blob to a ZIP archive. */ -/* Note this is NOT a fully safe operation. If it crashes or dies in some way your archive can be left in a screwed up state (without a central directory). */ -/* level_and_flags - compression level (0-10, see MZ_BEST_SPEED, MZ_BEST_COMPRESSION, etc.) logically OR'd with zero or more mz_zip_flags, or just set to MZ_DEFAULT_COMPRESSION. */ -/* TODO: Perhaps add an option to leave the existing central dir in place in case the add dies? We could then truncate the file (so the old central dir would be at the end) if something goes wrong. */ -mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags); -mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr); - -/* Reads a single file from an archive into a heap block. */ -/* If pComment is not NULL, only the file with the specified comment will be extracted. */ -/* Returns NULL on failure. */ -void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags); -void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr); - -#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */ - -#ifdef __cplusplus -} -#endif - -#endif /* MINIZ_NO_ARCHIVE_APIS */ diff --git a/libhttp/include/sysconf.h b/libhttp/include/sysconf.h deleted file mode 100644 index 861dd5ca7..000000000 --- a/libhttp/include/sysconf.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * sysconf.h -- system-dependent macros and settings - * - * Copyright (C) 2002-2004 Cosmin Truta. - * Permission to use and distribute freely. - * No warranty. - **/ - -#ifndef SYSCONF_H -#define SYSCONF_H - - - /*****************************************************************************/ - /* Platform identifiers */ - - - /* Detect Unix. */ -#if defined(unix) || defined(__linux__) || defined(BSD) || defined(__CYGWIN__) - /* Add more systems here. */ -# ifndef UNIX -# define UNIX -# endif -#endif - -/* Detect MS-DOS. */ -#if defined(__MSDOS__) -# ifndef MSDOS -# define MSDOS -# endif -#endif - -/* TO DO: Detect OS/2. */ - -/* Detect Windows. */ -#if defined(_WIN32) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if defined(_WIN64) -# ifndef WIN64 -# define WIN64 -# endif -#endif -#if defined(_WINDOWS) || defined(WIN32) || defined(WIN64) -# ifndef WINDOWS -# define WINDOWS -# endif -#endif - -/* Enable POSIX-friendly symbols on Microsoft (Visual) C. */ -#ifdef _MSC_VER -# define _POSIX_ -#endif - - -/*****************************************************************************/ -/* Library access */ - - -#if defined(UNIX) -# include -#endif - -#if defined(_POSIX_VERSION) -# include -# ifndef HAVE_ISATTY -# define HAVE_ISATTY -# endif -#endif - -#if defined(MSDOS) || defined(OS2) || defined(WINDOWS) || defined(__CYGWIN__) - /* Add more systems here, e.g. MacOS 9 and earlier. */ -# include -# include -# ifndef HAVE_ISATTY -# define HAVE_ISATTY -# endif -# ifndef HAVE_SETMODE -# define HAVE_SETMODE -# endif -#endif - -/* Standard I/O handles. */ -#define STDIN 0 -#define STDOUT 1 -#define STDERR 2 - -/* Provide a placeholder for O_BINARY, if it doesn't exist. */ -#ifndef O_BINARY -# define O_BINARY 0 -#endif - - -#endif /* SYSCONF_H */ \ No newline at end of file diff --git a/libhttp/internal.c b/libhttp/internal.c deleted file mode 100644 index 62a50cbf7..000000000 --- a/libhttp/internal.c +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* internal utility functions for libhttp -*/ - -#include -#include -#include -#include - -#include "internal.h" - -void *memncat(a, an, b, bn, s) -const void *a, *b; -size_t an, bn, s; -{ - char *p = malloc(s * (an + bn)); - memset(p, '\0', s * (an + bn)); - memcpy(p, a, an*s); - memcpy(p + an*s, b, bn*s); - return p; -} \ No newline at end of file diff --git a/libhttp/internal.h b/libhttp/internal.h deleted file mode 100644 index 901283d8a..000000000 --- a/libhttp/internal.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* this file contains internal definitions of libhttp data structures -* internal.h and libhttp.h are mutually exclusive as they define the same -* data structures, library clients must use libhttp.h -* -*/ - -#ifndef INTERNAL_H -#define INTERNAL_H - -/* PolarSSL */ -#include -#include -#include -#include -#include -#include -#include - -/* function declarations */ -void free_parsed_url(); -parse_url(); -void *memncat(); - -typedef struct url_parser_url -{ - char *protocol; - char *host; - int port; - char *path; - char *query_string; - int host_exists; - char *host_ip; -} url_t; - -typedef struct -{ - char *ua; /* platform-specific user-agent string */ - char *request_uri; /* last uri requested, the response corresponds to this link */ - struct responseBody - { - /* the raw_data and headers point to the same place */ - /* the content is an offset into the raw_data */ - union - { - char* raw_data; - char* headers; - }; - char* content; - }; - - /* not a public field */ - struct - { - mbedtls_net_context server_fd; - mbedtls_entropy_context entropy; - mbedtls_ctr_drbg_context ctr_drbg; - mbedtls_ssl_context ssl; - mbedtls_ssl_config conf; - mbedtls_x509_crt cacert; - bool TLSInit; - char seed[64]; - } tls_state; -} http_state; - -#endif \ No newline at end of file diff --git a/libhttp/libhttp.c b/libhttp/libhttp.c deleted file mode 100644 index fa0f9c0a2..000000000 --- a/libhttp/libhttp.c +++ /dev/null @@ -1,301 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* libhttp, a really small HTTP 0-3 client library with TLS -* -* HTTPS only; why the hell would you serve semi-sensitive data over an -* unencrypted channel? In fact, the polarssl integration is intended to -* bypass limitations in the native TLS stack (no TLS 1.1+ on some older -* platforms, lack of high-encryption ciphersuites other than ARC4 or -* Triple-DES, etc) -* -rick -*/ - -#include -#include -#include - -#ifdef _WIN32 -#include -#include -#endif - -#include "miniz.h" -#include "internal.h" - -/* only decompress rootcerts once */ -unsigned char* ca_certs = NULL; -/* netscape ca bundle */ -const unsigned char *ca_cert_store_encoded; -/* imageboard ref just because */ -static char userAgent[] = "NetRunner_Micro/0.1 PolarSSL/2.16.0;U;"; - -static void destroy_persistent_data() -{ - free(ca_certs); - ca_certs = NULL; -} - -static bool generateSeed(client) -http_state *client; -{ -#ifdef _WIN32 - HCRYPTPROV hprovider; - - /* On Windows NT 4.0 or later, use CryptoAPI to grab 64 bytes of random data */ - hprovider = 0; - CryptAcquireContext(&hprovider, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT | CRYPT_SILENT); - CryptGenRandom(hprovider, 64, (BYTE*)&client->tls_state.seed); - CryptReleaseContext(hprovider, 0); -#endif - client->tls_state.seed[63] = '\0'; /* null-terminate for safety */ - return true; -} - -static bool initTLS(client) -http_state *client; -{ - int inf_status,r; - size_t out; - unsigned long inf_len; - unsigned char* tmp; - char str[512]; - - mbedtls_net_init(&client->tls_state.server_fd); - mbedtls_ssl_init(&client->tls_state.ssl); - mbedtls_ssl_config_init(&client->tls_state.conf); - mbedtls_x509_crt_init(&client->tls_state.cacert); - mbedtls_entropy_init(&client->tls_state.entropy); - mbedtls_ctr_drbg_init(&client->tls_state.ctr_drbg); - - /* only decompress once */ - if (!ca_certs) - { - tmp = malloc(524288); - - r = strlen(ca_cert_store_encoded) - 1; - r = mbedtls_base64_decode(tmp, 524288, &out, ca_cert_store_encoded, r); - if (r) - { - mbedtls_strerror(r, (char*)tmp, 524288); - printf("decoding failed: %s\n", tmp); - free(tmp); - return false; - } - /* inflate ca certs, they are still compressed */ - ca_certs = malloc(524288); - inf_len = 524288; - - inf_status = uncompress(ca_certs, &inf_len, tmp, out); - if (inf_status != Z_OK) - { - printf("decompression failed: %s\n", mz_error(inf_status)); - free(tmp); - return false; - } - free(tmp); - } - - if (!generateSeed()) - return false; - - if (mbedtls_ctr_drbg_seed(&client->tls_state.ctr_drbg, mbedtls_entropy_func, &client->tls_state.entropy, (const unsigned char*)client->tls_state.seed, 64)) { - return false; - } - - r = mbedtls_x509_crt_parse(&client->tls_state.cacert, ca_certs, inf_len+1); - if (r < 0) { - mbedtls_strerror(r, str, 512); - printf("parse ca cert store failed\n ! mbedtls_x509_crt_parse returned: %s\n\n", str); - return false; - } - client->tls_state.TLSInit = true; - return true; -} - -/* if false, library may be in an inconsistent state, -* call terminate_client() -*/ -bool init_client(client) -http_state* client; -{ - if (!ca_certs) - atexit(destroy_persistent_data); - if (!client) - client = calloc(1, sizeof(http_state)); - initTLS(client); - - return client->tls_state.TLSInit; -} - -static void ua_string(client) -http_state *client; -{ - /* fill in user-agent string */ -#ifdef _WIN32 - DWORD version, major, minor, build; - version = GetVersion(); - major = (DWORD)(LOBYTE(LOWORD(version))); - minor = (DWORD)(HIBYTE(LOWORD(version))); - if (version < 0x80000000) - build = (DWORD)(HIWORD(version)); - client->ua = malloc(512); - snprintf(client->ua, 512, "%sWindows NT %d.%d", userAgent, major, minor); -#endif -} - -download_https_resource(client, uri) -http_state *client; -char *uri; -{ - int r, len; - char buf[1024], port[8]; - char *rq, *resp; - unsigned flags; - url_t *parsed_uri; - - rq = malloc(4096); - /* this string gets readjusted each time we make a request */ - client->request_uri = realloc(NULL, strlen(uri)+1); - parsed_uri = malloc(sizeof(url_t)); - memset(parsed_uri, 0, sizeof(url_t)); - r = parse_url(uri, false, parsed_uri); - if (r) - { - printf("Invalid URI pathspec\n"); - return -1; - } - - if (!client->tls_state.TLSInit) - { - printf("Failed to initialise polarssl\n"); - return -1; - } - - /* get host name, set port if blank */ - if (!strcmp("https", parsed_uri->protocol) && !parsed_uri->port) - parsed_uri->port = 443; - - printf("connecting to %s on port %d...",parsed_uri->host, parsed_uri->port); - sprintf(port, "%d", parsed_uri->port); - r = mbedtls_net_connect(&client->tls_state.server_fd, parsed_uri->host, port, MBEDTLS_NET_PROTO_TCP); - if (r) - { - printf("error - failed to connect to server: %d\n", r); - goto exit; - } - - r = mbedtls_ssl_config_defaults(&client->tls_state.conf, MBEDTLS_SSL_IS_CLIENT, MBEDTLS_SSL_TRANSPORT_STREAM, MBEDTLS_SSL_PRESET_DEFAULT); - if (r) - { - printf("error - failed to set TLS options: %d\n", r); - goto exit; - } - mbedtls_ssl_conf_authmode(&client->tls_state.conf, MBEDTLS_SSL_VERIFY_REQUIRED); - mbedtls_ssl_conf_ca_chain(&client->tls_state.conf, &client->tls_state.cacert, NULL); - mbedtls_ssl_conf_rng(&client->tls_state.conf, mbedtls_ctr_drbg_random, &client->tls_state.ctr_drbg); - r = mbedtls_ssl_setup(&client->tls_state.ssl, &client->tls_state.conf); - if (r) - { - printf("error - failed to setup TLS session: %d\n", r); - goto exit; - } - r = mbedtls_ssl_set_hostname(&client->tls_state.ssl, parsed_uri->host); - if (r) - { - printf("error - failed to perform SNI: %d\n", r); - goto exit; - } - mbedtls_ssl_set_bio(&client->tls_state.ssl, &client->tls_state.server_fd, mbedtls_net_send, mbedtls_net_recv, NULL); - while ((r = mbedtls_ssl_handshake(&client->tls_state.ssl)) != 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf(" failed\n ! mbedtls_ssl_handshake returned -0x%x\n\n", -r); - goto exit; - } - } - if ((flags = mbedtls_ssl_get_verify_result(&client->tls_state.ssl)) != 0) - { - char vrfy_buf[512]; - printf(" failed\n"); - mbedtls_x509_crt_verify_info(vrfy_buf, sizeof(vrfy_buf), " ! ", flags); - printf("%s\n", vrfy_buf); - goto exit; - } - printf("\nDownloading %s...", &parsed_uri->path[1]); - snprintf(rq, 512, "GET %s HTTP/1.0\r\nHost: %s\r\nUser-Agent: %s\r\n\r\n", parsed_uri->path, parsed_uri->host, client->ua); - while ((r = mbedtls_ssl_write(&client->tls_state.ssl, (unsigned char*)rq, strlen(rq))) <= 0) - { - if (r != MBEDTLS_ERR_SSL_WANT_READ && r != MBEDTLS_ERR_SSL_WANT_WRITE) - { - printf("failed! error %d\n\n", r); - goto exit; - } - } - memset(rq, 0, 4096); - len = 0; - do { - r = mbedtls_ssl_read(&client->tls_state.ssl, (unsigned char*)buf, 1024); - if (r <= 0) - break; - else - { - rq = memncat(rq, len, buf, r, sizeof(char)); - len += r; - } - } while (r); - printf("%d bytes downloaded to core.\n", len); - mbedtls_ssl_close_notify(&client->tls_state.ssl); - if (!strstr(rq, "200 OK")) - { - printf("An error occurred.\n"); - printf("Server response:\n%s", rq); - goto exit; - } - - /* Response body is in buf after processing */ - resp = strstr(rq, "Content-Length"); - r = strcspn(resp, "0123456789"); - memcpy(buf, &resp[r], 4); - buf[3] = '\0'; - r = atoi(buf); - resp = strstr(rq, "\r\n\r\n"); - memcpy(buf, &resp[4], r); - - r = 0; - -exit: - free(rq); - free_parsed_url(parsed_uri); - return r; -} - -void terminate_client(client) -http_state *client; -{ - mbedtls_ssl_close_notify(&client->tls_state.ssl); - mbedtls_net_free(&client->tls_state.server_fd); - mbedtls_x509_crt_free(&client->tls_state.cacert); - mbedtls_ssl_free(&client->tls_state.ssl); - mbedtls_ssl_config_free(&client->tls_state.conf); - mbedtls_ctr_drbg_free(&client->tls_state.ctr_drbg); - mbedtls_entropy_free(&client->tls_state.entropy); - free(client->ua); -} \ No newline at end of file diff --git a/libhttp/libhttp.h b/libhttp/libhttp.h deleted file mode 100644 index 36034ef71..000000000 --- a/libhttp/libhttp.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* libhttp, a really small HTTP 0-3 client library with TLS -* public API header -* do not include this file in any of the libhttp sources itself -* -* HTTPS only; why the hell would you serve semi-sensitive data over an -* unencrypted channel? In fact, the polarssl integration is intended to -* bypass limitations in the native TLS stack (no TLS 1.1+ on some older -* platforms, lack of high-encryption ciphersuites other than ARC4 or -* Triple-DES, etc) -* -rick -*/ - -#ifndef LIBHTTP_H -#define LIBHTTP_H - -/* http client object */ -typedef struct -{ - char *ua; /* platform-specific user-agent string */ - char *request_uri; /* last uri requested, the response corresponds to this link */ - struct responseBody - { - /* the raw_data and headers point to the same place */ - /* the content is an offset into the raw_data */ - union - { - char* raw_data; - char* headers; - }; - char* content; - }; - /* anonymous field, do not poke */ - void *reserved; -} http_state; - -/* libhttp public API */ -bool init_client(http_state*); -int download_https_resource(http_state*, char*); -void terminate_client(http_state*); -#endif \ No newline at end of file diff --git a/libhttp/miniz.c b/libhttp/miniz.c deleted file mode 100644 index 0e1106018..000000000 --- a/libhttp/miniz.c +++ /dev/null @@ -1,7564 +0,0 @@ -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - -#include "miniz.h" - -typedef unsigned char mz_validate_uint16[sizeof(mz_uint16) == 2 ? 1 : -1]; -typedef unsigned char mz_validate_uint32[sizeof(mz_uint32) == 4 ? 1 : -1]; -typedef unsigned char mz_validate_uint64[sizeof(mz_uint64) == 8 ? 1 : -1]; - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- zlib-style API's */ - -mz_ulong mz_adler32(mz_ulong adler, const unsigned char *ptr, size_t buf_len) -{ - mz_uint32 i, s1 = (mz_uint32)(adler & 0xffff), s2 = (mz_uint32)(adler >> 16); - size_t block_len = buf_len % 5552; - if (!ptr) - return MZ_ADLER32_INIT; - while (buf_len) - { - for (i = 0; i + 7 < block_len; i += 8, ptr += 8) - { - s1 += ptr[0], s2 += s1; - s1 += ptr[1], s2 += s1; - s1 += ptr[2], s2 += s1; - s1 += ptr[3], s2 += s1; - s1 += ptr[4], s2 += s1; - s1 += ptr[5], s2 += s1; - s1 += ptr[6], s2 += s1; - s1 += ptr[7], s2 += s1; - } - for (; i < block_len; ++i) - s1 += *ptr++, s2 += s1; - s1 %= 65521U, s2 %= 65521U; - buf_len -= block_len; - block_len = 5552; - } - return (s2 << 16) + s1; -} - -/* Karl Malbrain's compact CRC-32. See "A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed": http://www.geocities.com/malbrain/ */ -#if 0 - mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) - { - static const mz_uint32 s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c }; - mz_uint32 crcu32 = (mz_uint32)crc; - if (!ptr) - return MZ_CRC32_INIT; - crcu32 = ~crcu32; - while (buf_len--) - { - mz_uint8 b = *ptr++; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; - } - return ~crcu32; - } -#else -/* Faster, but larger CPU cache footprint. - */ -mz_ulong mz_crc32(mz_ulong crc, const mz_uint8 *ptr, size_t buf_len) -{ - static const mz_uint32 s_crc_table[256] = - { - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, - 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, - 0xE7B82D07, 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, - 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, - 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, - 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, - 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, - 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, - 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, - 0xB6662D3D, 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, - 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, - 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, - 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, - 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, - 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, - 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, - 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, - 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, - 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, - 0x9DD277AF, 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, 0x1E01F268, - 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, - 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, - 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, - 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, - 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, - 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, - 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, - 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, - 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, 0x88085AE6, - 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, - 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, - 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, - 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, - 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, - 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D - }; - - mz_uint32 crc32 = (mz_uint32)crc ^ 0xFFFFFFFF; - const mz_uint8 *pByte_buf = (const mz_uint8 *)ptr; - - while (buf_len >= 4) - { - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[1]) & 0xFF]; - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[2]) & 0xFF]; - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[3]) & 0xFF]; - pByte_buf += 4; - buf_len -= 4; - } - - while (buf_len) - { - crc32 = (crc32 >> 8) ^ s_crc_table[(crc32 ^ pByte_buf[0]) & 0xFF]; - ++pByte_buf; - --buf_len; - } - - return ~crc32; -} -#endif - -void mz_free(void *p) -{ - MZ_FREE(p); -} - -void *miniz_def_alloc_func(void *opaque, size_t items, size_t size) -{ - (void)opaque, (void)items, (void)size; - return MZ_MALLOC(items * size); -} -void miniz_def_free_func(void *opaque, void *address) -{ - (void)opaque, (void)address; - MZ_FREE(address); -} -void *miniz_def_realloc_func(void *opaque, void *address, size_t items, size_t size) -{ - (void)opaque, (void)address, (void)items, (void)size; - return MZ_REALLOC(address, items * size); -} - -const char *mz_version(void) -{ - return MZ_VERSION; -} - -#ifndef MINIZ_NO_ZLIB_APIS - -int mz_deflateInit(mz_streamp pStream, int level) -{ - return mz_deflateInit2(pStream, level, MZ_DEFLATED, MZ_DEFAULT_WINDOW_BITS, 9, MZ_DEFAULT_STRATEGY); -} - -int mz_deflateInit2(mz_streamp pStream, int level, int method, int window_bits, int mem_level, int strategy) -{ - tdefl_compressor *pComp; - mz_uint comp_flags = TDEFL_COMPUTE_ADLER32 | tdefl_create_comp_flags_from_zip_params(level, window_bits, strategy); - - if (!pStream) - return MZ_STREAM_ERROR; - if ((method != MZ_DEFLATED) || ((mem_level < 1) || (mem_level > 9)) || ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS))) - return MZ_PARAM_ERROR; - - pStream->data_type = 0; - pStream->adler = MZ_ADLER32_INIT; - pStream->msg = NULL; - pStream->reserved = 0; - pStream->total_in = 0; - pStream->total_out = 0; - if (!pStream->zalloc) - pStream->zalloc = miniz_def_alloc_func; - if (!pStream->zfree) - pStream->zfree = miniz_def_free_func; - - pComp = (tdefl_compressor *)pStream->zalloc(pStream->opaque, 1, sizeof(tdefl_compressor)); - if (!pComp) - return MZ_MEM_ERROR; - - pStream->state = (struct mz_internal_state *)pComp; - - if (tdefl_init(pComp, NULL, NULL, comp_flags) != TDEFL_STATUS_OKAY) - { - mz_deflateEnd(pStream); - return MZ_PARAM_ERROR; - } - - return MZ_OK; -} - -int mz_deflateReset(mz_streamp pStream) -{ - if ((!pStream) || (!pStream->state) || (!pStream->zalloc) || (!pStream->zfree)) - return MZ_STREAM_ERROR; - pStream->total_in = pStream->total_out = 0; - tdefl_init((tdefl_compressor *)pStream->state, NULL, NULL, ((tdefl_compressor *)pStream->state)->m_flags); - return MZ_OK; -} - -int mz_deflate(mz_streamp pStream, int flush) -{ - size_t in_bytes, out_bytes; - mz_ulong orig_total_in, orig_total_out; - int mz_status = MZ_OK; - - if ((!pStream) || (!pStream->state) || (flush < 0) || (flush > MZ_FINISH) || (!pStream->next_out)) - return MZ_STREAM_ERROR; - if (!pStream->avail_out) - return MZ_BUF_ERROR; - - if (flush == MZ_PARTIAL_FLUSH) - flush = MZ_SYNC_FLUSH; - - if (((tdefl_compressor *)pStream->state)->m_prev_return_status == TDEFL_STATUS_DONE) - return (flush == MZ_FINISH) ? MZ_STREAM_END : MZ_BUF_ERROR; - - orig_total_in = pStream->total_in; - orig_total_out = pStream->total_out; - for (;;) - { - tdefl_status defl_status; - in_bytes = pStream->avail_in; - out_bytes = pStream->avail_out; - - defl_status = tdefl_compress((tdefl_compressor *)pStream->state, pStream->next_in, &in_bytes, pStream->next_out, &out_bytes, (tdefl_flush)flush); - pStream->next_in += (mz_uint)in_bytes; - pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; - pStream->adler = tdefl_get_adler32((tdefl_compressor *)pStream->state); - - pStream->next_out += (mz_uint)out_bytes; - pStream->avail_out -= (mz_uint)out_bytes; - pStream->total_out += (mz_uint)out_bytes; - - if (defl_status < 0) - { - mz_status = MZ_STREAM_ERROR; - break; - } - else if (defl_status == TDEFL_STATUS_DONE) - { - mz_status = MZ_STREAM_END; - break; - } - else if (!pStream->avail_out) - break; - else if ((!pStream->avail_in) && (flush != MZ_FINISH)) - { - if ((flush) || (pStream->total_in != orig_total_in) || (pStream->total_out != orig_total_out)) - break; - return MZ_BUF_ERROR; /* Can't make forward progress without some input. - */ - } - } - return mz_status; -} - -int mz_deflateEnd(mz_streamp pStream) -{ - if (!pStream) - return MZ_STREAM_ERROR; - if (pStream->state) - { - pStream->zfree(pStream->opaque, pStream->state); - pStream->state = NULL; - } - return MZ_OK; -} - -mz_ulong mz_deflateBound(mz_streamp pStream, mz_ulong source_len) -{ - (void)pStream; - /* This is really over conservative. (And lame, but it's actually pretty tricky to compute a true upper bound given the way tdefl's blocking works.) */ - return MZ_MAX(128 + (source_len * 110) / 100, 128 + source_len + ((source_len / (31 * 1024)) + 1) * 5); -} - -int mz_compress2(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len, int level) -{ - int status; - mz_stream stream; - memset(&stream, 0, sizeof(stream)); - - /* In case mz_ulong is 64-bits (argh I hate longs). */ - if ((source_len | *pDest_len) > 0xFFFFFFFFU) - return MZ_PARAM_ERROR; - - stream.next_in = pSource; - stream.avail_in = (mz_uint32)source_len; - stream.next_out = pDest; - stream.avail_out = (mz_uint32)*pDest_len; - - status = mz_deflateInit(&stream, level); - if (status != MZ_OK) - return status; - - status = mz_deflate(&stream, MZ_FINISH); - if (status != MZ_STREAM_END) - { - mz_deflateEnd(&stream); - return (status == MZ_OK) ? MZ_BUF_ERROR : status; - } - - *pDest_len = stream.total_out; - return mz_deflateEnd(&stream); -} - -int mz_compress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len) -{ - return mz_compress2(pDest, pDest_len, pSource, source_len, MZ_DEFAULT_COMPRESSION); -} - -mz_ulong mz_compressBound(mz_ulong source_len) -{ - return mz_deflateBound(NULL, source_len); -} - -typedef struct -{ - tinfl_decompressor m_decomp; - mz_uint m_dict_ofs, m_dict_avail, m_first_call, m_has_flushed; - int m_window_bits; - mz_uint8 m_dict[TINFL_LZ_DICT_SIZE]; - tinfl_status m_last_status; -} inflate_state; - -int mz_inflateInit2(mz_streamp pStream, int window_bits) -{ - inflate_state *pDecomp; - if (!pStream) - return MZ_STREAM_ERROR; - if ((window_bits != MZ_DEFAULT_WINDOW_BITS) && (-window_bits != MZ_DEFAULT_WINDOW_BITS)) - return MZ_PARAM_ERROR; - - pStream->data_type = 0; - pStream->adler = 0; - pStream->msg = NULL; - pStream->total_in = 0; - pStream->total_out = 0; - pStream->reserved = 0; - if (!pStream->zalloc) - pStream->zalloc = miniz_def_alloc_func; - if (!pStream->zfree) - pStream->zfree = miniz_def_free_func; - - pDecomp = (inflate_state *)pStream->zalloc(pStream->opaque, 1, sizeof(inflate_state)); - if (!pDecomp) - return MZ_MEM_ERROR; - - pStream->state = (struct mz_internal_state *)pDecomp; - - tinfl_init(&pDecomp->m_decomp); - pDecomp->m_dict_ofs = 0; - pDecomp->m_dict_avail = 0; - pDecomp->m_last_status = TINFL_STATUS_NEEDS_MORE_INPUT; - pDecomp->m_first_call = 1; - pDecomp->m_has_flushed = 0; - pDecomp->m_window_bits = window_bits; - - return MZ_OK; -} - -int mz_inflateInit(mz_streamp pStream) -{ - return mz_inflateInit2(pStream, MZ_DEFAULT_WINDOW_BITS); -} - -int mz_inflate(mz_streamp pStream, int flush) -{ - inflate_state *pState; - mz_uint n, first_call, decomp_flags = TINFL_FLAG_COMPUTE_ADLER32; - size_t in_bytes, out_bytes, orig_avail_in; - tinfl_status status; - - if ((!pStream) || (!pStream->state)) - return MZ_STREAM_ERROR; - if (flush == MZ_PARTIAL_FLUSH) - flush = MZ_SYNC_FLUSH; - if ((flush) && (flush != MZ_SYNC_FLUSH) && (flush != MZ_FINISH)) - return MZ_STREAM_ERROR; - - pState = (inflate_state *)pStream->state; - if (pState->m_window_bits > 0) - decomp_flags |= TINFL_FLAG_PARSE_ZLIB_HEADER; - orig_avail_in = pStream->avail_in; - - first_call = pState->m_first_call; - pState->m_first_call = 0; - if (pState->m_last_status < 0) - return MZ_DATA_ERROR; - - if (pState->m_has_flushed && (flush != MZ_FINISH)) - return MZ_STREAM_ERROR; - pState->m_has_flushed |= (flush == MZ_FINISH); - - if ((flush == MZ_FINISH) && (first_call)) - { - /* MZ_FINISH on the first call implies that the input and output buffers are large enough to hold the entire compressed/decompressed file. */ - decomp_flags |= TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF; - in_bytes = pStream->avail_in; - out_bytes = pStream->avail_out; - status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pStream->next_out, pStream->next_out, &out_bytes, decomp_flags); - pState->m_last_status = status; - pStream->next_in += (mz_uint)in_bytes; - pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; - pStream->adler = tinfl_get_adler32(&pState->m_decomp); - pStream->next_out += (mz_uint)out_bytes; - pStream->avail_out -= (mz_uint)out_bytes; - pStream->total_out += (mz_uint)out_bytes; - - if (status < 0) - return MZ_DATA_ERROR; - else if (status != TINFL_STATUS_DONE) - { - pState->m_last_status = TINFL_STATUS_FAILED; - return MZ_BUF_ERROR; - } - return MZ_STREAM_END; - } - /* flush != MZ_FINISH then we must assume there's more input. */ - if (flush != MZ_FINISH) - decomp_flags |= TINFL_FLAG_HAS_MORE_INPUT; - - if (pState->m_dict_avail) - { - n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); - memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); - pStream->next_out += n; - pStream->avail_out -= n; - pStream->total_out += n; - pState->m_dict_avail -= n; - pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); - return ((pState->m_last_status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; - } - - for (;;) - { - in_bytes = pStream->avail_in; - out_bytes = TINFL_LZ_DICT_SIZE - pState->m_dict_ofs; - - status = tinfl_decompress(&pState->m_decomp, pStream->next_in, &in_bytes, pState->m_dict, pState->m_dict + pState->m_dict_ofs, &out_bytes, decomp_flags); - pState->m_last_status = status; - - pStream->next_in += (mz_uint)in_bytes; - pStream->avail_in -= (mz_uint)in_bytes; - pStream->total_in += (mz_uint)in_bytes; - pStream->adler = tinfl_get_adler32(&pState->m_decomp); - - pState->m_dict_avail = (mz_uint)out_bytes; - - n = MZ_MIN(pState->m_dict_avail, pStream->avail_out); - memcpy(pStream->next_out, pState->m_dict + pState->m_dict_ofs, n); - pStream->next_out += n; - pStream->avail_out -= n; - pStream->total_out += n; - pState->m_dict_avail -= n; - pState->m_dict_ofs = (pState->m_dict_ofs + n) & (TINFL_LZ_DICT_SIZE - 1); - - if (status < 0) - return MZ_DATA_ERROR; /* Stream is corrupted (there could be some uncompressed data left in the output dictionary - oh well). */ - else if ((status == TINFL_STATUS_NEEDS_MORE_INPUT) && (!orig_avail_in)) - return MZ_BUF_ERROR; /* Signal caller that we can't make forward progress without supplying more input or by setting flush to MZ_FINISH. */ - else if (flush == MZ_FINISH) - { - /* The output buffer MUST be large to hold the remaining uncompressed data when flush==MZ_FINISH. */ - if (status == TINFL_STATUS_DONE) - return pState->m_dict_avail ? MZ_BUF_ERROR : MZ_STREAM_END; - /* status here must be TINFL_STATUS_HAS_MORE_OUTPUT, which means there's at least 1 more byte on the way. If there's no more room left in the output buffer then something is wrong. */ - else if (!pStream->avail_out) - return MZ_BUF_ERROR; - } - else if ((status == TINFL_STATUS_DONE) || (!pStream->avail_in) || (!pStream->avail_out) || (pState->m_dict_avail)) - break; - } - - return ((status == TINFL_STATUS_DONE) && (!pState->m_dict_avail)) ? MZ_STREAM_END : MZ_OK; -} - -int mz_inflateEnd(mz_streamp pStream) -{ - if (!pStream) - return MZ_STREAM_ERROR; - if (pStream->state) - { - pStream->zfree(pStream->opaque, pStream->state); - pStream->state = NULL; - } - return MZ_OK; -} - -int mz_uncompress(unsigned char *pDest, mz_ulong *pDest_len, const unsigned char *pSource, mz_ulong source_len) -{ - mz_stream stream; - int status; - memset(&stream, 0, sizeof(stream)); - - /* In case mz_ulong is 64-bits (argh I hate longs). */ - if ((source_len | *pDest_len) > 0xFFFFFFFFU) - return MZ_PARAM_ERROR; - - stream.next_in = pSource; - stream.avail_in = (mz_uint32)source_len; - stream.next_out = pDest; - stream.avail_out = (mz_uint32)*pDest_len; - - status = mz_inflateInit(&stream); - if (status != MZ_OK) - return status; - - status = mz_inflate(&stream, MZ_FINISH); - if (status != MZ_STREAM_END) - { - mz_inflateEnd(&stream); - return ((status == MZ_BUF_ERROR) && (!stream.avail_in)) ? MZ_DATA_ERROR : status; - } - *pDest_len = stream.total_out; - - return mz_inflateEnd(&stream); -} - -const char *mz_error(int err) -{ - static struct - { - int m_err; - const char *m_pDesc; - } s_error_descs[] = - { - { MZ_OK, "" }, { MZ_STREAM_END, "stream end" }, { MZ_NEED_DICT, "need dictionary" }, { MZ_ERRNO, "file error" }, { MZ_STREAM_ERROR, "stream error" }, { MZ_DATA_ERROR, "data error" }, { MZ_MEM_ERROR, "out of memory" }, { MZ_BUF_ERROR, "buf error" }, { MZ_VERSION_ERROR, "version error" }, { MZ_PARAM_ERROR, "parameter error" } - }; - mz_uint i; - for (i = 0; i < sizeof(s_error_descs) / sizeof(s_error_descs[0]); ++i) - if (s_error_descs[i].m_err == err) - return s_error_descs[i].m_pDesc; - return NULL; -} - -#endif /*MINIZ_NO_ZLIB_APIS */ - -#ifdef __cplusplus -} -#endif - -/* - This is free and unencumbered software released into the public domain. - - Anyone is free to copy, modify, publish, use, compile, sell, or - distribute this software, either in source code form or as a compiled - binary, for any purpose, commercial or non-commercial, and by any - means. - - In jurisdictions that recognize copyright laws, the author or authors - of this software dedicate any and all copyright interest in the - software to the public domain. We make this dedication for the benefit - of the public at large and to the detriment of our heirs and - successors. We intend this dedication to be an overt act of - relinquishment in perpetuity of all present and future rights to this - software under copyright law. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, - ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - - For more information, please refer to -*/ -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - - - - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- Low-level Compression (independent from all decompression API's) */ - -/* Purposely making these tables static for faster init and thread safety. */ -static const mz_uint16 s_tdefl_len_sym[256] = - { - 257, 258, 259, 260, 261, 262, 263, 264, 265, 265, 266, 266, 267, 267, 268, 268, 269, 269, 269, 269, 270, 270, 270, 270, 271, 271, 271, 271, 272, 272, 272, 272, - 273, 273, 273, 273, 273, 273, 273, 273, 274, 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, 275, 275, 275, 275, 275, 276, 276, 276, 276, 276, 276, 276, 276, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, 280, - 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, 282, - 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, 283, - 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 284, 285 - }; - -static const mz_uint8 s_tdefl_len_extra[256] = - { - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 - }; - -static const mz_uint8 s_tdefl_small_dist_sym[512] = - { - 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17 - }; - -static const mz_uint8 s_tdefl_small_dist_extra[512] = - { - 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7 - }; - -static const mz_uint8 s_tdefl_large_dist_sym[128] = - { - 0, 0, 18, 19, 20, 20, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 - }; - -static const mz_uint8 s_tdefl_large_dist_extra[128] = - { - 0, 0, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13 - }; - -/* Radix sorts tdefl_sym_freq[] array by 16-bit key m_key. Returns ptr to sorted values. */ -typedef struct -{ - mz_uint16 m_key, m_sym_index; -} tdefl_sym_freq; -static tdefl_sym_freq *tdefl_radix_sort_syms(mz_uint num_syms, tdefl_sym_freq *pSyms0, tdefl_sym_freq *pSyms1) -{ - mz_uint32 total_passes = 2, pass_shift, pass, i, hist[256 * 2]; - tdefl_sym_freq *pCur_syms = pSyms0, *pNew_syms = pSyms1; - MZ_CLEAR_OBJ(hist); - for (i = 0; i < num_syms; i++) - { - mz_uint freq = pSyms0[i].m_key; - hist[freq & 0xFF]++; - hist[256 + ((freq >> 8) & 0xFF)]++; - } - while ((total_passes > 1) && (num_syms == hist[(total_passes - 1) * 256])) - total_passes--; - for (pass_shift = 0, pass = 0; pass < total_passes; pass++, pass_shift += 8) - { - const mz_uint32 *pHist = &hist[pass << 8]; - mz_uint offsets[256], cur_ofs = 0; - for (i = 0; i < 256; i++) - { - offsets[i] = cur_ofs; - cur_ofs += pHist[i]; - } - for (i = 0; i < num_syms; i++) - pNew_syms[offsets[(pCur_syms[i].m_key >> pass_shift) & 0xFF]++] = pCur_syms[i]; - { - tdefl_sym_freq *t = pCur_syms; - pCur_syms = pNew_syms; - pNew_syms = t; - } - } - return pCur_syms; -} - -/* tdefl_calculate_minimum_redundancy() originally written by: Alistair Moffat, alistair@cs.mu.oz.au, Jyrki Katajainen, jyrki@diku.dk, November 1996. */ -static void tdefl_calculate_minimum_redundancy(tdefl_sym_freq *A, int n) -{ - int root, leaf, next, avbl, used, dpth; - if (n == 0) - return; - else if (n == 1) - { - A[0].m_key = 1; - return; - } - A[0].m_key += A[1].m_key; - root = 0; - leaf = 2; - for (next = 1; next < n - 1; next++) - { - if (leaf >= n || A[root].m_key < A[leaf].m_key) - { - A[next].m_key = A[root].m_key; - A[root++].m_key = (mz_uint16)next; - } - else - A[next].m_key = A[leaf++].m_key; - if (leaf >= n || (root < next && A[root].m_key < A[leaf].m_key)) - { - A[next].m_key = (mz_uint16)(A[next].m_key + A[root].m_key); - A[root++].m_key = (mz_uint16)next; - } - else - A[next].m_key = (mz_uint16)(A[next].m_key + A[leaf++].m_key); - } - A[n - 2].m_key = 0; - for (next = n - 3; next >= 0; next--) - A[next].m_key = A[A[next].m_key].m_key + 1; - avbl = 1; - used = dpth = 0; - root = n - 2; - next = n - 1; - while (avbl > 0) - { - while (root >= 0 && (int)A[root].m_key == dpth) - { - used++; - root--; - } - while (avbl > used) - { - A[next--].m_key = (mz_uint16)(dpth); - avbl--; - } - avbl = 2 * used; - dpth++; - used = 0; - } -} - -/* Limits canonical Huffman code table's max code size. */ -enum -{ - TDEFL_MAX_SUPPORTED_HUFF_CODESIZE = 32 -}; -static void tdefl_huffman_enforce_max_code_size(int *pNum_codes, int code_list_len, int max_code_size) -{ - int i; - mz_uint32 total = 0; - if (code_list_len <= 1) - return; - for (i = max_code_size + 1; i <= TDEFL_MAX_SUPPORTED_HUFF_CODESIZE; i++) - pNum_codes[max_code_size] += pNum_codes[i]; - for (i = max_code_size; i > 0; i--) - total += (((mz_uint32)pNum_codes[i]) << (max_code_size - i)); - while (total != (1UL << max_code_size)) - { - pNum_codes[max_code_size]--; - for (i = max_code_size - 1; i > 0; i--) - if (pNum_codes[i]) - { - pNum_codes[i]--; - pNum_codes[i + 1] += 2; - break; - } - total--; - } -} - -static void tdefl_optimize_huffman_table(tdefl_compressor *d, int table_num, int table_len, int code_size_limit, int static_table) -{ - int i, j, l, num_codes[1 + TDEFL_MAX_SUPPORTED_HUFF_CODESIZE]; - mz_uint next_code[TDEFL_MAX_SUPPORTED_HUFF_CODESIZE + 1]; - MZ_CLEAR_OBJ(num_codes); - if (static_table) - { - for (i = 0; i < table_len; i++) - num_codes[d->m_huff_code_sizes[table_num][i]]++; - } - else - { - tdefl_sym_freq syms0[TDEFL_MAX_HUFF_SYMBOLS], syms1[TDEFL_MAX_HUFF_SYMBOLS], *pSyms; - int num_used_syms = 0; - const mz_uint16 *pSym_count = &d->m_huff_count[table_num][0]; - for (i = 0; i < table_len; i++) - if (pSym_count[i]) - { - syms0[num_used_syms].m_key = (mz_uint16)pSym_count[i]; - syms0[num_used_syms++].m_sym_index = (mz_uint16)i; - } - - pSyms = tdefl_radix_sort_syms(num_used_syms, syms0, syms1); - tdefl_calculate_minimum_redundancy(pSyms, num_used_syms); - - for (i = 0; i < num_used_syms; i++) - num_codes[pSyms[i].m_key]++; - - tdefl_huffman_enforce_max_code_size(num_codes, num_used_syms, code_size_limit); - - MZ_CLEAR_OBJ(d->m_huff_code_sizes[table_num]); - MZ_CLEAR_OBJ(d->m_huff_codes[table_num]); - for (i = 1, j = num_used_syms; i <= code_size_limit; i++) - for (l = num_codes[i]; l > 0; l--) - d->m_huff_code_sizes[table_num][pSyms[--j].m_sym_index] = (mz_uint8)(i); - } - - next_code[1] = 0; - for (j = 0, i = 2; i <= code_size_limit; i++) - next_code[i] = j = ((j + num_codes[i - 1]) << 1); - - for (i = 0; i < table_len; i++) - { - mz_uint rev_code = 0, code, code_size; - if ((code_size = d->m_huff_code_sizes[table_num][i]) == 0) - continue; - code = next_code[code_size]++; - for (l = code_size; l > 0; l--, code >>= 1) - rev_code = (rev_code << 1) | (code & 1); - d->m_huff_codes[table_num][i] = (mz_uint16)rev_code; - } -} - -#define TDEFL_PUT_BITS(b, l) \ - do \ - { \ - mz_uint bits = b; \ - mz_uint len = l; \ - MZ_ASSERT(bits <= ((1U << len) - 1U)); \ - d->m_bit_buffer |= (bits << d->m_bits_in); \ - d->m_bits_in += len; \ - while (d->m_bits_in >= 8) \ - { \ - if (d->m_pOutput_buf < d->m_pOutput_buf_end) \ - *d->m_pOutput_buf++ = (mz_uint8)(d->m_bit_buffer); \ - d->m_bit_buffer >>= 8; \ - d->m_bits_in -= 8; \ - } \ - } \ - MZ_MACRO_END - -#define TDEFL_RLE_PREV_CODE_SIZE() \ - { \ - if (rle_repeat_count) \ - { \ - if (rle_repeat_count < 3) \ - { \ - d->m_huff_count[2][prev_code_size] = (mz_uint16)(d->m_huff_count[2][prev_code_size] + rle_repeat_count); \ - while (rle_repeat_count--) \ - packed_code_sizes[num_packed_code_sizes++] = prev_code_size; \ - } \ - else \ - { \ - d->m_huff_count[2][16] = (mz_uint16)(d->m_huff_count[2][16] + 1); \ - packed_code_sizes[num_packed_code_sizes++] = 16; \ - packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_repeat_count - 3); \ - } \ - rle_repeat_count = 0; \ - } \ - } - -#define TDEFL_RLE_ZERO_CODE_SIZE() \ - { \ - if (rle_z_count) \ - { \ - if (rle_z_count < 3) \ - { \ - d->m_huff_count[2][0] = (mz_uint16)(d->m_huff_count[2][0] + rle_z_count); \ - while (rle_z_count--) \ - packed_code_sizes[num_packed_code_sizes++] = 0; \ - } \ - else if (rle_z_count <= 10) \ - { \ - d->m_huff_count[2][17] = (mz_uint16)(d->m_huff_count[2][17] + 1); \ - packed_code_sizes[num_packed_code_sizes++] = 17; \ - packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 3); \ - } \ - else \ - { \ - d->m_huff_count[2][18] = (mz_uint16)(d->m_huff_count[2][18] + 1); \ - packed_code_sizes[num_packed_code_sizes++] = 18; \ - packed_code_sizes[num_packed_code_sizes++] = (mz_uint8)(rle_z_count - 11); \ - } \ - rle_z_count = 0; \ - } \ - } - -static mz_uint8 s_tdefl_packed_code_size_syms_swizzle[] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; - -static void tdefl_start_dynamic_block(tdefl_compressor *d) -{ - int num_lit_codes, num_dist_codes, num_bit_lengths; - mz_uint i, total_code_sizes_to_pack, num_packed_code_sizes, rle_z_count, rle_repeat_count, packed_code_sizes_index; - mz_uint8 code_sizes_to_pack[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], packed_code_sizes[TDEFL_MAX_HUFF_SYMBOLS_0 + TDEFL_MAX_HUFF_SYMBOLS_1], prev_code_size = 0xFF; - - d->m_huff_count[0][256] = 1; - - tdefl_optimize_huffman_table(d, 0, TDEFL_MAX_HUFF_SYMBOLS_0, 15, MZ_FALSE); - tdefl_optimize_huffman_table(d, 1, TDEFL_MAX_HUFF_SYMBOLS_1, 15, MZ_FALSE); - - for (num_lit_codes = 286; num_lit_codes > 257; num_lit_codes--) - if (d->m_huff_code_sizes[0][num_lit_codes - 1]) - break; - for (num_dist_codes = 30; num_dist_codes > 1; num_dist_codes--) - if (d->m_huff_code_sizes[1][num_dist_codes - 1]) - break; - - memcpy(code_sizes_to_pack, &d->m_huff_code_sizes[0][0], num_lit_codes); - memcpy(code_sizes_to_pack + num_lit_codes, &d->m_huff_code_sizes[1][0], num_dist_codes); - total_code_sizes_to_pack = num_lit_codes + num_dist_codes; - num_packed_code_sizes = 0; - rle_z_count = 0; - rle_repeat_count = 0; - - memset(&d->m_huff_count[2][0], 0, sizeof(d->m_huff_count[2][0]) * TDEFL_MAX_HUFF_SYMBOLS_2); - for (i = 0; i < total_code_sizes_to_pack; i++) - { - mz_uint8 code_size = code_sizes_to_pack[i]; - if (!code_size) - { - TDEFL_RLE_PREV_CODE_SIZE(); - if (++rle_z_count == 138) - { - TDEFL_RLE_ZERO_CODE_SIZE(); - } - } - else - { - TDEFL_RLE_ZERO_CODE_SIZE(); - if (code_size != prev_code_size) - { - TDEFL_RLE_PREV_CODE_SIZE(); - d->m_huff_count[2][code_size] = (mz_uint16)(d->m_huff_count[2][code_size] + 1); - packed_code_sizes[num_packed_code_sizes++] = code_size; - } - else if (++rle_repeat_count == 6) - { - TDEFL_RLE_PREV_CODE_SIZE(); - } - } - prev_code_size = code_size; - } - if (rle_repeat_count) - { - TDEFL_RLE_PREV_CODE_SIZE(); - } - else - { - TDEFL_RLE_ZERO_CODE_SIZE(); - } - - tdefl_optimize_huffman_table(d, 2, TDEFL_MAX_HUFF_SYMBOLS_2, 7, MZ_FALSE); - - TDEFL_PUT_BITS(2, 2); - - TDEFL_PUT_BITS(num_lit_codes - 257, 5); - TDEFL_PUT_BITS(num_dist_codes - 1, 5); - - for (num_bit_lengths = 18; num_bit_lengths >= 0; num_bit_lengths--) - if (d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[num_bit_lengths]]) - break; - num_bit_lengths = MZ_MAX(4, (num_bit_lengths + 1)); - TDEFL_PUT_BITS(num_bit_lengths - 4, 4); - for (i = 0; (int)i < num_bit_lengths; i++) - TDEFL_PUT_BITS(d->m_huff_code_sizes[2][s_tdefl_packed_code_size_syms_swizzle[i]], 3); - - for (packed_code_sizes_index = 0; packed_code_sizes_index < num_packed_code_sizes;) - { - mz_uint code = packed_code_sizes[packed_code_sizes_index++]; - MZ_ASSERT(code < TDEFL_MAX_HUFF_SYMBOLS_2); - TDEFL_PUT_BITS(d->m_huff_codes[2][code], d->m_huff_code_sizes[2][code]); - if (code >= 16) - TDEFL_PUT_BITS(packed_code_sizes[packed_code_sizes_index++], "\02\03\07"[code - 16]); - } -} - -static void tdefl_start_static_block(tdefl_compressor *d) -{ - mz_uint i; - mz_uint8 *p = &d->m_huff_code_sizes[0][0]; - - for (i = 0; i <= 143; ++i) - *p++ = 8; - for (; i <= 255; ++i) - *p++ = 9; - for (; i <= 279; ++i) - *p++ = 7; - for (; i <= 287; ++i) - *p++ = 8; - - memset(d->m_huff_code_sizes[1], 5, 32); - - tdefl_optimize_huffman_table(d, 0, 288, 15, MZ_TRUE); - tdefl_optimize_huffman_table(d, 1, 32, 15, MZ_TRUE); - - TDEFL_PUT_BITS(1, 2); -} - -static const mz_uint mz_bitmasks[17] = { 0x0000, 0x0001, 0x0003, 0x0007, 0x000F, 0x001F, 0x003F, 0x007F, 0x00FF, 0x01FF, 0x03FF, 0x07FF, 0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF }; - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS -static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) -{ - mz_uint flags; - mz_uint8 *pLZ_codes; - mz_uint8 *pOutput_buf = d->m_pOutput_buf; - mz_uint8 *pLZ_code_buf_end = d->m_pLZ_code_buf; - mz_uint64 bit_buffer = d->m_bit_buffer; - mz_uint bits_in = d->m_bits_in; - -#define TDEFL_PUT_BITS_FAST(b, l) \ - { \ - bit_buffer |= (((mz_uint64)(b)) << bits_in); \ - bits_in += (l); \ - } - - flags = 1; - for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < pLZ_code_buf_end; flags >>= 1) - { - if (flags == 1) - flags = *pLZ_codes++ | 0x100; - - if (flags & 1) - { - mz_uint s0, s1, n0, n1, sym, num_extra_bits; - mz_uint match_len = pLZ_codes[0], match_dist = *(const mz_uint16 *)(pLZ_codes + 1); - pLZ_codes += 3; - - MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS_FAST(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]); - - /* This sequence coaxes MSVC into using cmov's vs. jmp's. */ - s0 = s_tdefl_small_dist_sym[match_dist & 511]; - n0 = s_tdefl_small_dist_extra[match_dist & 511]; - s1 = s_tdefl_large_dist_sym[match_dist >> 8]; - n1 = s_tdefl_large_dist_extra[match_dist >> 8]; - sym = (match_dist < 512) ? s0 : s1; - num_extra_bits = (match_dist < 512) ? n0 : n1; - - MZ_ASSERT(d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS_FAST(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits); - } - else - { - mz_uint lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - - if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) - { - flags >>= 1; - lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - - if (((flags & 2) == 0) && (pLZ_codes < pLZ_code_buf_end)) - { - flags >>= 1; - lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS_FAST(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - } - } - } - - if (pOutput_buf >= d->m_pOutput_buf_end) - return MZ_FALSE; - - *(mz_uint64 *)pOutput_buf = bit_buffer; - pOutput_buf += (bits_in >> 3); - bit_buffer >>= (bits_in & ~7); - bits_in &= 7; - } - -#undef TDEFL_PUT_BITS_FAST - - d->m_pOutput_buf = pOutput_buf; - d->m_bits_in = 0; - d->m_bit_buffer = 0; - - while (bits_in) - { - mz_uint32 n = MZ_MIN(bits_in, 16); - TDEFL_PUT_BITS((mz_uint)bit_buffer & mz_bitmasks[n], n); - bit_buffer >>= n; - bits_in -= n; - } - - TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]); - - return (d->m_pOutput_buf < d->m_pOutput_buf_end); -} -#else -static mz_bool tdefl_compress_lz_codes(tdefl_compressor *d) -{ - mz_uint flags; - mz_uint8 *pLZ_codes; - - flags = 1; - for (pLZ_codes = d->m_lz_code_buf; pLZ_codes < d->m_pLZ_code_buf; flags >>= 1) - { - if (flags == 1) - flags = *pLZ_codes++ | 0x100; - if (flags & 1) - { - mz_uint sym, num_extra_bits; - mz_uint match_len = pLZ_codes[0], match_dist = (pLZ_codes[1] | (pLZ_codes[2] << 8)); - pLZ_codes += 3; - - MZ_ASSERT(d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS(d->m_huff_codes[0][s_tdefl_len_sym[match_len]], d->m_huff_code_sizes[0][s_tdefl_len_sym[match_len]]); - TDEFL_PUT_BITS(match_len & mz_bitmasks[s_tdefl_len_extra[match_len]], s_tdefl_len_extra[match_len]); - - if (match_dist < 512) - { - sym = s_tdefl_small_dist_sym[match_dist]; - num_extra_bits = s_tdefl_small_dist_extra[match_dist]; - } - else - { - sym = s_tdefl_large_dist_sym[match_dist >> 8]; - num_extra_bits = s_tdefl_large_dist_extra[match_dist >> 8]; - } - MZ_ASSERT(d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS(d->m_huff_codes[1][sym], d->m_huff_code_sizes[1][sym]); - TDEFL_PUT_BITS(match_dist & mz_bitmasks[num_extra_bits], num_extra_bits); - } - else - { - mz_uint lit = *pLZ_codes++; - MZ_ASSERT(d->m_huff_code_sizes[0][lit]); - TDEFL_PUT_BITS(d->m_huff_codes[0][lit], d->m_huff_code_sizes[0][lit]); - } - } - - TDEFL_PUT_BITS(d->m_huff_codes[0][256], d->m_huff_code_sizes[0][256]); - - return (d->m_pOutput_buf < d->m_pOutput_buf_end); -} -#endif /* MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN && MINIZ_HAS_64BIT_REGISTERS */ - -static mz_bool tdefl_compress_block(tdefl_compressor *d, mz_bool static_block) -{ - if (static_block) - tdefl_start_static_block(d); - else - tdefl_start_dynamic_block(d); - return tdefl_compress_lz_codes(d); -} - -static int tdefl_flush_block(tdefl_compressor *d, int flush) -{ - mz_uint saved_bit_buf, saved_bits_in; - mz_uint8 *pSaved_output_buf; - mz_bool comp_block_succeeded = MZ_FALSE; - int n, use_raw_block = ((d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS) != 0) && (d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size; - mz_uint8 *pOutput_buf_start = ((d->m_pPut_buf_func == NULL) && ((*d->m_pOut_buf_size - d->m_out_buf_ofs) >= TDEFL_OUT_BUF_SIZE)) ? ((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs) : d->m_output_buf; - - d->m_pOutput_buf = pOutput_buf_start; - d->m_pOutput_buf_end = d->m_pOutput_buf + TDEFL_OUT_BUF_SIZE - 16; - - MZ_ASSERT(!d->m_output_flush_remaining); - d->m_output_flush_ofs = 0; - d->m_output_flush_remaining = 0; - - *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> d->m_num_flags_left); - d->m_pLZ_code_buf -= (d->m_num_flags_left == 8); - - if ((d->m_flags & TDEFL_WRITE_ZLIB_HEADER) && (!d->m_block_index)) - { - TDEFL_PUT_BITS(0x78, 8); - TDEFL_PUT_BITS(0x01, 8); - } - - TDEFL_PUT_BITS(flush == TDEFL_FINISH, 1); - - pSaved_output_buf = d->m_pOutput_buf; - saved_bit_buf = d->m_bit_buffer; - saved_bits_in = d->m_bits_in; - - if (!use_raw_block) - comp_block_succeeded = tdefl_compress_block(d, (d->m_flags & TDEFL_FORCE_ALL_STATIC_BLOCKS) || (d->m_total_lz_bytes < 48)); - - /* If the block gets expanded, forget the current contents of the output buffer and send a raw block instead. */ - if (((use_raw_block) || ((d->m_total_lz_bytes) && ((d->m_pOutput_buf - pSaved_output_buf + 1U) >= d->m_total_lz_bytes))) && - ((d->m_lookahead_pos - d->m_lz_code_buf_dict_pos) <= d->m_dict_size)) - { - mz_uint i; - d->m_pOutput_buf = pSaved_output_buf; - d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; - TDEFL_PUT_BITS(0, 2); - if (d->m_bits_in) - { - TDEFL_PUT_BITS(0, 8 - d->m_bits_in); - } - for (i = 2; i; --i, d->m_total_lz_bytes ^= 0xFFFF) - { - TDEFL_PUT_BITS(d->m_total_lz_bytes & 0xFFFF, 16); - } - for (i = 0; i < d->m_total_lz_bytes; ++i) - { - TDEFL_PUT_BITS(d->m_dict[(d->m_lz_code_buf_dict_pos + i) & TDEFL_LZ_DICT_SIZE_MASK], 8); - } - } - /* Check for the extremely unlikely (if not impossible) case of the compressed block not fitting into the output buffer when using dynamic codes. */ - else if (!comp_block_succeeded) - { - d->m_pOutput_buf = pSaved_output_buf; - d->m_bit_buffer = saved_bit_buf, d->m_bits_in = saved_bits_in; - tdefl_compress_block(d, MZ_TRUE); - } - - if (flush) - { - if (flush == TDEFL_FINISH) - { - if (d->m_bits_in) - { - TDEFL_PUT_BITS(0, 8 - d->m_bits_in); - } - if (d->m_flags & TDEFL_WRITE_ZLIB_HEADER) - { - mz_uint i, a = d->m_adler32; - for (i = 0; i < 4; i++) - { - TDEFL_PUT_BITS((a >> 24) & 0xFF, 8); - a <<= 8; - } - } - } - else - { - mz_uint i, z = 0; - TDEFL_PUT_BITS(0, 3); - if (d->m_bits_in) - { - TDEFL_PUT_BITS(0, 8 - d->m_bits_in); - } - for (i = 2; i; --i, z ^= 0xFFFF) - { - TDEFL_PUT_BITS(z & 0xFFFF, 16); - } - } - } - - MZ_ASSERT(d->m_pOutput_buf < d->m_pOutput_buf_end); - - memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); - memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); - - d->m_pLZ_code_buf = d->m_lz_code_buf + 1; - d->m_pLZ_flags = d->m_lz_code_buf; - d->m_num_flags_left = 8; - d->m_lz_code_buf_dict_pos += d->m_total_lz_bytes; - d->m_total_lz_bytes = 0; - d->m_block_index++; - - if ((n = (int)(d->m_pOutput_buf - pOutput_buf_start)) != 0) - { - if (d->m_pPut_buf_func) - { - *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf; - if (!(*d->m_pPut_buf_func)(d->m_output_buf, n, d->m_pPut_buf_user)) - return (d->m_prev_return_status = TDEFL_STATUS_PUT_BUF_FAILED); - } - else if (pOutput_buf_start == d->m_output_buf) - { - int bytes_to_copy = (int)MZ_MIN((size_t)n, (size_t)(*d->m_pOut_buf_size - d->m_out_buf_ofs)); - memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf, bytes_to_copy); - d->m_out_buf_ofs += bytes_to_copy; - if ((n -= bytes_to_copy) != 0) - { - d->m_output_flush_ofs = bytes_to_copy; - d->m_output_flush_remaining = n; - } - } - else - { - d->m_out_buf_ofs += n; - } - } - - return d->m_output_flush_remaining; -} - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES -#ifdef MINIZ_UNALIGNED_USE_MEMCPY -static inline mz_uint16 TDEFL_READ_UNALIGNED_WORD(const mz_uint8* p) -{ - mz_uint16 ret; - memcpy(&ret, p, sizeof(mz_uint16)); - return ret; -} -static inline mz_uint16 TDEFL_READ_UNALIGNED_WORD2(const mz_uint16* p) -{ - mz_uint16 ret; - memcpy(&ret, p, sizeof(mz_uint16)); - return ret; -} -#else -#define TDEFL_READ_UNALIGNED_WORD(p) *(const mz_uint16 *)(p) -#define TDEFL_READ_UNALIGNED_WORD2(p) *(const mz_uint16 *)(p) -#endif -static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len) -{ - mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len; - mz_uint num_probes_left = d->m_max_probes[match_len >= 32]; - const mz_uint16 *s = (const mz_uint16 *)(d->m_dict + pos), *p, *q; - mz_uint16 c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]), s01 = TDEFL_READ_UNALIGNED_WORD2(s); - MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); - if (max_match_len <= match_len) - return; - for (;;) - { - for (;;) - { - if (--num_probes_left == 0) - return; -#define TDEFL_PROBE \ - next_probe_pos = d->m_next[probe_pos]; \ - if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ - return; \ - probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ - if (TDEFL_READ_UNALIGNED_WORD(&d->m_dict[probe_pos + match_len - 1]) == c01) \ - break; - TDEFL_PROBE; - TDEFL_PROBE; - TDEFL_PROBE; - } - if (!dist) - break; - q = (const mz_uint16 *)(d->m_dict + probe_pos); - if (TDEFL_READ_UNALIGNED_WORD2(q) != s01) - continue; - p = s; - probe_len = 32; - do - { - } while ((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && - (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0)); - if (!probe_len) - { - *pMatch_dist = dist; - *pMatch_len = MZ_MIN(max_match_len, (mz_uint)TDEFL_MAX_MATCH_LEN); - break; - } - else if ((probe_len = ((mz_uint)(p - s) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q)) > match_len) - { - *pMatch_dist = dist; - if ((*pMatch_len = match_len = MZ_MIN(max_match_len, probe_len)) == max_match_len) - break; - c01 = TDEFL_READ_UNALIGNED_WORD(&d->m_dict[pos + match_len - 1]); - } - } -} -#else -static MZ_FORCEINLINE void tdefl_find_match(tdefl_compressor *d, mz_uint lookahead_pos, mz_uint max_dist, mz_uint max_match_len, mz_uint *pMatch_dist, mz_uint *pMatch_len) -{ - mz_uint dist, pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK, match_len = *pMatch_len, probe_pos = pos, next_probe_pos, probe_len; - mz_uint num_probes_left = d->m_max_probes[match_len >= 32]; - const mz_uint8 *s = d->m_dict + pos, *p, *q; - mz_uint8 c0 = d->m_dict[pos + match_len], c1 = d->m_dict[pos + match_len - 1]; - MZ_ASSERT(max_match_len <= TDEFL_MAX_MATCH_LEN); - if (max_match_len <= match_len) - return; - for (;;) - { - for (;;) - { - if (--num_probes_left == 0) - return; -#define TDEFL_PROBE \ - next_probe_pos = d->m_next[probe_pos]; \ - if ((!next_probe_pos) || ((dist = (mz_uint16)(lookahead_pos - next_probe_pos)) > max_dist)) \ - return; \ - probe_pos = next_probe_pos & TDEFL_LZ_DICT_SIZE_MASK; \ - if ((d->m_dict[probe_pos + match_len] == c0) && (d->m_dict[probe_pos + match_len - 1] == c1)) \ - break; - TDEFL_PROBE; - TDEFL_PROBE; - TDEFL_PROBE; - } - if (!dist) - break; - p = s; - q = d->m_dict + probe_pos; - for (probe_len = 0; probe_len < max_match_len; probe_len++) - if (*p++ != *q++) - break; - if (probe_len > match_len) - { - *pMatch_dist = dist; - if ((*pMatch_len = match_len = probe_len) == max_match_len) - return; - c0 = d->m_dict[pos + match_len]; - c1 = d->m_dict[pos + match_len - 1]; - } - } -} -#endif /* #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES */ - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN -static mz_bool tdefl_compress_fast(tdefl_compressor *d) -{ - /* Faster, minimally featured LZRW1-style match+parse loop with better register utilization. Intended for applications where raw throughput is valued more highly than ratio. */ - mz_uint lookahead_pos = d->m_lookahead_pos, lookahead_size = d->m_lookahead_size, dict_size = d->m_dict_size, total_lz_bytes = d->m_total_lz_bytes, num_flags_left = d->m_num_flags_left; - mz_uint8 *pLZ_code_buf = d->m_pLZ_code_buf, *pLZ_flags = d->m_pLZ_flags; - mz_uint cur_pos = lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; - - while ((d->m_src_buf_left) || ((d->m_flush) && (lookahead_size))) - { - const mz_uint TDEFL_COMP_FAST_LOOKAHEAD_SIZE = 4096; - mz_uint dst_pos = (lookahead_pos + lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; - mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(d->m_src_buf_left, TDEFL_COMP_FAST_LOOKAHEAD_SIZE - lookahead_size); - d->m_src_buf_left -= num_bytes_to_process; - lookahead_size += num_bytes_to_process; - - while (num_bytes_to_process) - { - mz_uint32 n = MZ_MIN(TDEFL_LZ_DICT_SIZE - dst_pos, num_bytes_to_process); - memcpy(d->m_dict + dst_pos, d->m_pSrc, n); - if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - memcpy(d->m_dict + TDEFL_LZ_DICT_SIZE + dst_pos, d->m_pSrc, MZ_MIN(n, (TDEFL_MAX_MATCH_LEN - 1) - dst_pos)); - d->m_pSrc += n; - dst_pos = (dst_pos + n) & TDEFL_LZ_DICT_SIZE_MASK; - num_bytes_to_process -= n; - } - - dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - lookahead_size, dict_size); - if ((!d->m_flush) && (lookahead_size < TDEFL_COMP_FAST_LOOKAHEAD_SIZE)) - break; - - while (lookahead_size >= 4) - { - mz_uint cur_match_dist, cur_match_len = 1; - mz_uint8 *pCur_dict = d->m_dict + cur_pos; - mz_uint first_trigram = (*(const mz_uint32 *)pCur_dict) & 0xFFFFFF; - mz_uint hash = (first_trigram ^ (first_trigram >> (24 - (TDEFL_LZ_HASH_BITS - 8)))) & TDEFL_LEVEL1_HASH_SIZE_MASK; - mz_uint probe_pos = d->m_hash[hash]; - d->m_hash[hash] = (mz_uint16)lookahead_pos; - - if (((cur_match_dist = (mz_uint16)(lookahead_pos - probe_pos)) <= dict_size) && ((*(const mz_uint32 *)(d->m_dict + (probe_pos &= TDEFL_LZ_DICT_SIZE_MASK)) & 0xFFFFFF) == first_trigram)) - { - const mz_uint16 *p = (const mz_uint16 *)pCur_dict; - const mz_uint16 *q = (const mz_uint16 *)(d->m_dict + probe_pos); - mz_uint32 probe_len = 32; - do - { - } while ((TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && - (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (TDEFL_READ_UNALIGNED_WORD2(++p) == TDEFL_READ_UNALIGNED_WORD2(++q)) && (--probe_len > 0)); - cur_match_len = ((mz_uint)(p - (const mz_uint16 *)pCur_dict) * 2) + (mz_uint)(*(const mz_uint8 *)p == *(const mz_uint8 *)q); - if (!probe_len) - cur_match_len = cur_match_dist ? TDEFL_MAX_MATCH_LEN : 0; - - if ((cur_match_len < TDEFL_MIN_MATCH_LEN) || ((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U * 1024U))) - { - cur_match_len = 1; - *pLZ_code_buf++ = (mz_uint8)first_trigram; - *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - d->m_huff_count[0][(mz_uint8)first_trigram]++; - } - else - { - mz_uint32 s0, s1; - cur_match_len = MZ_MIN(cur_match_len, lookahead_size); - - MZ_ASSERT((cur_match_len >= TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 1) && (cur_match_dist <= TDEFL_LZ_DICT_SIZE)); - - cur_match_dist--; - - pLZ_code_buf[0] = (mz_uint8)(cur_match_len - TDEFL_MIN_MATCH_LEN); - *(mz_uint16 *)(&pLZ_code_buf[1]) = (mz_uint16)cur_match_dist; - pLZ_code_buf += 3; - *pLZ_flags = (mz_uint8)((*pLZ_flags >> 1) | 0x80); - - s0 = s_tdefl_small_dist_sym[cur_match_dist & 511]; - s1 = s_tdefl_large_dist_sym[cur_match_dist >> 8]; - d->m_huff_count[1][(cur_match_dist < 512) ? s0 : s1]++; - - d->m_huff_count[0][s_tdefl_len_sym[cur_match_len - TDEFL_MIN_MATCH_LEN]]++; - } - } - else - { - *pLZ_code_buf++ = (mz_uint8)first_trigram; - *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - d->m_huff_count[0][(mz_uint8)first_trigram]++; - } - - if (--num_flags_left == 0) - { - num_flags_left = 8; - pLZ_flags = pLZ_code_buf++; - } - - total_lz_bytes += cur_match_len; - lookahead_pos += cur_match_len; - dict_size = MZ_MIN(dict_size + cur_match_len, (mz_uint)TDEFL_LZ_DICT_SIZE); - cur_pos = (cur_pos + cur_match_len) & TDEFL_LZ_DICT_SIZE_MASK; - MZ_ASSERT(lookahead_size >= cur_match_len); - lookahead_size -= cur_match_len; - - if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) - { - int n; - d->m_lookahead_pos = lookahead_pos; - d->m_lookahead_size = lookahead_size; - d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; - d->m_pLZ_code_buf = pLZ_code_buf; - d->m_pLZ_flags = pLZ_flags; - d->m_num_flags_left = num_flags_left; - if ((n = tdefl_flush_block(d, 0)) != 0) - return (n < 0) ? MZ_FALSE : MZ_TRUE; - total_lz_bytes = d->m_total_lz_bytes; - pLZ_code_buf = d->m_pLZ_code_buf; - pLZ_flags = d->m_pLZ_flags; - num_flags_left = d->m_num_flags_left; - } - } - - while (lookahead_size) - { - mz_uint8 lit = d->m_dict[cur_pos]; - - total_lz_bytes++; - *pLZ_code_buf++ = lit; - *pLZ_flags = (mz_uint8)(*pLZ_flags >> 1); - if (--num_flags_left == 0) - { - num_flags_left = 8; - pLZ_flags = pLZ_code_buf++; - } - - d->m_huff_count[0][lit]++; - - lookahead_pos++; - dict_size = MZ_MIN(dict_size + 1, (mz_uint)TDEFL_LZ_DICT_SIZE); - cur_pos = (cur_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; - lookahead_size--; - - if (pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) - { - int n; - d->m_lookahead_pos = lookahead_pos; - d->m_lookahead_size = lookahead_size; - d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; - d->m_pLZ_code_buf = pLZ_code_buf; - d->m_pLZ_flags = pLZ_flags; - d->m_num_flags_left = num_flags_left; - if ((n = tdefl_flush_block(d, 0)) != 0) - return (n < 0) ? MZ_FALSE : MZ_TRUE; - total_lz_bytes = d->m_total_lz_bytes; - pLZ_code_buf = d->m_pLZ_code_buf; - pLZ_flags = d->m_pLZ_flags; - num_flags_left = d->m_num_flags_left; - } - } - } - - d->m_lookahead_pos = lookahead_pos; - d->m_lookahead_size = lookahead_size; - d->m_dict_size = dict_size; - d->m_total_lz_bytes = total_lz_bytes; - d->m_pLZ_code_buf = pLZ_code_buf; - d->m_pLZ_flags = pLZ_flags; - d->m_num_flags_left = num_flags_left; - return MZ_TRUE; -} -#endif /* MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN */ - -static MZ_FORCEINLINE void tdefl_record_literal(tdefl_compressor *d, mz_uint8 lit) -{ - d->m_total_lz_bytes++; - *d->m_pLZ_code_buf++ = lit; - *d->m_pLZ_flags = (mz_uint8)(*d->m_pLZ_flags >> 1); - if (--d->m_num_flags_left == 0) - { - d->m_num_flags_left = 8; - d->m_pLZ_flags = d->m_pLZ_code_buf++; - } - d->m_huff_count[0][lit]++; -} - -static MZ_FORCEINLINE void tdefl_record_match(tdefl_compressor *d, mz_uint match_len, mz_uint match_dist) -{ - mz_uint32 s0, s1; - - MZ_ASSERT((match_len >= TDEFL_MIN_MATCH_LEN) && (match_dist >= 1) && (match_dist <= TDEFL_LZ_DICT_SIZE)); - - d->m_total_lz_bytes += match_len; - - d->m_pLZ_code_buf[0] = (mz_uint8)(match_len - TDEFL_MIN_MATCH_LEN); - - match_dist -= 1; - d->m_pLZ_code_buf[1] = (mz_uint8)(match_dist & 0xFF); - d->m_pLZ_code_buf[2] = (mz_uint8)(match_dist >> 8); - d->m_pLZ_code_buf += 3; - - *d->m_pLZ_flags = (mz_uint8)((*d->m_pLZ_flags >> 1) | 0x80); - if (--d->m_num_flags_left == 0) - { - d->m_num_flags_left = 8; - d->m_pLZ_flags = d->m_pLZ_code_buf++; - } - - s0 = s_tdefl_small_dist_sym[match_dist & 511]; - s1 = s_tdefl_large_dist_sym[(match_dist >> 8) & 127]; - d->m_huff_count[1][(match_dist < 512) ? s0 : s1]++; - - if (match_len >= TDEFL_MIN_MATCH_LEN) - d->m_huff_count[0][s_tdefl_len_sym[match_len - TDEFL_MIN_MATCH_LEN]]++; -} - -static mz_bool tdefl_compress_normal(tdefl_compressor *d) -{ - const mz_uint8 *pSrc = d->m_pSrc; - size_t src_buf_left = d->m_src_buf_left; - tdefl_flush flush = d->m_flush; - - while ((src_buf_left) || ((flush) && (d->m_lookahead_size))) - { - mz_uint len_to_move, cur_match_dist, cur_match_len, cur_pos; - /* Update dictionary and hash chains. Keeps the lookahead size equal to TDEFL_MAX_MATCH_LEN. */ - if ((d->m_lookahead_size + d->m_dict_size) >= (TDEFL_MIN_MATCH_LEN - 1)) - { - mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK, ins_pos = d->m_lookahead_pos + d->m_lookahead_size - 2; - mz_uint hash = (d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK]; - mz_uint num_bytes_to_process = (mz_uint)MZ_MIN(src_buf_left, TDEFL_MAX_MATCH_LEN - d->m_lookahead_size); - const mz_uint8 *pSrc_end = pSrc + num_bytes_to_process; - src_buf_left -= num_bytes_to_process; - d->m_lookahead_size += num_bytes_to_process; - while (pSrc != pSrc_end) - { - mz_uint8 c = *pSrc++; - d->m_dict[dst_pos] = c; - if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; - hash = ((hash << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); - d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; - d->m_hash[hash] = (mz_uint16)(ins_pos); - dst_pos = (dst_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK; - ins_pos++; - } - } - else - { - while ((src_buf_left) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) - { - mz_uint8 c = *pSrc++; - mz_uint dst_pos = (d->m_lookahead_pos + d->m_lookahead_size) & TDEFL_LZ_DICT_SIZE_MASK; - src_buf_left--; - d->m_dict[dst_pos] = c; - if (dst_pos < (TDEFL_MAX_MATCH_LEN - 1)) - d->m_dict[TDEFL_LZ_DICT_SIZE + dst_pos] = c; - if ((++d->m_lookahead_size + d->m_dict_size) >= TDEFL_MIN_MATCH_LEN) - { - mz_uint ins_pos = d->m_lookahead_pos + (d->m_lookahead_size - 1) - 2; - mz_uint hash = ((d->m_dict[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] << (TDEFL_LZ_HASH_SHIFT * 2)) ^ (d->m_dict[(ins_pos + 1) & TDEFL_LZ_DICT_SIZE_MASK] << TDEFL_LZ_HASH_SHIFT) ^ c) & (TDEFL_LZ_HASH_SIZE - 1); - d->m_next[ins_pos & TDEFL_LZ_DICT_SIZE_MASK] = d->m_hash[hash]; - d->m_hash[hash] = (mz_uint16)(ins_pos); - } - } - } - d->m_dict_size = MZ_MIN(TDEFL_LZ_DICT_SIZE - d->m_lookahead_size, d->m_dict_size); - if ((!flush) && (d->m_lookahead_size < TDEFL_MAX_MATCH_LEN)) - break; - - /* Simple lazy/greedy parsing state machine. */ - len_to_move = 1; - cur_match_dist = 0; - cur_match_len = d->m_saved_match_len ? d->m_saved_match_len : (TDEFL_MIN_MATCH_LEN - 1); - cur_pos = d->m_lookahead_pos & TDEFL_LZ_DICT_SIZE_MASK; - if (d->m_flags & (TDEFL_RLE_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS)) - { - if ((d->m_dict_size) && (!(d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS))) - { - mz_uint8 c = d->m_dict[(cur_pos - 1) & TDEFL_LZ_DICT_SIZE_MASK]; - cur_match_len = 0; - while (cur_match_len < d->m_lookahead_size) - { - if (d->m_dict[cur_pos + cur_match_len] != c) - break; - cur_match_len++; - } - if (cur_match_len < TDEFL_MIN_MATCH_LEN) - cur_match_len = 0; - else - cur_match_dist = 1; - } - } - else - { - tdefl_find_match(d, d->m_lookahead_pos, d->m_dict_size, d->m_lookahead_size, &cur_match_dist, &cur_match_len); - } - if (((cur_match_len == TDEFL_MIN_MATCH_LEN) && (cur_match_dist >= 8U * 1024U)) || (cur_pos == cur_match_dist) || ((d->m_flags & TDEFL_FILTER_MATCHES) && (cur_match_len <= 5))) - { - cur_match_dist = cur_match_len = 0; - } - if (d->m_saved_match_len) - { - if (cur_match_len > d->m_saved_match_len) - { - tdefl_record_literal(d, (mz_uint8)d->m_saved_lit); - if (cur_match_len >= 128) - { - tdefl_record_match(d, cur_match_len, cur_match_dist); - d->m_saved_match_len = 0; - len_to_move = cur_match_len; - } - else - { - d->m_saved_lit = d->m_dict[cur_pos]; - d->m_saved_match_dist = cur_match_dist; - d->m_saved_match_len = cur_match_len; - } - } - else - { - tdefl_record_match(d, d->m_saved_match_len, d->m_saved_match_dist); - len_to_move = d->m_saved_match_len - 1; - d->m_saved_match_len = 0; - } - } - else if (!cur_match_dist) - tdefl_record_literal(d, d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]); - else if ((d->m_greedy_parsing) || (d->m_flags & TDEFL_RLE_MATCHES) || (cur_match_len >= 128)) - { - tdefl_record_match(d, cur_match_len, cur_match_dist); - len_to_move = cur_match_len; - } - else - { - d->m_saved_lit = d->m_dict[MZ_MIN(cur_pos, sizeof(d->m_dict) - 1)]; - d->m_saved_match_dist = cur_match_dist; - d->m_saved_match_len = cur_match_len; - } - /* Move the lookahead forward by len_to_move bytes. */ - d->m_lookahead_pos += len_to_move; - MZ_ASSERT(d->m_lookahead_size >= len_to_move); - d->m_lookahead_size -= len_to_move; - d->m_dict_size = MZ_MIN(d->m_dict_size + len_to_move, (mz_uint)TDEFL_LZ_DICT_SIZE); - /* Check if it's time to flush the current LZ codes to the internal output buffer. */ - if ((d->m_pLZ_code_buf > &d->m_lz_code_buf[TDEFL_LZ_CODE_BUF_SIZE - 8]) || - ((d->m_total_lz_bytes > 31 * 1024) && (((((mz_uint)(d->m_pLZ_code_buf - d->m_lz_code_buf) * 115) >> 7) >= d->m_total_lz_bytes) || (d->m_flags & TDEFL_FORCE_ALL_RAW_BLOCKS)))) - { - int n; - d->m_pSrc = pSrc; - d->m_src_buf_left = src_buf_left; - if ((n = tdefl_flush_block(d, 0)) != 0) - return (n < 0) ? MZ_FALSE : MZ_TRUE; - } - } - - d->m_pSrc = pSrc; - d->m_src_buf_left = src_buf_left; - return MZ_TRUE; -} - -static tdefl_status tdefl_flush_output_buffer(tdefl_compressor *d) -{ - if (d->m_pIn_buf_size) - { - *d->m_pIn_buf_size = d->m_pSrc - (const mz_uint8 *)d->m_pIn_buf; - } - - if (d->m_pOut_buf_size) - { - size_t n = MZ_MIN(*d->m_pOut_buf_size - d->m_out_buf_ofs, d->m_output_flush_remaining); - memcpy((mz_uint8 *)d->m_pOut_buf + d->m_out_buf_ofs, d->m_output_buf + d->m_output_flush_ofs, n); - d->m_output_flush_ofs += (mz_uint)n; - d->m_output_flush_remaining -= (mz_uint)n; - d->m_out_buf_ofs += n; - - *d->m_pOut_buf_size = d->m_out_buf_ofs; - } - - return (d->m_finished && !d->m_output_flush_remaining) ? TDEFL_STATUS_DONE : TDEFL_STATUS_OKAY; -} - -tdefl_status tdefl_compress(tdefl_compressor *d, const void *pIn_buf, size_t *pIn_buf_size, void *pOut_buf, size_t *pOut_buf_size, tdefl_flush flush) -{ - if (!d) - { - if (pIn_buf_size) - *pIn_buf_size = 0; - if (pOut_buf_size) - *pOut_buf_size = 0; - return TDEFL_STATUS_BAD_PARAM; - } - - d->m_pIn_buf = pIn_buf; - d->m_pIn_buf_size = pIn_buf_size; - d->m_pOut_buf = pOut_buf; - d->m_pOut_buf_size = pOut_buf_size; - d->m_pSrc = (const mz_uint8 *)(pIn_buf); - d->m_src_buf_left = pIn_buf_size ? *pIn_buf_size : 0; - d->m_out_buf_ofs = 0; - d->m_flush = flush; - - if (((d->m_pPut_buf_func != NULL) == ((pOut_buf != NULL) || (pOut_buf_size != NULL))) || (d->m_prev_return_status != TDEFL_STATUS_OKAY) || - (d->m_wants_to_finish && (flush != TDEFL_FINISH)) || (pIn_buf_size && *pIn_buf_size && !pIn_buf) || (pOut_buf_size && *pOut_buf_size && !pOut_buf)) - { - if (pIn_buf_size) - *pIn_buf_size = 0; - if (pOut_buf_size) - *pOut_buf_size = 0; - return (d->m_prev_return_status = TDEFL_STATUS_BAD_PARAM); - } - d->m_wants_to_finish |= (flush == TDEFL_FINISH); - - if ((d->m_output_flush_remaining) || (d->m_finished)) - return (d->m_prev_return_status = tdefl_flush_output_buffer(d)); - -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN - if (((d->m_flags & TDEFL_MAX_PROBES_MASK) == 1) && - ((d->m_flags & TDEFL_GREEDY_PARSING_FLAG) != 0) && - ((d->m_flags & (TDEFL_FILTER_MATCHES | TDEFL_FORCE_ALL_RAW_BLOCKS | TDEFL_RLE_MATCHES)) == 0)) - { - if (!tdefl_compress_fast(d)) - return d->m_prev_return_status; - } - else -#endif /* #if MINIZ_USE_UNALIGNED_LOADS_AND_STORES && MINIZ_LITTLE_ENDIAN */ - { - if (!tdefl_compress_normal(d)) - return d->m_prev_return_status; - } - - if ((d->m_flags & (TDEFL_WRITE_ZLIB_HEADER | TDEFL_COMPUTE_ADLER32)) && (pIn_buf)) - d->m_adler32 = (mz_uint32)mz_adler32(d->m_adler32, (const mz_uint8 *)pIn_buf, d->m_pSrc - (const mz_uint8 *)pIn_buf); - - if ((flush) && (!d->m_lookahead_size) && (!d->m_src_buf_left) && (!d->m_output_flush_remaining)) - { - if (tdefl_flush_block(d, flush) < 0) - return d->m_prev_return_status; - d->m_finished = (flush == TDEFL_FINISH); - if (flush == TDEFL_FULL_FLUSH) - { - MZ_CLEAR_OBJ(d->m_hash); - MZ_CLEAR_OBJ(d->m_next); - d->m_dict_size = 0; - } - } - - return (d->m_prev_return_status = tdefl_flush_output_buffer(d)); -} - -tdefl_status tdefl_compress_buffer(tdefl_compressor *d, const void *pIn_buf, size_t in_buf_size, tdefl_flush flush) -{ - MZ_ASSERT(d->m_pPut_buf_func); - return tdefl_compress(d, pIn_buf, &in_buf_size, NULL, NULL, flush); -} - -tdefl_status tdefl_init(tdefl_compressor *d, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - d->m_pPut_buf_func = pPut_buf_func; - d->m_pPut_buf_user = pPut_buf_user; - d->m_flags = (mz_uint)(flags); - d->m_max_probes[0] = 1 + ((flags & 0xFFF) + 2) / 3; - d->m_greedy_parsing = (flags & TDEFL_GREEDY_PARSING_FLAG) != 0; - d->m_max_probes[1] = 1 + (((flags & 0xFFF) >> 2) + 2) / 3; - if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) - MZ_CLEAR_OBJ(d->m_hash); - d->m_lookahead_pos = d->m_lookahead_size = d->m_dict_size = d->m_total_lz_bytes = d->m_lz_code_buf_dict_pos = d->m_bits_in = 0; - d->m_output_flush_ofs = d->m_output_flush_remaining = d->m_finished = d->m_block_index = d->m_bit_buffer = d->m_wants_to_finish = 0; - d->m_pLZ_code_buf = d->m_lz_code_buf + 1; - d->m_pLZ_flags = d->m_lz_code_buf; - d->m_num_flags_left = 8; - d->m_pOutput_buf = d->m_output_buf; - d->m_pOutput_buf_end = d->m_output_buf; - d->m_prev_return_status = TDEFL_STATUS_OKAY; - d->m_saved_match_dist = d->m_saved_match_len = d->m_saved_lit = 0; - d->m_adler32 = 1; - d->m_pIn_buf = NULL; - d->m_pOut_buf = NULL; - d->m_pIn_buf_size = NULL; - d->m_pOut_buf_size = NULL; - d->m_flush = TDEFL_NO_FLUSH; - d->m_pSrc = NULL; - d->m_src_buf_left = 0; - d->m_out_buf_ofs = 0; - if (!(flags & TDEFL_NONDETERMINISTIC_PARSING_FLAG)) - MZ_CLEAR_OBJ(d->m_dict); - memset(&d->m_huff_count[0][0], 0, sizeof(d->m_huff_count[0][0]) * TDEFL_MAX_HUFF_SYMBOLS_0); - memset(&d->m_huff_count[1][0], 0, sizeof(d->m_huff_count[1][0]) * TDEFL_MAX_HUFF_SYMBOLS_1); - return TDEFL_STATUS_OKAY; -} - -tdefl_status tdefl_get_prev_return_status(tdefl_compressor *d) -{ - return d->m_prev_return_status; -} - -mz_uint32 tdefl_get_adler32(tdefl_compressor *d) -{ - return d->m_adler32; -} - -mz_bool tdefl_compress_mem_to_output(const void *pBuf, size_t buf_len, tdefl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - tdefl_compressor *pComp; - mz_bool succeeded; - if (((buf_len) && (!pBuf)) || (!pPut_buf_func)) - return MZ_FALSE; - pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); - if (!pComp) - return MZ_FALSE; - succeeded = (tdefl_init(pComp, pPut_buf_func, pPut_buf_user, flags) == TDEFL_STATUS_OKAY); - succeeded = succeeded && (tdefl_compress_buffer(pComp, pBuf, buf_len, TDEFL_FINISH) == TDEFL_STATUS_DONE); - MZ_FREE(pComp); - return succeeded; -} - -typedef struct -{ - size_t m_size, m_capacity; - mz_uint8 *m_pBuf; - mz_bool m_expandable; -} tdefl_output_buffer; - -static mz_bool tdefl_output_buffer_putter(const void *pBuf, int len, void *pUser) -{ - tdefl_output_buffer *p = (tdefl_output_buffer *)pUser; - size_t new_size = p->m_size + len; - if (new_size > p->m_capacity) - { - size_t new_capacity = p->m_capacity; - mz_uint8 *pNew_buf; - if (!p->m_expandable) - return MZ_FALSE; - do - { - new_capacity = MZ_MAX(128U, new_capacity << 1U); - } while (new_size > new_capacity); - pNew_buf = (mz_uint8 *)MZ_REALLOC(p->m_pBuf, new_capacity); - if (!pNew_buf) - return MZ_FALSE; - p->m_pBuf = pNew_buf; - p->m_capacity = new_capacity; - } - memcpy((mz_uint8 *)p->m_pBuf + p->m_size, pBuf, len); - p->m_size = new_size; - return MZ_TRUE; -} - -void *tdefl_compress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags) -{ - tdefl_output_buffer out_buf; - MZ_CLEAR_OBJ(out_buf); - if (!pOut_len) - return MZ_FALSE; - else - *pOut_len = 0; - out_buf.m_expandable = MZ_TRUE; - if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) - return NULL; - *pOut_len = out_buf.m_size; - return out_buf.m_pBuf; -} - -size_t tdefl_compress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags) -{ - tdefl_output_buffer out_buf; - MZ_CLEAR_OBJ(out_buf); - if (!pOut_buf) - return 0; - out_buf.m_pBuf = (mz_uint8 *)pOut_buf; - out_buf.m_capacity = out_buf_len; - if (!tdefl_compress_mem_to_output(pSrc_buf, src_buf_len, tdefl_output_buffer_putter, &out_buf, flags)) - return 0; - return out_buf.m_size; -} - -static const mz_uint s_tdefl_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 }; - -/* level may actually range from [0,10] (10 is a "hidden" max level, where we want a bit more compression and it's fine if throughput to fall off a cliff on some files). */ -mz_uint tdefl_create_comp_flags_from_zip_params(int level, int window_bits, int strategy) -{ - mz_uint comp_flags = s_tdefl_num_probes[(level >= 0) ? MZ_MIN(10, level) : MZ_DEFAULT_LEVEL] | ((level <= 3) ? TDEFL_GREEDY_PARSING_FLAG : 0); - if (window_bits > 0) - comp_flags |= TDEFL_WRITE_ZLIB_HEADER; - - if (!level) - comp_flags |= TDEFL_FORCE_ALL_RAW_BLOCKS; - else if (strategy == MZ_FILTERED) - comp_flags |= TDEFL_FILTER_MATCHES; - else if (strategy == MZ_HUFFMAN_ONLY) - comp_flags &= ~TDEFL_MAX_PROBES_MASK; - else if (strategy == MZ_FIXED) - comp_flags |= TDEFL_FORCE_ALL_STATIC_BLOCKS; - else if (strategy == MZ_RLE) - comp_flags |= TDEFL_RLE_MATCHES; - - return comp_flags; -} - -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable : 4204) /* nonstandard extension used : non-constant aggregate initializer (also supported by GNU C and C99, so no big deal) */ -#endif - -/* Simple PNG writer function by Alex Evans, 2011. Released into the public domain: https://gist.github.com/908299, more context at - http://altdevblogaday.org/2011/04/06/a-smaller-jpg-encoder/. - This is actually a modification of Alex's original code so PNG files generated by this function pass pngcheck. */ -void *tdefl_write_image_to_png_file_in_memory_ex(const void *pImage, int w, int h, int num_chans, size_t *pLen_out, mz_uint level, mz_bool flip) -{ - /* Using a local copy of this array here in case MINIZ_NO_ZLIB_APIS was defined. */ - static const mz_uint s_tdefl_png_num_probes[11] = { 0, 1, 6, 32, 16, 32, 128, 256, 512, 768, 1500 }; - tdefl_compressor *pComp = (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); - tdefl_output_buffer out_buf; - int i, bpl = w * num_chans, y, z; - mz_uint32 c; - *pLen_out = 0; - if (!pComp) - return NULL; - MZ_CLEAR_OBJ(out_buf); - out_buf.m_expandable = MZ_TRUE; - out_buf.m_capacity = 57 + MZ_MAX(64, (1 + bpl) * h); - if (NULL == (out_buf.m_pBuf = (mz_uint8 *)MZ_MALLOC(out_buf.m_capacity))) - { - MZ_FREE(pComp); - return NULL; - } - /* write dummy header */ - for (z = 41; z; --z) - tdefl_output_buffer_putter(&z, 1, &out_buf); - /* compress image data */ - tdefl_init(pComp, tdefl_output_buffer_putter, &out_buf, s_tdefl_png_num_probes[MZ_MIN(10, level)] | TDEFL_WRITE_ZLIB_HEADER); - for (y = 0; y < h; ++y) - { - tdefl_compress_buffer(pComp, &z, 1, TDEFL_NO_FLUSH); - tdefl_compress_buffer(pComp, (mz_uint8 *)pImage + (flip ? (h - 1 - y) : y) * bpl, bpl, TDEFL_NO_FLUSH); - } - if (tdefl_compress_buffer(pComp, NULL, 0, TDEFL_FINISH) != TDEFL_STATUS_DONE) - { - MZ_FREE(pComp); - MZ_FREE(out_buf.m_pBuf); - return NULL; - } - /* write real header */ - *pLen_out = out_buf.m_size - 41; - { - static const mz_uint8 chans[] = { 0x00, 0x00, 0x04, 0x02, 0x06 }; - mz_uint8 pnghdr[41] = { 0x89, 0x50, 0x4e, 0x47, 0x0d, - 0x0a, 0x1a, 0x0a, 0x00, 0x00, - 0x00, 0x0d, 0x49, 0x48, 0x44, - 0x52, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x49, 0x44, 0x41, - 0x54 }; - pnghdr[18] = (mz_uint8)(w >> 8); - pnghdr[19] = (mz_uint8)w; - pnghdr[22] = (mz_uint8)(h >> 8); - pnghdr[23] = (mz_uint8)h; - pnghdr[25] = chans[num_chans]; - pnghdr[33] = (mz_uint8)(*pLen_out >> 24); - pnghdr[34] = (mz_uint8)(*pLen_out >> 16); - pnghdr[35] = (mz_uint8)(*pLen_out >> 8); - pnghdr[36] = (mz_uint8)*pLen_out; - c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, pnghdr + 12, 17); - for (i = 0; i < 4; ++i, c <<= 8) - ((mz_uint8 *)(pnghdr + 29))[i] = (mz_uint8)(c >> 24); - memcpy(out_buf.m_pBuf, pnghdr, 41); - } - /* write footer (IDAT CRC-32, followed by IEND chunk) */ - if (!tdefl_output_buffer_putter("\0\0\0\0\0\0\0\0\x49\x45\x4e\x44\xae\x42\x60\x82", 16, &out_buf)) - { - *pLen_out = 0; - MZ_FREE(pComp); - MZ_FREE(out_buf.m_pBuf); - return NULL; - } - c = (mz_uint32)mz_crc32(MZ_CRC32_INIT, out_buf.m_pBuf + 41 - 4, *pLen_out + 4); - for (i = 0; i < 4; ++i, c <<= 8) - (out_buf.m_pBuf + out_buf.m_size - 16)[i] = (mz_uint8)(c >> 24); - /* compute final size of file, grab compressed data buffer and return */ - *pLen_out += 57; - MZ_FREE(pComp); - return out_buf.m_pBuf; -} -void *tdefl_write_image_to_png_file_in_memory(const void *pImage, int w, int h, int num_chans, size_t *pLen_out) -{ - /* Level 6 corresponds to TDEFL_DEFAULT_MAX_PROBES or MZ_DEFAULT_LEVEL (but we can't depend on MZ_DEFAULT_LEVEL being available in case the zlib API's where #defined out) */ - return tdefl_write_image_to_png_file_in_memory_ex(pImage, w, h, num_chans, pLen_out, 6, MZ_FALSE); -} - -/* Allocate the tdefl_compressor and tinfl_decompressor structures in C so that */ -/* non-C language bindings to tdefL_ and tinfl_ API don't need to worry about */ -/* structure size and allocation mechanism. */ -tdefl_compressor *tdefl_compressor_alloc() -{ - return (tdefl_compressor *)MZ_MALLOC(sizeof(tdefl_compressor)); -} - -void tdefl_compressor_free(tdefl_compressor *pComp) -{ - MZ_FREE(pComp); -} - -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#ifdef __cplusplus -} -#endif -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - - - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- Low-level Decompression (completely independent from all compression API's) */ - -#define TINFL_MEMCPY(d, s, l) memcpy(d, s, l) -#define TINFL_MEMSET(p, c, l) memset(p, c, l) - -#define TINFL_CR_BEGIN \ - switch (r->m_state) \ - { \ - case 0: -#define TINFL_CR_RETURN(state_index, result) \ - do \ - { \ - status = result; \ - r->m_state = state_index; \ - goto common_exit; \ - case state_index:; \ - } \ - MZ_MACRO_END -#define TINFL_CR_RETURN_FOREVER(state_index, result) \ - do \ - { \ - for (;;) \ - { \ - TINFL_CR_RETURN(state_index, result); \ - } \ - } \ - MZ_MACRO_END -#define TINFL_CR_FINISH } - -#define TINFL_GET_BYTE(state_index, c) \ - do \ - { \ - while (pIn_buf_cur >= pIn_buf_end) \ - { \ - TINFL_CR_RETURN(state_index, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); \ - } \ - c = *pIn_buf_cur++; \ - } \ - MZ_MACRO_END - -#define TINFL_NEED_BITS(state_index, n) \ - do \ - { \ - mz_uint c; \ - TINFL_GET_BYTE(state_index, c); \ - bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ - num_bits += 8; \ - } while (num_bits < (mz_uint)(n)) -#define TINFL_SKIP_BITS(state_index, n) \ - do \ - { \ - if (num_bits < (mz_uint)(n)) \ - { \ - TINFL_NEED_BITS(state_index, n); \ - } \ - bit_buf >>= (n); \ - num_bits -= (n); \ - } \ - MZ_MACRO_END -#define TINFL_GET_BITS(state_index, b, n) \ - do \ - { \ - if (num_bits < (mz_uint)(n)) \ - { \ - TINFL_NEED_BITS(state_index, n); \ - } \ - b = bit_buf & ((1 << (n)) - 1); \ - bit_buf >>= (n); \ - num_bits -= (n); \ - } \ - MZ_MACRO_END - -/* TINFL_HUFF_BITBUF_FILL() is only used rarely, when the number of bytes remaining in the input buffer falls below 2. */ -/* It reads just enough bytes from the input stream that are needed to decode the next Huffman code (and absolutely no more). It works by trying to fully decode a */ -/* Huffman code by using whatever bits are currently present in the bit buffer. If this fails, it reads another byte, and tries again until it succeeds or until the */ -/* bit buffer contains >=15 bits (deflate's max. Huffman code size). */ -#define TINFL_HUFF_BITBUF_FILL(state_index, pHuff) \ - do \ - { \ - temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]; \ - if (temp >= 0) \ - { \ - code_len = temp >> 9; \ - if ((code_len) && (num_bits >= code_len)) \ - break; \ - } \ - else if (num_bits > TINFL_FAST_LOOKUP_BITS) \ - { \ - code_len = TINFL_FAST_LOOKUP_BITS; \ - do \ - { \ - temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ - } while ((temp < 0) && (num_bits >= (code_len + 1))); \ - if (temp >= 0) \ - break; \ - } \ - TINFL_GET_BYTE(state_index, c); \ - bit_buf |= (((tinfl_bit_buf_t)c) << num_bits); \ - num_bits += 8; \ - } while (num_bits < 15); - -/* TINFL_HUFF_DECODE() decodes the next Huffman coded symbol. It's more complex than you would initially expect because the zlib API expects the decompressor to never read */ -/* beyond the final byte of the deflate stream. (In other words, when this macro wants to read another byte from the input, it REALLY needs another byte in order to fully */ -/* decode the next Huffman code.) Handling this properly is particularly important on raw deflate (non-zlib) streams, which aren't followed by a byte aligned adler-32. */ -/* The slow path is only executed at the very end of the input buffer. */ -/* v1.16: The original macro handled the case at the very end of the passed-in input buffer, but we also need to handle the case where the user passes in 1+zillion bytes */ -/* following the deflate data and our non-conservative read-ahead path won't kick in here on this code. This is much trickier. */ -#define TINFL_HUFF_DECODE(state_index, sym, pHuff) \ - do \ - { \ - int temp; \ - mz_uint code_len, c; \ - if (num_bits < 15) \ - { \ - if ((pIn_buf_end - pIn_buf_cur) < 2) \ - { \ - TINFL_HUFF_BITBUF_FILL(state_index, pHuff); \ - } \ - else \ - { \ - bit_buf |= (((tinfl_bit_buf_t)pIn_buf_cur[0]) << num_bits) | (((tinfl_bit_buf_t)pIn_buf_cur[1]) << (num_bits + 8)); \ - pIn_buf_cur += 2; \ - num_bits += 16; \ - } \ - } \ - if ((temp = (pHuff)->m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) \ - code_len = temp >> 9, temp &= 511; \ - else \ - { \ - code_len = TINFL_FAST_LOOKUP_BITS; \ - do \ - { \ - temp = (pHuff)->m_tree[~temp + ((bit_buf >> code_len++) & 1)]; \ - } while (temp < 0); \ - } \ - sym = temp; \ - bit_buf >>= code_len; \ - num_bits -= code_len; \ - } \ - MZ_MACRO_END - -tinfl_status tinfl_decompress(tinfl_decompressor *r, const mz_uint8 *pIn_buf_next, size_t *pIn_buf_size, mz_uint8 *pOut_buf_start, mz_uint8 *pOut_buf_next, size_t *pOut_buf_size, const mz_uint32 decomp_flags) -{ - static const int s_length_base[31] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 }; - static const int s_length_extra[31] = { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 }; - static const int s_dist_base[32] = { 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 }; - static const int s_dist_extra[32] = { 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 }; - static const mz_uint8 s_length_dezigzag[19] = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 }; - static const int s_min_table_sizes[3] = { 257, 1, 4 }; - - tinfl_status status = TINFL_STATUS_FAILED; - mz_uint32 num_bits, dist, counter, num_extra; - tinfl_bit_buf_t bit_buf; - const mz_uint8 *pIn_buf_cur = pIn_buf_next, *const pIn_buf_end = pIn_buf_next + *pIn_buf_size; - mz_uint8 *pOut_buf_cur = pOut_buf_next, *const pOut_buf_end = pOut_buf_next + *pOut_buf_size; - size_t out_buf_size_mask = (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF) ? (size_t)-1 : ((pOut_buf_next - pOut_buf_start) + *pOut_buf_size) - 1, dist_from_out_buf_start; - - /* Ensure the output buffer's size is a power of 2, unless the output buffer is large enough to hold the entire output file (in which case it doesn't matter). */ - if (((out_buf_size_mask + 1) & out_buf_size_mask) || (pOut_buf_next < pOut_buf_start)) - { - *pIn_buf_size = *pOut_buf_size = 0; - return TINFL_STATUS_BAD_PARAM; - } - - num_bits = r->m_num_bits; - bit_buf = r->m_bit_buf; - dist = r->m_dist; - counter = r->m_counter; - num_extra = r->m_num_extra; - dist_from_out_buf_start = r->m_dist_from_out_buf_start; - TINFL_CR_BEGIN - - bit_buf = num_bits = dist = counter = num_extra = r->m_zhdr0 = r->m_zhdr1 = 0; - r->m_z_adler32 = r->m_check_adler32 = 1; - if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) - { - TINFL_GET_BYTE(1, r->m_zhdr0); - TINFL_GET_BYTE(2, r->m_zhdr1); - counter = (((r->m_zhdr0 * 256 + r->m_zhdr1) % 31 != 0) || (r->m_zhdr1 & 32) || ((r->m_zhdr0 & 15) != 8)); - if (!(decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) - counter |= (((1U << (8U + (r->m_zhdr0 >> 4))) > 32768U) || ((out_buf_size_mask + 1) < (size_t)(1U << (8U + (r->m_zhdr0 >> 4))))); - if (counter) - { - TINFL_CR_RETURN_FOREVER(36, TINFL_STATUS_FAILED); - } - } - - do - { - TINFL_GET_BITS(3, r->m_final, 3); - r->m_type = r->m_final >> 1; - if (r->m_type == 0) - { - TINFL_SKIP_BITS(5, num_bits & 7); - for (counter = 0; counter < 4; ++counter) - { - if (num_bits) - TINFL_GET_BITS(6, r->m_raw_header[counter], 8); - else - TINFL_GET_BYTE(7, r->m_raw_header[counter]); - } - if ((counter = (r->m_raw_header[0] | (r->m_raw_header[1] << 8))) != (mz_uint)(0xFFFF ^ (r->m_raw_header[2] | (r->m_raw_header[3] << 8)))) - { - TINFL_CR_RETURN_FOREVER(39, TINFL_STATUS_FAILED); - } - while ((counter) && (num_bits)) - { - TINFL_GET_BITS(51, dist, 8); - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(52, TINFL_STATUS_HAS_MORE_OUTPUT); - } - *pOut_buf_cur++ = (mz_uint8)dist; - counter--; - } - while (counter) - { - size_t n; - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(9, TINFL_STATUS_HAS_MORE_OUTPUT); - } - while (pIn_buf_cur >= pIn_buf_end) - { - TINFL_CR_RETURN(38, (decomp_flags & TINFL_FLAG_HAS_MORE_INPUT) ? TINFL_STATUS_NEEDS_MORE_INPUT : TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS); - } - n = MZ_MIN(MZ_MIN((size_t)(pOut_buf_end - pOut_buf_cur), (size_t)(pIn_buf_end - pIn_buf_cur)), counter); - TINFL_MEMCPY(pOut_buf_cur, pIn_buf_cur, n); - pIn_buf_cur += n; - pOut_buf_cur += n; - counter -= (mz_uint)n; - } - } - else if (r->m_type == 3) - { - TINFL_CR_RETURN_FOREVER(10, TINFL_STATUS_FAILED); - } - else - { - if (r->m_type == 1) - { - mz_uint8 *p = r->m_tables[0].m_code_size; - mz_uint i; - r->m_table_sizes[0] = 288; - r->m_table_sizes[1] = 32; - TINFL_MEMSET(r->m_tables[1].m_code_size, 5, 32); - for (i = 0; i <= 143; ++i) - *p++ = 8; - for (; i <= 255; ++i) - *p++ = 9; - for (; i <= 279; ++i) - *p++ = 7; - for (; i <= 287; ++i) - *p++ = 8; - } - else - { - for (counter = 0; counter < 3; counter++) - { - TINFL_GET_BITS(11, r->m_table_sizes[counter], "\05\05\04"[counter]); - r->m_table_sizes[counter] += s_min_table_sizes[counter]; - } - MZ_CLEAR_OBJ(r->m_tables[2].m_code_size); - for (counter = 0; counter < r->m_table_sizes[2]; counter++) - { - mz_uint s; - TINFL_GET_BITS(14, s, 3); - r->m_tables[2].m_code_size[s_length_dezigzag[counter]] = (mz_uint8)s; - } - r->m_table_sizes[2] = 19; - } - for (; (int)r->m_type >= 0; r->m_type--) - { - int tree_next, tree_cur; - tinfl_huff_table *pTable; - mz_uint i, j, used_syms, total, sym_index, next_code[17], total_syms[16]; - pTable = &r->m_tables[r->m_type]; - MZ_CLEAR_OBJ(total_syms); - MZ_CLEAR_OBJ(pTable->m_look_up); - MZ_CLEAR_OBJ(pTable->m_tree); - for (i = 0; i < r->m_table_sizes[r->m_type]; ++i) - total_syms[pTable->m_code_size[i]]++; - used_syms = 0, total = 0; - next_code[0] = next_code[1] = 0; - for (i = 1; i <= 15; ++i) - { - used_syms += total_syms[i]; - next_code[i + 1] = (total = ((total + total_syms[i]) << 1)); - } - if ((65536 != total) && (used_syms > 1)) - { - TINFL_CR_RETURN_FOREVER(35, TINFL_STATUS_FAILED); - } - for (tree_next = -1, sym_index = 0; sym_index < r->m_table_sizes[r->m_type]; ++sym_index) - { - mz_uint rev_code = 0, l, cur_code, code_size = pTable->m_code_size[sym_index]; - if (!code_size) - continue; - cur_code = next_code[code_size]++; - for (l = code_size; l > 0; l--, cur_code >>= 1) - rev_code = (rev_code << 1) | (cur_code & 1); - if (code_size <= TINFL_FAST_LOOKUP_BITS) - { - mz_int16 k = (mz_int16)((code_size << 9) | sym_index); - while (rev_code < TINFL_FAST_LOOKUP_SIZE) - { - pTable->m_look_up[rev_code] = k; - rev_code += (1 << code_size); - } - continue; - } - if (0 == (tree_cur = pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)])) - { - pTable->m_look_up[rev_code & (TINFL_FAST_LOOKUP_SIZE - 1)] = (mz_int16)tree_next; - tree_cur = tree_next; - tree_next -= 2; - } - rev_code >>= (TINFL_FAST_LOOKUP_BITS - 1); - for (j = code_size; j > (TINFL_FAST_LOOKUP_BITS + 1); j--) - { - tree_cur -= ((rev_code >>= 1) & 1); - if (!pTable->m_tree[-tree_cur - 1]) - { - pTable->m_tree[-tree_cur - 1] = (mz_int16)tree_next; - tree_cur = tree_next; - tree_next -= 2; - } - else - tree_cur = pTable->m_tree[-tree_cur - 1]; - } - tree_cur -= ((rev_code >>= 1) & 1); - pTable->m_tree[-tree_cur - 1] = (mz_int16)sym_index; - } - if (r->m_type == 2) - { - for (counter = 0; counter < (r->m_table_sizes[0] + r->m_table_sizes[1]);) - { - mz_uint s; - TINFL_HUFF_DECODE(16, dist, &r->m_tables[2]); - if (dist < 16) - { - r->m_len_codes[counter++] = (mz_uint8)dist; - continue; - } - if ((dist == 16) && (!counter)) - { - TINFL_CR_RETURN_FOREVER(17, TINFL_STATUS_FAILED); - } - num_extra = "\02\03\07"[dist - 16]; - TINFL_GET_BITS(18, s, num_extra); - s += "\03\03\013"[dist - 16]; - TINFL_MEMSET(r->m_len_codes + counter, (dist == 16) ? r->m_len_codes[counter - 1] : 0, s); - counter += s; - } - if ((r->m_table_sizes[0] + r->m_table_sizes[1]) != counter) - { - TINFL_CR_RETURN_FOREVER(21, TINFL_STATUS_FAILED); - } - TINFL_MEMCPY(r->m_tables[0].m_code_size, r->m_len_codes, r->m_table_sizes[0]); - TINFL_MEMCPY(r->m_tables[1].m_code_size, r->m_len_codes + r->m_table_sizes[0], r->m_table_sizes[1]); - } - } - for (;;) - { - mz_uint8 *pSrc; - for (;;) - { - if (((pIn_buf_end - pIn_buf_cur) < 4) || ((pOut_buf_end - pOut_buf_cur) < 2)) - { - TINFL_HUFF_DECODE(23, counter, &r->m_tables[0]); - if (counter >= 256) - break; - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(24, TINFL_STATUS_HAS_MORE_OUTPUT); - } - *pOut_buf_cur++ = (mz_uint8)counter; - } - else - { - int sym2; - mz_uint code_len; -#if TINFL_USE_64BIT_BITBUF - if (num_bits < 30) - { - bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE32(pIn_buf_cur)) << num_bits); - pIn_buf_cur += 4; - num_bits += 32; - } -#else - if (num_bits < 15) - { - bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); - pIn_buf_cur += 2; - num_bits += 16; - } -#endif - if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) - code_len = sym2 >> 9; - else - { - code_len = TINFL_FAST_LOOKUP_BITS; - do - { - sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; - } while (sym2 < 0); - } - counter = sym2; - bit_buf >>= code_len; - num_bits -= code_len; - if (counter & 256) - break; - -#if !TINFL_USE_64BIT_BITBUF - if (num_bits < 15) - { - bit_buf |= (((tinfl_bit_buf_t)MZ_READ_LE16(pIn_buf_cur)) << num_bits); - pIn_buf_cur += 2; - num_bits += 16; - } -#endif - if ((sym2 = r->m_tables[0].m_look_up[bit_buf & (TINFL_FAST_LOOKUP_SIZE - 1)]) >= 0) - code_len = sym2 >> 9; - else - { - code_len = TINFL_FAST_LOOKUP_BITS; - do - { - sym2 = r->m_tables[0].m_tree[~sym2 + ((bit_buf >> code_len++) & 1)]; - } while (sym2 < 0); - } - bit_buf >>= code_len; - num_bits -= code_len; - - pOut_buf_cur[0] = (mz_uint8)counter; - if (sym2 & 256) - { - pOut_buf_cur++; - counter = sym2; - break; - } - pOut_buf_cur[1] = (mz_uint8)sym2; - pOut_buf_cur += 2; - } - } - if ((counter &= 511) == 256) - break; - - num_extra = s_length_extra[counter - 257]; - counter = s_length_base[counter - 257]; - if (num_extra) - { - mz_uint extra_bits; - TINFL_GET_BITS(25, extra_bits, num_extra); - counter += extra_bits; - } - - TINFL_HUFF_DECODE(26, dist, &r->m_tables[1]); - num_extra = s_dist_extra[dist]; - dist = s_dist_base[dist]; - if (num_extra) - { - mz_uint extra_bits; - TINFL_GET_BITS(27, extra_bits, num_extra); - dist += extra_bits; - } - - dist_from_out_buf_start = pOut_buf_cur - pOut_buf_start; - if ((dist > dist_from_out_buf_start) && (decomp_flags & TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF)) - { - TINFL_CR_RETURN_FOREVER(37, TINFL_STATUS_FAILED); - } - - pSrc = pOut_buf_start + ((dist_from_out_buf_start - dist) & out_buf_size_mask); - - if ((MZ_MAX(pOut_buf_cur, pSrc) + counter) > pOut_buf_end) - { - while (counter--) - { - while (pOut_buf_cur >= pOut_buf_end) - { - TINFL_CR_RETURN(53, TINFL_STATUS_HAS_MORE_OUTPUT); - } - *pOut_buf_cur++ = pOut_buf_start[(dist_from_out_buf_start++ - dist) & out_buf_size_mask]; - } - continue; - } -#if MINIZ_USE_UNALIGNED_LOADS_AND_STORES - else if ((counter >= 9) && (counter <= dist)) - { - const mz_uint8 *pSrc_end = pSrc + (counter & ~7); - do - { - ((mz_uint32 *)pOut_buf_cur)[0] = ((const mz_uint32 *)pSrc)[0]; - ((mz_uint32 *)pOut_buf_cur)[1] = ((const mz_uint32 *)pSrc)[1]; - pOut_buf_cur += 8; - } while ((pSrc += 8) < pSrc_end); - if ((counter &= 7) < 3) - { - if (counter) - { - pOut_buf_cur[0] = pSrc[0]; - if (counter > 1) - pOut_buf_cur[1] = pSrc[1]; - pOut_buf_cur += counter; - } - continue; - } - } -#endif - while(counter>2) - { - pOut_buf_cur[0] = pSrc[0]; - pOut_buf_cur[1] = pSrc[1]; - pOut_buf_cur[2] = pSrc[2]; - pOut_buf_cur += 3; - pSrc += 3; - counter -= 3; - } - if (counter > 0) - { - pOut_buf_cur[0] = pSrc[0]; - if (counter > 1) - pOut_buf_cur[1] = pSrc[1]; - pOut_buf_cur += counter; - } - } - } - } while (!(r->m_final & 1)); - - /* Ensure byte alignment and put back any bytes from the bitbuf if we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */ - /* I'm being super conservative here. A number of simplifications can be made to the byte alignment part, and the Adler32 check shouldn't ever need to worry about reading from the bitbuf now. */ - TINFL_SKIP_BITS(32, num_bits & 7); - while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8)) - { - --pIn_buf_cur; - num_bits -= 8; - } - bit_buf &= (tinfl_bit_buf_t)((((mz_uint64)1) << num_bits) - (mz_uint64)1); - MZ_ASSERT(!num_bits); /* if this assert fires then we've read beyond the end of non-deflate/zlib streams with following data (such as gzip streams). */ - - if (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) - { - for (counter = 0; counter < 4; ++counter) - { - mz_uint s; - if (num_bits) - TINFL_GET_BITS(41, s, 8); - else - TINFL_GET_BYTE(42, s); - r->m_z_adler32 = (r->m_z_adler32 << 8) | s; - } - } - TINFL_CR_RETURN_FOREVER(34, TINFL_STATUS_DONE); - - TINFL_CR_FINISH - -common_exit: - /* As long as we aren't telling the caller that we NEED more input to make forward progress: */ - /* Put back any bytes from the bitbuf in case we've looked ahead too far on gzip, or other Deflate streams followed by arbitrary data. */ - /* We need to be very careful here to NOT push back any bytes we definitely know we need to make forward progress, though, or we'll lock the caller up into an inf loop. */ - if ((status != TINFL_STATUS_NEEDS_MORE_INPUT) && (status != TINFL_STATUS_FAILED_CANNOT_MAKE_PROGRESS)) - { - while ((pIn_buf_cur > pIn_buf_next) && (num_bits >= 8)) - { - --pIn_buf_cur; - num_bits -= 8; - } - } - r->m_num_bits = num_bits; - r->m_bit_buf = bit_buf & (tinfl_bit_buf_t)((((mz_uint64)1) << num_bits) - (mz_uint64)1); - r->m_dist = dist; - r->m_counter = counter; - r->m_num_extra = num_extra; - r->m_dist_from_out_buf_start = dist_from_out_buf_start; - *pIn_buf_size = pIn_buf_cur - pIn_buf_next; - *pOut_buf_size = pOut_buf_cur - pOut_buf_next; - if ((decomp_flags & (TINFL_FLAG_PARSE_ZLIB_HEADER | TINFL_FLAG_COMPUTE_ADLER32)) && (status >= 0)) - { - const mz_uint8 *ptr = pOut_buf_next; - size_t buf_len = *pOut_buf_size; - mz_uint32 i, s1 = r->m_check_adler32 & 0xffff, s2 = r->m_check_adler32 >> 16; - size_t block_len = buf_len % 5552; - while (buf_len) - { - for (i = 0; i + 7 < block_len; i += 8, ptr += 8) - { - s1 += ptr[0], s2 += s1; - s1 += ptr[1], s2 += s1; - s1 += ptr[2], s2 += s1; - s1 += ptr[3], s2 += s1; - s1 += ptr[4], s2 += s1; - s1 += ptr[5], s2 += s1; - s1 += ptr[6], s2 += s1; - s1 += ptr[7], s2 += s1; - } - for (; i < block_len; ++i) - s1 += *ptr++, s2 += s1; - s1 %= 65521U, s2 %= 65521U; - buf_len -= block_len; - block_len = 5552; - } - r->m_check_adler32 = (s2 << 16) + s1; - if ((status == TINFL_STATUS_DONE) && (decomp_flags & TINFL_FLAG_PARSE_ZLIB_HEADER) && (r->m_check_adler32 != r->m_z_adler32)) - status = TINFL_STATUS_ADLER32_MISMATCH; - } - return status; -} - -/* Higher level helper functions. */ -void *tinfl_decompress_mem_to_heap(const void *pSrc_buf, size_t src_buf_len, size_t *pOut_len, int flags) -{ - tinfl_decompressor decomp; - void *pBuf = NULL, *pNew_buf; - size_t src_buf_ofs = 0, out_buf_capacity = 0; - *pOut_len = 0; - tinfl_init(&decomp); - for (;;) - { - size_t src_buf_size = src_buf_len - src_buf_ofs, dst_buf_size = out_buf_capacity - *pOut_len, new_out_buf_capacity; - tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf + src_buf_ofs, &src_buf_size, (mz_uint8 *)pBuf, pBuf ? (mz_uint8 *)pBuf + *pOut_len : NULL, &dst_buf_size, - (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); - if ((status < 0) || (status == TINFL_STATUS_NEEDS_MORE_INPUT)) - { - MZ_FREE(pBuf); - *pOut_len = 0; - return NULL; - } - src_buf_ofs += src_buf_size; - *pOut_len += dst_buf_size; - if (status == TINFL_STATUS_DONE) - break; - new_out_buf_capacity = out_buf_capacity * 2; - if (new_out_buf_capacity < 128) - new_out_buf_capacity = 128; - pNew_buf = MZ_REALLOC(pBuf, new_out_buf_capacity); - if (!pNew_buf) - { - MZ_FREE(pBuf); - *pOut_len = 0; - return NULL; - } - pBuf = pNew_buf; - out_buf_capacity = new_out_buf_capacity; - } - return pBuf; -} - -size_t tinfl_decompress_mem_to_mem(void *pOut_buf, size_t out_buf_len, const void *pSrc_buf, size_t src_buf_len, int flags) -{ - tinfl_decompressor decomp; - tinfl_status status; - tinfl_init(&decomp); - status = tinfl_decompress(&decomp, (const mz_uint8 *)pSrc_buf, &src_buf_len, (mz_uint8 *)pOut_buf, (mz_uint8 *)pOut_buf, &out_buf_len, (flags & ~TINFL_FLAG_HAS_MORE_INPUT) | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF); - return (status != TINFL_STATUS_DONE) ? TINFL_DECOMPRESS_MEM_TO_MEM_FAILED : out_buf_len; -} - -int tinfl_decompress_mem_to_callback(const void *pIn_buf, size_t *pIn_buf_size, tinfl_put_buf_func_ptr pPut_buf_func, void *pPut_buf_user, int flags) -{ - int result = 0; - tinfl_decompressor decomp; - mz_uint8 *pDict = (mz_uint8 *)MZ_MALLOC(TINFL_LZ_DICT_SIZE); - size_t in_buf_ofs = 0, dict_ofs = 0; - if (!pDict) - return TINFL_STATUS_FAILED; - tinfl_init(&decomp); - for (;;) - { - size_t in_buf_size = *pIn_buf_size - in_buf_ofs, dst_buf_size = TINFL_LZ_DICT_SIZE - dict_ofs; - tinfl_status status = tinfl_decompress(&decomp, (const mz_uint8 *)pIn_buf + in_buf_ofs, &in_buf_size, pDict, pDict + dict_ofs, &dst_buf_size, - (flags & ~(TINFL_FLAG_HAS_MORE_INPUT | TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF))); - in_buf_ofs += in_buf_size; - if ((dst_buf_size) && (!(*pPut_buf_func)(pDict + dict_ofs, (int)dst_buf_size, pPut_buf_user))) - break; - if (status != TINFL_STATUS_HAS_MORE_OUTPUT) - { - result = (status == TINFL_STATUS_DONE); - break; - } - dict_ofs = (dict_ofs + dst_buf_size) & (TINFL_LZ_DICT_SIZE - 1); - } - MZ_FREE(pDict); - *pIn_buf_size = in_buf_ofs; - return result; -} - -tinfl_decompressor *tinfl_decompressor_alloc() -{ - tinfl_decompressor *pDecomp = (tinfl_decompressor *)MZ_MALLOC(sizeof(tinfl_decompressor)); - if (pDecomp) - tinfl_init(pDecomp); - return pDecomp; -} - -void tinfl_decompressor_free(tinfl_decompressor *pDecomp) -{ - MZ_FREE(pDecomp); -} - -#ifdef __cplusplus -} -#endif -/************************************************************************** - * - * Copyright 2013-2014 RAD Game Tools and Valve Software - * Copyright 2010-2014 Rich Geldreich and Tenacious Software LLC - * Copyright 2016 Martin Raiber - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - **************************************************************************/ - - -#ifndef MINIZ_NO_ARCHIVE_APIS - -#ifdef __cplusplus -extern "C" { -#endif - -/* ------------------- .ZIP archive reading */ - -#ifdef MINIZ_NO_STDIO -#define MZ_FILE void * -#else -#include - -#if defined(_MSC_VER) || defined(__MINGW64__) -static FILE *mz_fopen(const char *pFilename, const char *pMode) -{ - FILE *pFile = NULL; - fopen_s(&pFile, pFilename, pMode); - return pFile; -} -static FILE *mz_freopen(const char *pPath, const char *pMode, FILE *pStream) -{ - FILE *pFile = NULL; - if (freopen_s(&pFile, pPath, pMode, pStream)) - return NULL; - return pFile; -} -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN mz_fopen -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 _ftelli64 -#define MZ_FSEEK64 _fseeki64 -#define MZ_FILE_STAT_STRUCT _stat -#define MZ_FILE_STAT _stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN mz_freopen -#define MZ_DELETE_FILE remove -#elif defined(__MINGW32__) -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftello64 -#define MZ_FSEEK64 fseeko64 -#define MZ_FILE_STAT_STRUCT _stat -#define MZ_FILE_STAT _stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(f, m, s) freopen(f, m, s) -#define MZ_DELETE_FILE remove -#elif defined(__TINYC__) -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftell -#define MZ_FSEEK64 fseek -#define MZ_FILE_STAT_STRUCT stat -#define MZ_FILE_STAT stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(f, m, s) freopen(f, m, s) -#define MZ_DELETE_FILE remove -#elif defined(__GNUC__) && _LARGEFILE64_SOURCE -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen64(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftello64 -#define MZ_FSEEK64 fseeko64 -#define MZ_FILE_STAT_STRUCT stat64 -#define MZ_FILE_STAT stat64 -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(p, m, s) freopen64(p, m, s) -#define MZ_DELETE_FILE remove -#elif defined(__APPLE__) -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#define MZ_FTELL64 ftello -#define MZ_FSEEK64 fseeko -#define MZ_FILE_STAT_STRUCT stat -#define MZ_FILE_STAT stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(p, m, s) freopen(p, m, s) -#define MZ_DELETE_FILE remove - -#else -#pragma message("Using fopen, ftello, fseeko, stat() etc. path for file I/O - this path may not support large files.") -#ifndef MINIZ_NO_TIME -#include -#endif -#define MZ_FOPEN(f, m) fopen(f, m) -#define MZ_FCLOSE fclose -#define MZ_FREAD fread -#define MZ_FWRITE fwrite -#ifdef __STRICT_ANSI__ -#define MZ_FTELL64 ftell -#define MZ_FSEEK64 fseek -#else -#define MZ_FTELL64 ftello -#define MZ_FSEEK64 fseeko -#endif -#define MZ_FILE_STAT_STRUCT stat -#define MZ_FILE_STAT stat -#define MZ_FFLUSH fflush -#define MZ_FREOPEN(f, m, s) freopen(f, m, s) -#define MZ_DELETE_FILE remove -#endif /* #ifdef _MSC_VER */ -#endif /* #ifdef MINIZ_NO_STDIO */ - -#define MZ_TOLOWER(c) ((((c) >= 'A') && ((c) <= 'Z')) ? ((c) - 'A' + 'a') : (c)) - -/* Various ZIP archive enums. To completely avoid cross platform compiler alignment and platform endian issues, miniz.c doesn't use structs for any of this stuff. */ -enum -{ - /* ZIP archive identifiers and record sizes */ - MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06054b50, - MZ_ZIP_CENTRAL_DIR_HEADER_SIG = 0x02014b50, - MZ_ZIP_LOCAL_DIR_HEADER_SIG = 0x04034b50, - MZ_ZIP_LOCAL_DIR_HEADER_SIZE = 30, - MZ_ZIP_CENTRAL_DIR_HEADER_SIZE = 46, - MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE = 22, - - /* ZIP64 archive identifier and record sizes */ - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG = 0x06064b50, - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG = 0x07064b50, - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE = 56, - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE = 20, - MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID = 0x0001, - MZ_ZIP_DATA_DESCRIPTOR_ID = 0x08074b50, - MZ_ZIP_DATA_DESCRIPTER_SIZE64 = 24, - MZ_ZIP_DATA_DESCRIPTER_SIZE32 = 16, - - /* Central directory header record offsets */ - MZ_ZIP_CDH_SIG_OFS = 0, - MZ_ZIP_CDH_VERSION_MADE_BY_OFS = 4, - MZ_ZIP_CDH_VERSION_NEEDED_OFS = 6, - MZ_ZIP_CDH_BIT_FLAG_OFS = 8, - MZ_ZIP_CDH_METHOD_OFS = 10, - MZ_ZIP_CDH_FILE_TIME_OFS = 12, - MZ_ZIP_CDH_FILE_DATE_OFS = 14, - MZ_ZIP_CDH_CRC32_OFS = 16, - MZ_ZIP_CDH_COMPRESSED_SIZE_OFS = 20, - MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS = 24, - MZ_ZIP_CDH_FILENAME_LEN_OFS = 28, - MZ_ZIP_CDH_EXTRA_LEN_OFS = 30, - MZ_ZIP_CDH_COMMENT_LEN_OFS = 32, - MZ_ZIP_CDH_DISK_START_OFS = 34, - MZ_ZIP_CDH_INTERNAL_ATTR_OFS = 36, - MZ_ZIP_CDH_EXTERNAL_ATTR_OFS = 38, - MZ_ZIP_CDH_LOCAL_HEADER_OFS = 42, - - /* Local directory header offsets */ - MZ_ZIP_LDH_SIG_OFS = 0, - MZ_ZIP_LDH_VERSION_NEEDED_OFS = 4, - MZ_ZIP_LDH_BIT_FLAG_OFS = 6, - MZ_ZIP_LDH_METHOD_OFS = 8, - MZ_ZIP_LDH_FILE_TIME_OFS = 10, - MZ_ZIP_LDH_FILE_DATE_OFS = 12, - MZ_ZIP_LDH_CRC32_OFS = 14, - MZ_ZIP_LDH_COMPRESSED_SIZE_OFS = 18, - MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS = 22, - MZ_ZIP_LDH_FILENAME_LEN_OFS = 26, - MZ_ZIP_LDH_EXTRA_LEN_OFS = 28, - MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR = 1 << 3, - - /* End of central directory offsets */ - MZ_ZIP_ECDH_SIG_OFS = 0, - MZ_ZIP_ECDH_NUM_THIS_DISK_OFS = 4, - MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS = 6, - MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 8, - MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS = 10, - MZ_ZIP_ECDH_CDIR_SIZE_OFS = 12, - MZ_ZIP_ECDH_CDIR_OFS_OFS = 16, - MZ_ZIP_ECDH_COMMENT_SIZE_OFS = 20, - - /* ZIP64 End of central directory locator offsets */ - MZ_ZIP64_ECDL_SIG_OFS = 0, /* 4 bytes */ - MZ_ZIP64_ECDL_NUM_DISK_CDIR_OFS = 4, /* 4 bytes */ - MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS = 8, /* 8 bytes */ - MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS = 16, /* 4 bytes */ - - /* ZIP64 End of central directory header offsets */ - MZ_ZIP64_ECDH_SIG_OFS = 0, /* 4 bytes */ - MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS = 4, /* 8 bytes */ - MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS = 12, /* 2 bytes */ - MZ_ZIP64_ECDH_VERSION_NEEDED_OFS = 14, /* 2 bytes */ - MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS = 16, /* 4 bytes */ - MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS = 20, /* 4 bytes */ - MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS = 24, /* 8 bytes */ - MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS = 32, /* 8 bytes */ - MZ_ZIP64_ECDH_CDIR_SIZE_OFS = 40, /* 8 bytes */ - MZ_ZIP64_ECDH_CDIR_OFS_OFS = 48, /* 8 bytes */ - MZ_ZIP_VERSION_MADE_BY_DOS_FILESYSTEM_ID = 0, - MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG = 0x10, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED = 1, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG = 32, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION = 64, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED = 8192, - MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8 = 1 << 11 -}; - -typedef struct -{ - void *m_p; - size_t m_size, m_capacity; - mz_uint m_element_size; -} mz_zip_array; - -struct mz_zip_internal_state_tag -{ - mz_zip_array m_central_dir; - mz_zip_array m_central_dir_offsets; - mz_zip_array m_sorted_central_dir_offsets; - - /* The flags passed in when the archive is initially opened. */ - uint32_t m_init_flags; - - /* MZ_TRUE if the archive has a zip64 end of central directory headers, etc. */ - mz_bool m_zip64; - - /* MZ_TRUE if we found zip64 extended info in the central directory (m_zip64 will also be slammed to true too, even if we didn't find a zip64 end of central dir header, etc.) */ - mz_bool m_zip64_has_extended_info_fields; - - /* These fields are used by the file, FILE, memory, and memory/heap read/write helpers. */ - MZ_FILE *m_pFile; - mz_uint64 m_file_archive_start_ofs; - - void *m_pMem; - size_t m_mem_size; - size_t m_mem_capacity; -}; - -#define MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(array_ptr, element_size) (array_ptr)->m_element_size = element_size - -#if defined(DEBUG) || defined(_DEBUG) || defined(NDEBUG) -static MZ_FORCEINLINE mz_uint mz_zip_array_range_check(const mz_zip_array *pArray, mz_uint index) -{ - MZ_ASSERT(index < pArray->m_size); - return index; -} -#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[mz_zip_array_range_check(array_ptr, index)] -#else -#define MZ_ZIP_ARRAY_ELEMENT(array_ptr, element_type, index) ((element_type *)((array_ptr)->m_p))[index] -#endif - -static MZ_FORCEINLINE void mz_zip_array_init(mz_zip_array *pArray, mz_uint32 element_size) -{ - memset(pArray, 0, sizeof(mz_zip_array)); - pArray->m_element_size = element_size; -} - -static MZ_FORCEINLINE void mz_zip_array_clear(mz_zip_archive *pZip, mz_zip_array *pArray) -{ - pZip->m_pFree(pZip->m_pAlloc_opaque, pArray->m_p); - memset(pArray, 0, sizeof(mz_zip_array)); -} - -static mz_bool mz_zip_array_ensure_capacity(mz_zip_archive *pZip, mz_zip_array *pArray, size_t min_new_capacity, mz_uint growing) -{ - void *pNew_p; - size_t new_capacity = min_new_capacity; - MZ_ASSERT(pArray->m_element_size); - if (pArray->m_capacity >= min_new_capacity) - return MZ_TRUE; - if (growing) - { - new_capacity = MZ_MAX(1, pArray->m_capacity); - while (new_capacity < min_new_capacity) - new_capacity *= 2; - } - if (NULL == (pNew_p = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pArray->m_p, pArray->m_element_size, new_capacity))) - return MZ_FALSE; - pArray->m_p = pNew_p; - pArray->m_capacity = new_capacity; - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_reserve(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_capacity, mz_uint growing) -{ - if (new_capacity > pArray->m_capacity) - { - if (!mz_zip_array_ensure_capacity(pZip, pArray, new_capacity, growing)) - return MZ_FALSE; - } - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_resize(mz_zip_archive *pZip, mz_zip_array *pArray, size_t new_size, mz_uint growing) -{ - if (new_size > pArray->m_capacity) - { - if (!mz_zip_array_ensure_capacity(pZip, pArray, new_size, growing)) - return MZ_FALSE; - } - pArray->m_size = new_size; - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_ensure_room(mz_zip_archive *pZip, mz_zip_array *pArray, size_t n) -{ - return mz_zip_array_reserve(pZip, pArray, pArray->m_size + n, MZ_TRUE); -} - -static MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n) -{ - size_t orig_size = pArray->m_size; - if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE)) - return MZ_FALSE; - memcpy((mz_uint8 *)pArray->m_p + orig_size * pArray->m_element_size, pElements, n * pArray->m_element_size); - return MZ_TRUE; -} - -#ifndef MINIZ_NO_TIME -static MZ_TIME_T mz_zip_dos_to_time_t(int dos_time, int dos_date) -{ - struct tm tm; - memset(&tm, 0, sizeof(tm)); - tm.tm_isdst = -1; - tm.tm_year = ((dos_date >> 9) & 127) + 1980 - 1900; - tm.tm_mon = ((dos_date >> 5) & 15) - 1; - tm.tm_mday = dos_date & 31; - tm.tm_hour = (dos_time >> 11) & 31; - tm.tm_min = (dos_time >> 5) & 63; - tm.tm_sec = (dos_time << 1) & 62; - return mktime(&tm); -} - -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS -static void mz_zip_time_t_to_dos_time(MZ_TIME_T time, mz_uint16 *pDOS_time, mz_uint16 *pDOS_date) -{ -#ifdef _MSC_VER - struct tm tm_struct; - struct tm *tm = &tm_struct; - errno_t err = localtime_s(tm, &time); - if (err) - { - *pDOS_date = 0; - *pDOS_time = 0; - return; - } -#else - struct tm *tm = localtime(&time); -#endif /* #ifdef _MSC_VER */ - - *pDOS_time = (mz_uint16)(((tm->tm_hour) << 11) + ((tm->tm_min) << 5) + ((tm->tm_sec) >> 1)); - *pDOS_date = (mz_uint16)(((tm->tm_year + 1900 - 1980) << 9) + ((tm->tm_mon + 1) << 5) + tm->tm_mday); -} -#endif /* MINIZ_NO_ARCHIVE_WRITING_APIS */ - -#ifndef MINIZ_NO_STDIO -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS -static mz_bool mz_zip_get_file_modified_time(const char *pFilename, MZ_TIME_T *pTime) -{ - struct MZ_FILE_STAT_STRUCT file_stat; - - /* On Linux with x86 glibc, this call will fail on large files (I think >= 0x80000000 bytes) unless you compiled with _LARGEFILE64_SOURCE. Argh. */ - if (MZ_FILE_STAT(pFilename, &file_stat) != 0) - return MZ_FALSE; - - *pTime = file_stat.st_mtime; - - return MZ_TRUE; -} -#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS*/ - -static mz_bool mz_zip_set_file_times(const char *pFilename, MZ_TIME_T access_time, MZ_TIME_T modified_time) -{ - struct utimbuf t; - - memset(&t, 0, sizeof(t)); - t.actime = access_time; - t.modtime = modified_time; - - return !utime(pFilename, &t); -} -#endif /* #ifndef MINIZ_NO_STDIO */ -#endif /* #ifndef MINIZ_NO_TIME */ - -static MZ_FORCEINLINE mz_bool mz_zip_set_error(mz_zip_archive *pZip, mz_zip_error err_num) -{ - if (pZip) - pZip->m_last_error = err_num; - return MZ_FALSE; -} - -static mz_bool mz_zip_reader_init_internal(mz_zip_archive *pZip, mz_uint flags) -{ - (void)flags; - if ((!pZip) || (pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!pZip->m_pAlloc) - pZip->m_pAlloc = miniz_def_alloc_func; - if (!pZip->m_pFree) - pZip->m_pFree = miniz_def_free_func; - if (!pZip->m_pRealloc) - pZip->m_pRealloc = miniz_def_realloc_func; - - pZip->m_archive_size = 0; - pZip->m_central_directory_file_ofs = 0; - pZip->m_total_files = 0; - pZip->m_last_error = MZ_ZIP_NO_ERROR; - - if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); - pZip->m_pState->m_init_flags = flags; - pZip->m_pState->m_zip64 = MZ_FALSE; - pZip->m_pState->m_zip64_has_extended_info_fields = MZ_FALSE; - - pZip->m_zip_mode = MZ_ZIP_MODE_READING; - - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_reader_filename_less(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, mz_uint r_index) -{ - const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; - const mz_uint8 *pR = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, r_index)); - mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS), r_len = MZ_READ_LE16(pR + MZ_ZIP_CDH_FILENAME_LEN_OFS); - mz_uint8 l = 0, r = 0; - pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - pR += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - pE = pL + MZ_MIN(l_len, r_len); - while (pL < pE) - { - if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) - break; - pL++; - pR++; - } - return (pL == pE) ? (l_len < r_len) : (l < r); -} - -#define MZ_SWAP_UINT32(a, b) \ - do \ - { \ - mz_uint32 t = a; \ - a = b; \ - b = t; \ - } \ - MZ_MACRO_END - -/* Heap sort of lowercased filenames, used to help accelerate plain central directory searches by mz_zip_reader_locate_file(). (Could also use qsort(), but it could allocate memory.) */ -static void mz_zip_reader_sort_central_dir_offsets_by_filename(mz_zip_archive *pZip) -{ - mz_zip_internal_state *pState = pZip->m_pState; - const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; - const mz_zip_array *pCentral_dir = &pState->m_central_dir; - mz_uint32 *pIndices; - mz_uint32 start, end; - const mz_uint32 size = pZip->m_total_files; - - if (size <= 1U) - return; - - pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); - - start = (size - 2U) >> 1U; - for (;;) - { - mz_uint64 child, root = start; - for (;;) - { - if ((child = (root << 1U) + 1U) >= size) - break; - child += (((child + 1U) < size) && (mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U]))); - if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) - break; - MZ_SWAP_UINT32(pIndices[root], pIndices[child]); - root = child; - } - if (!start) - break; - start--; - } - - end = size - 1; - while (end > 0) - { - mz_uint64 child, root = 0; - MZ_SWAP_UINT32(pIndices[end], pIndices[0]); - for (;;) - { - if ((child = (root << 1U) + 1U) >= end) - break; - child += (((child + 1U) < end) && mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[child], pIndices[child + 1U])); - if (!mz_zip_reader_filename_less(pCentral_dir, pCentral_dir_offsets, pIndices[root], pIndices[child])) - break; - MZ_SWAP_UINT32(pIndices[root], pIndices[child]); - root = child; - } - end--; - } -} - -static mz_bool mz_zip_reader_locate_header_sig(mz_zip_archive *pZip, mz_uint32 record_sig, mz_uint32 record_size, mz_int64 *pOfs) -{ - mz_int64 cur_file_ofs; - mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; - mz_uint8 *pBuf = (mz_uint8 *)buf_u32; - - /* Basic sanity checks - reject files which are too small */ - if (pZip->m_archive_size < record_size) - return MZ_FALSE; - - /* Find the record by scanning the file from the end towards the beginning. */ - cur_file_ofs = MZ_MAX((mz_int64)pZip->m_archive_size - (mz_int64)sizeof(buf_u32), 0); - for (;;) - { - int i, n = (int)MZ_MIN(sizeof(buf_u32), pZip->m_archive_size - cur_file_ofs); - - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, n) != (mz_uint)n) - return MZ_FALSE; - - for (i = n - 4; i >= 0; --i) - { - mz_uint s = MZ_READ_LE32(pBuf + i); - if (s == record_sig) - { - if ((pZip->m_archive_size - (cur_file_ofs + i)) >= record_size) - break; - } - } - - if (i >= 0) - { - cur_file_ofs += i; - break; - } - - /* Give up if we've searched the entire file, or we've gone back "too far" (~64kb) */ - if ((!cur_file_ofs) || ((pZip->m_archive_size - cur_file_ofs) >= (MZ_UINT16_MAX + record_size))) - return MZ_FALSE; - - cur_file_ofs = MZ_MAX(cur_file_ofs - (sizeof(buf_u32) - 3), 0); - } - - *pOfs = cur_file_ofs; - return MZ_TRUE; -} - -static mz_bool mz_zip_reader_read_central_dir(mz_zip_archive *pZip, mz_uint flags) -{ - mz_uint cdir_size = 0, cdir_entries_on_this_disk = 0, num_this_disk = 0, cdir_disk_index = 0; - mz_uint64 cdir_ofs = 0; - mz_int64 cur_file_ofs = 0; - const mz_uint8 *p; - - mz_uint32 buf_u32[4096 / sizeof(mz_uint32)]; - mz_uint8 *pBuf = (mz_uint8 *)buf_u32; - mz_bool sort_central_dir = ((flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0); - mz_uint32 zip64_end_of_central_dir_locator_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pZip64_locator = (mz_uint8 *)zip64_end_of_central_dir_locator_u32; - - mz_uint32 zip64_end_of_central_dir_header_u32[(MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pZip64_end_of_central_dir = (mz_uint8 *)zip64_end_of_central_dir_header_u32; - - mz_uint64 zip64_end_of_central_dir_ofs = 0; - - /* Basic sanity checks - reject files which are too small, and check the first 4 bytes of the file to make sure a local header is there. */ - if (pZip->m_archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (!mz_zip_reader_locate_header_sig(pZip, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE, &cur_file_ofs)) - return mz_zip_set_error(pZip, MZ_ZIP_FAILED_FINDING_CENTRAL_DIR); - - /* Read and verify the end of central directory record. */ - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_SIG_OFS) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (cur_file_ofs >= (MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE + MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) - { - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs - MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE, pZip64_locator, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) - { - if (MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG) - { - zip64_end_of_central_dir_ofs = MZ_READ_LE64(pZip64_locator + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS); - if (zip64_end_of_central_dir_ofs > (pZip->m_archive_size - MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE)) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (pZip->m_pRead(pZip->m_pIO_opaque, zip64_end_of_central_dir_ofs, pZip64_end_of_central_dir, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) - { - if (MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIG_OFS) == MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG) - { - pZip->m_pState->m_zip64 = MZ_TRUE; - } - } - } - } - } - - pZip->m_total_files = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS); - cdir_entries_on_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS); - num_this_disk = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_THIS_DISK_OFS); - cdir_disk_index = MZ_READ_LE16(pBuf + MZ_ZIP_ECDH_NUM_DISK_CDIR_OFS); - cdir_size = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_SIZE_OFS); - cdir_ofs = MZ_READ_LE32(pBuf + MZ_ZIP_ECDH_CDIR_OFS_OFS); - - if (pZip->m_pState->m_zip64) - { - mz_uint32 zip64_total_num_of_disks = MZ_READ_LE32(pZip64_locator + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS); - mz_uint64 zip64_cdir_total_entries = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS); - mz_uint64 zip64_cdir_total_entries_on_this_disk = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS); - mz_uint64 zip64_size_of_end_of_central_dir_record = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS); - mz_uint64 zip64_size_of_central_directory = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_SIZE_OFS); - - if (zip64_size_of_end_of_central_dir_record < (MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - 12)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (zip64_total_num_of_disks != 1U) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - /* Check for miniz's practical limits */ - if (zip64_cdir_total_entries > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - - pZip->m_total_files = (mz_uint32)zip64_cdir_total_entries; - - if (zip64_cdir_total_entries_on_this_disk > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - - cdir_entries_on_this_disk = (mz_uint32)zip64_cdir_total_entries_on_this_disk; - - /* Check for miniz's current practical limits (sorry, this should be enough for millions of files) */ - if (zip64_size_of_central_directory > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - cdir_size = (mz_uint32)zip64_size_of_central_directory; - - num_this_disk = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_THIS_DISK_OFS); - - cdir_disk_index = MZ_READ_LE32(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_NUM_DISK_CDIR_OFS); - - cdir_ofs = MZ_READ_LE64(pZip64_end_of_central_dir + MZ_ZIP64_ECDH_CDIR_OFS_OFS); - } - - if (pZip->m_total_files != cdir_entries_on_this_disk) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - if (((num_this_disk | cdir_disk_index) != 0) && ((num_this_disk != 1) || (cdir_disk_index != 1))) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - if (cdir_size < pZip->m_total_files * MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if ((cdir_ofs + (mz_uint64)cdir_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pZip->m_central_directory_file_ofs = cdir_ofs; - - if (pZip->m_total_files) - { - mz_uint i, n; - /* Read the entire central directory into a heap block, and allocate another heap block to hold the unsorted central dir file record offsets, and possibly another to hold the sorted indices. */ - if ((!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir, cdir_size, MZ_FALSE)) || - (!mz_zip_array_resize(pZip, &pZip->m_pState->m_central_dir_offsets, pZip->m_total_files, MZ_FALSE))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if (sort_central_dir) - { - if (!mz_zip_array_resize(pZip, &pZip->m_pState->m_sorted_central_dir_offsets, pZip->m_total_files, MZ_FALSE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (pZip->m_pRead(pZip->m_pIO_opaque, cdir_ofs, pZip->m_pState->m_central_dir.m_p, cdir_size) != cdir_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - /* Now create an index into the central directory file records, do some basic sanity checking on each record */ - p = (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p; - for (n = cdir_size, i = 0; i < pZip->m_total_files; ++i) - { - mz_uint total_header_size, disk_index, bit_flags, filename_size, ext_data_size; - mz_uint64 comp_size, decomp_size, local_header_ofs; - - if ((n < MZ_ZIP_CENTRAL_DIR_HEADER_SIZE) || (MZ_READ_LE32(p) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, i) = (mz_uint32)(p - (const mz_uint8 *)pZip->m_pState->m_central_dir.m_p); - - if (sort_central_dir) - MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_sorted_central_dir_offsets, mz_uint32, i) = i; - - comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - decomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); - filename_size = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - ext_data_size = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS); - - if ((!pZip->m_pState->m_zip64_has_extended_info_fields) && - (ext_data_size) && - (MZ_MAX(MZ_MAX(comp_size, decomp_size), local_header_ofs) == MZ_UINT32_MAX)) - { - /* Attempt to find zip64 extended information field in the entry's extra data */ - mz_uint32 extra_size_remaining = ext_data_size; - - if (extra_size_remaining) - { - const mz_uint8 *pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size; - - do - { - mz_uint32 field_id; - mz_uint32 field_data_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - - if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - /* Ok, the archive didn't have any zip64 headers but it uses a zip64 extended information field so mark it as zip64 anyway (this can occur with infozip's zip util when it reads compresses files from stdin). */ - pZip->m_pState->m_zip64 = MZ_TRUE; - pZip->m_pState->m_zip64_has_extended_info_fields = MZ_TRUE; - break; - } - - pExtra_data += sizeof(mz_uint16) * 2 + field_data_size; - extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size; - } while (extra_size_remaining); - } - } - - /* I've seen archives that aren't marked as zip64 that uses zip64 ext data, argh */ - if ((comp_size != MZ_UINT32_MAX) && (decomp_size != MZ_UINT32_MAX)) - { - if (((!MZ_READ_LE32(p + MZ_ZIP_CDH_METHOD_OFS)) && (decomp_size != comp_size)) || (decomp_size && !comp_size)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - disk_index = MZ_READ_LE16(p + MZ_ZIP_CDH_DISK_START_OFS); - if ((disk_index == MZ_UINT16_MAX) || ((disk_index != num_this_disk) && (disk_index != 1))) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_MULTIDISK); - - if (comp_size != MZ_UINT32_MAX) - { - if (((mz_uint64)MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS) + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - bit_flags = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - if (bit_flags & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_LOCAL_DIR_IS_MASKED) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - if ((total_header_size = MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS)) > n) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - n -= total_header_size; - p += total_header_size; - } - } - - if (sort_central_dir) - mz_zip_reader_sort_central_dir_offsets_by_filename(pZip); - - return MZ_TRUE; -} - -void mz_zip_zero_struct(mz_zip_archive *pZip) -{ - if (pZip) - MZ_CLEAR_OBJ(*pZip); -} - -static mz_bool mz_zip_reader_end_internal(mz_zip_archive *pZip, mz_bool set_last_error) -{ - mz_bool status = MZ_TRUE; - - if (!pZip) - return MZ_FALSE; - - if ((!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) - { - if (set_last_error) - pZip->m_last_error = MZ_ZIP_INVALID_PARAMETER; - - return MZ_FALSE; - } - - if (pZip->m_pState) - { - mz_zip_internal_state *pState = pZip->m_pState; - pZip->m_pState = NULL; - - mz_zip_array_clear(pZip, &pState->m_central_dir); - mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); - mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); - -#ifndef MINIZ_NO_STDIO - if (pState->m_pFile) - { - if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE) - { - if (MZ_FCLOSE(pState->m_pFile) == EOF) - { - if (set_last_error) - pZip->m_last_error = MZ_ZIP_FILE_CLOSE_FAILED; - status = MZ_FALSE; - } - } - pState->m_pFile = NULL; - } -#endif /* #ifndef MINIZ_NO_STDIO */ - - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - } - pZip->m_zip_mode = MZ_ZIP_MODE_INVALID; - - return status; -} - -mz_bool mz_zip_reader_end(mz_zip_archive *pZip) -{ - return mz_zip_reader_end_internal(pZip, MZ_TRUE); -} -mz_bool mz_zip_reader_init(mz_zip_archive *pZip, mz_uint64 size, mz_uint flags) -{ - if ((!pZip) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_reader_init_internal(pZip, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_USER; - pZip->m_archive_size = size; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -static size_t mz_zip_mem_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - size_t s = (file_ofs >= pZip->m_archive_size) ? 0 : (size_t)MZ_MIN(pZip->m_archive_size - file_ofs, n); - memcpy(pBuf, (const mz_uint8 *)pZip->m_pState->m_pMem + file_ofs, s); - return s; -} - -mz_bool mz_zip_reader_init_mem(mz_zip_archive *pZip, const void *pMem, size_t size, mz_uint flags) -{ - if (!pMem) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - - if (!mz_zip_reader_init_internal(pZip, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_MEMORY; - pZip->m_archive_size = size; - pZip->m_pRead = mz_zip_mem_read_func; - pZip->m_pIO_opaque = pZip; - pZip->m_pNeeds_keepalive = NULL; - -#ifdef __cplusplus - pZip->m_pState->m_pMem = const_cast(pMem); -#else - pZip->m_pState->m_pMem = (void *)pMem; -#endif - - pZip->m_pState->m_mem_size = size; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -#ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_read_func(void *pOpaque, mz_uint64 file_ofs, void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - - file_ofs += pZip->m_pState->m_file_archive_start_ofs; - - if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) - return 0; - - return MZ_FREAD(pBuf, 1, n, pZip->m_pState->m_pFile); -} - -mz_bool mz_zip_reader_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint32 flags) -{ - return mz_zip_reader_init_file_v2(pZip, pFilename, flags, 0, 0); -} - -mz_bool mz_zip_reader_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags, mz_uint64 file_start_ofs, mz_uint64 archive_size) -{ - mz_uint64 file_size; - MZ_FILE *pFile; - - if ((!pZip) || (!pFilename) || ((archive_size) && (archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE))) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pFile = MZ_FOPEN(pFilename, "rb"); - if (!pFile) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - file_size = archive_size; - if (!file_size) - { - if (MZ_FSEEK64(pFile, 0, SEEK_END)) - { - MZ_FCLOSE(pFile); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED); - } - - file_size = MZ_FTELL64(pFile); - } - - /* TODO: Better sanity check archive_size and the # of actual remaining bytes */ - - if (file_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - { - MZ_FCLOSE(pFile); - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - } - - if (!mz_zip_reader_init_internal(pZip, flags)) - { - MZ_FCLOSE(pFile); - return MZ_FALSE; - } - - pZip->m_zip_type = MZ_ZIP_TYPE_FILE; - pZip->m_pRead = mz_zip_file_read_func; - pZip->m_pIO_opaque = pZip; - pZip->m_pState->m_pFile = pFile; - pZip->m_archive_size = file_size; - pZip->m_pState->m_file_archive_start_ofs = file_start_ofs; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_reader_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint64 archive_size, mz_uint flags) -{ - mz_uint64 cur_file_ofs; - - if ((!pZip) || (!pFile)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - cur_file_ofs = MZ_FTELL64(pFile); - - if (!archive_size) - { - if (MZ_FSEEK64(pFile, 0, SEEK_END)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED); - - archive_size = MZ_FTELL64(pFile) - cur_file_ofs; - - if (archive_size < MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_NOT_AN_ARCHIVE); - } - - if (!mz_zip_reader_init_internal(pZip, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_CFILE; - pZip->m_pRead = mz_zip_file_read_func; - - pZip->m_pIO_opaque = pZip; - pZip->m_pState->m_pFile = pFile; - pZip->m_archive_size = archive_size; - pZip->m_pState->m_file_archive_start_ofs = cur_file_ofs; - - if (!mz_zip_reader_read_central_dir(pZip, flags)) - { - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -#endif /* #ifndef MINIZ_NO_STDIO */ - -static MZ_FORCEINLINE const mz_uint8 *mz_zip_get_cdh(mz_zip_archive *pZip, mz_uint file_index) -{ - if ((!pZip) || (!pZip->m_pState) || (file_index >= pZip->m_total_files)) - return NULL; - return &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); -} - -mz_bool mz_zip_reader_is_file_encrypted(mz_zip_archive *pZip, mz_uint file_index) -{ - mz_uint m_bit_flag; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - return (m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) != 0; -} - -mz_bool mz_zip_reader_is_file_supported(mz_zip_archive *pZip, mz_uint file_index) -{ - mz_uint bit_flag; - mz_uint method; - - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); - bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - - if ((method != 0) && (method != MZ_DEFLATED)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - return MZ_FALSE; - } - - if (bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - return MZ_FALSE; - } - - if (bit_flag & MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - return MZ_FALSE; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_reader_is_file_a_directory(mz_zip_archive *pZip, mz_uint file_index) -{ - mz_uint filename_len, attribute_mapping_id, external_attr; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - filename_len = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - if (filename_len) - { - if (*(p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_len - 1) == '/') - return MZ_TRUE; - } - - /* Bugfix: This code was also checking if the internal attribute was non-zero, which wasn't correct. */ - /* Most/all zip writers (hopefully) set DOS file/directory attributes in the low 16-bits, so check for the DOS directory flag and ignore the source OS ID in the created by field. */ - /* FIXME: Remove this check? Is it necessary - we already check the filename. */ - attribute_mapping_id = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS) >> 8; - (void)attribute_mapping_id; - - external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); - if ((external_attr & MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG) != 0) - { - return MZ_TRUE; - } - - return MZ_FALSE; -} - -static mz_bool mz_zip_file_stat_internal(mz_zip_archive *pZip, mz_uint file_index, const mz_uint8 *pCentral_dir_header, mz_zip_archive_file_stat *pStat, mz_bool *pFound_zip64_extra_data) -{ - mz_uint n; - const mz_uint8 *p = pCentral_dir_header; - - if (pFound_zip64_extra_data) - *pFound_zip64_extra_data = MZ_FALSE; - - if ((!p) || (!pStat)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Extract fields from the central directory record. */ - pStat->m_file_index = file_index; - pStat->m_central_dir_ofs = MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index); - pStat->m_version_made_by = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_MADE_BY_OFS); - pStat->m_version_needed = MZ_READ_LE16(p + MZ_ZIP_CDH_VERSION_NEEDED_OFS); - pStat->m_bit_flag = MZ_READ_LE16(p + MZ_ZIP_CDH_BIT_FLAG_OFS); - pStat->m_method = MZ_READ_LE16(p + MZ_ZIP_CDH_METHOD_OFS); -#ifndef MINIZ_NO_TIME - pStat->m_time = mz_zip_dos_to_time_t(MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_TIME_OFS), MZ_READ_LE16(p + MZ_ZIP_CDH_FILE_DATE_OFS)); -#endif - pStat->m_crc32 = MZ_READ_LE32(p + MZ_ZIP_CDH_CRC32_OFS); - pStat->m_comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - pStat->m_uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - pStat->m_internal_attr = MZ_READ_LE16(p + MZ_ZIP_CDH_INTERNAL_ATTR_OFS); - pStat->m_external_attr = MZ_READ_LE32(p + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS); - pStat->m_local_header_ofs = MZ_READ_LE32(p + MZ_ZIP_CDH_LOCAL_HEADER_OFS); - - /* Copy as much of the filename and comment as possible. */ - n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILENAME_SIZE - 1); - memcpy(pStat->m_filename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); - pStat->m_filename[n] = '\0'; - - n = MZ_READ_LE16(p + MZ_ZIP_CDH_COMMENT_LEN_OFS); - n = MZ_MIN(n, MZ_ZIP_MAX_ARCHIVE_FILE_COMMENT_SIZE - 1); - pStat->m_comment_size = n; - memcpy(pStat->m_comment, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS) + MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS), n); - pStat->m_comment[n] = '\0'; - - /* Set some flags for convienance */ - pStat->m_is_directory = mz_zip_reader_is_file_a_directory(pZip, file_index); - pStat->m_is_encrypted = mz_zip_reader_is_file_encrypted(pZip, file_index); - pStat->m_is_supported = mz_zip_reader_is_file_supported(pZip, file_index); - - /* See if we need to read any zip64 extended information fields. */ - /* Confusingly, these zip64 fields can be present even on non-zip64 archives (Debian zip on a huge files from stdin piped to stdout creates them). */ - if (MZ_MAX(MZ_MAX(pStat->m_comp_size, pStat->m_uncomp_size), pStat->m_local_header_ofs) == MZ_UINT32_MAX) - { - /* Attempt to find zip64 extended information field in the entry's extra data */ - mz_uint32 extra_size_remaining = MZ_READ_LE16(p + MZ_ZIP_CDH_EXTRA_LEN_OFS); - - if (extra_size_remaining) - { - const mz_uint8 *pExtra_data = p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - - do - { - mz_uint32 field_id; - mz_uint32 field_data_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - - if ((field_data_size + sizeof(mz_uint16) * 2) > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - const mz_uint8 *pField_data = pExtra_data + sizeof(mz_uint16) * 2; - mz_uint32 field_data_remaining = field_data_size; - - if (pFound_zip64_extra_data) - *pFound_zip64_extra_data = MZ_TRUE; - - if (pStat->m_uncomp_size == MZ_UINT32_MAX) - { - if (field_data_remaining < sizeof(mz_uint64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pStat->m_uncomp_size = MZ_READ_LE64(pField_data); - pField_data += sizeof(mz_uint64); - field_data_remaining -= sizeof(mz_uint64); - } - - if (pStat->m_comp_size == MZ_UINT32_MAX) - { - if (field_data_remaining < sizeof(mz_uint64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pStat->m_comp_size = MZ_READ_LE64(pField_data); - pField_data += sizeof(mz_uint64); - field_data_remaining -= sizeof(mz_uint64); - } - - if (pStat->m_local_header_ofs == MZ_UINT32_MAX) - { - if (field_data_remaining < sizeof(mz_uint64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - pStat->m_local_header_ofs = MZ_READ_LE64(pField_data); - pField_data += sizeof(mz_uint64); - field_data_remaining -= sizeof(mz_uint64); - } - - break; - } - - pExtra_data += sizeof(mz_uint16) * 2 + field_data_size; - extra_size_remaining = extra_size_remaining - sizeof(mz_uint16) * 2 - field_data_size; - } while (extra_size_remaining); - } - } - - return MZ_TRUE; -} - -static MZ_FORCEINLINE mz_bool mz_zip_string_equal(const char *pA, const char *pB, mz_uint len, mz_uint flags) -{ - mz_uint i; - if (flags & MZ_ZIP_FLAG_CASE_SENSITIVE) - return 0 == memcmp(pA, pB, len); - for (i = 0; i < len; ++i) - if (MZ_TOLOWER(pA[i]) != MZ_TOLOWER(pB[i])) - return MZ_FALSE; - return MZ_TRUE; -} - -static MZ_FORCEINLINE int mz_zip_filename_compare(const mz_zip_array *pCentral_dir_array, const mz_zip_array *pCentral_dir_offsets, mz_uint l_index, const char *pR, mz_uint r_len) -{ - const mz_uint8 *pL = &MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_array, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(pCentral_dir_offsets, mz_uint32, l_index)), *pE; - mz_uint l_len = MZ_READ_LE16(pL + MZ_ZIP_CDH_FILENAME_LEN_OFS); - mz_uint8 l = 0, r = 0; - pL += MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - pE = pL + MZ_MIN(l_len, r_len); - while (pL < pE) - { - if ((l = MZ_TOLOWER(*pL)) != (r = MZ_TOLOWER(*pR))) - break; - pL++; - pR++; - } - return (pL == pE) ? (int)(l_len - r_len) : (l - r); -} - -static mz_bool mz_zip_locate_file_binary_search(mz_zip_archive *pZip, const char *pFilename, mz_uint32 *pIndex) -{ - mz_zip_internal_state *pState = pZip->m_pState; - const mz_zip_array *pCentral_dir_offsets = &pState->m_central_dir_offsets; - const mz_zip_array *pCentral_dir = &pState->m_central_dir; - mz_uint32 *pIndices = &MZ_ZIP_ARRAY_ELEMENT(&pState->m_sorted_central_dir_offsets, mz_uint32, 0); - const uint32_t size = pZip->m_total_files; - const mz_uint filename_len = (mz_uint)strlen(pFilename); - - if (pIndex) - *pIndex = 0; - - if (size) - { - /* yes I could use uint32_t's, but then we would have to add some special case checks in the loop, argh, and */ - /* honestly the major expense here on 32-bit CPU's will still be the filename compare */ - mz_int64 l = 0, h = (mz_int64)size - 1; - - while (l <= h) - { - mz_int64 m = l + ((h - l) >> 1); - uint32_t file_index = pIndices[(uint32_t)m]; - - int comp = mz_zip_filename_compare(pCentral_dir, pCentral_dir_offsets, file_index, pFilename, filename_len); - if (!comp) - { - if (pIndex) - *pIndex = file_index; - return MZ_TRUE; - } - else if (comp < 0) - l = m + 1; - else - h = m - 1; - } - } - - return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND); -} - -int mz_zip_reader_locate_file(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags) -{ - mz_uint32 index; - if (!mz_zip_reader_locate_file_v2(pZip, pName, pComment, flags, &index)) - return -1; - else - return (int)index; -} - -mz_bool mz_zip_reader_locate_file_v2(mz_zip_archive *pZip, const char *pName, const char *pComment, mz_uint flags, mz_uint32 *pIndex) -{ - mz_uint file_index; - size_t name_len, comment_len; - - if (pIndex) - *pIndex = 0; - - if ((!pZip) || (!pZip->m_pState) || (!pName)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* See if we can use a binary search */ - if (((pZip->m_pState->m_init_flags & MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY) == 0) && - (pZip->m_zip_mode == MZ_ZIP_MODE_READING) && - ((flags & (MZ_ZIP_FLAG_IGNORE_PATH | MZ_ZIP_FLAG_CASE_SENSITIVE)) == 0) && (!pComment) && (pZip->m_pState->m_sorted_central_dir_offsets.m_size)) - { - return mz_zip_locate_file_binary_search(pZip, pName, pIndex); - } - - /* Locate the entry by scanning the entire central directory */ - name_len = strlen(pName); - if (name_len > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - comment_len = pComment ? strlen(pComment) : 0; - if (comment_len > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - for (file_index = 0; file_index < pZip->m_total_files; file_index++) - { - const mz_uint8 *pHeader = &MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir, mz_uint8, MZ_ZIP_ARRAY_ELEMENT(&pZip->m_pState->m_central_dir_offsets, mz_uint32, file_index)); - mz_uint filename_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_FILENAME_LEN_OFS); - const char *pFilename = (const char *)pHeader + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE; - if (filename_len < name_len) - continue; - if (comment_len) - { - mz_uint file_extra_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_EXTRA_LEN_OFS), file_comment_len = MZ_READ_LE16(pHeader + MZ_ZIP_CDH_COMMENT_LEN_OFS); - const char *pFile_comment = pFilename + filename_len + file_extra_len; - if ((file_comment_len != comment_len) || (!mz_zip_string_equal(pComment, pFile_comment, file_comment_len, flags))) - continue; - } - if ((flags & MZ_ZIP_FLAG_IGNORE_PATH) && (filename_len)) - { - int ofs = filename_len - 1; - do - { - if ((pFilename[ofs] == '/') || (pFilename[ofs] == '\\') || (pFilename[ofs] == ':')) - break; - } while (--ofs >= 0); - ofs++; - pFilename += ofs; - filename_len -= ofs; - } - if ((filename_len == name_len) && (mz_zip_string_equal(pName, pFilename, filename_len, flags))) - { - if (pIndex) - *pIndex = file_index; - return MZ_TRUE; - } - } - - return mz_zip_set_error(pZip, MZ_ZIP_FILE_NOT_FOUND); -} - -mz_bool mz_zip_reader_extract_to_mem_no_alloc(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) -{ - int status = TINFL_STATUS_DONE; - mz_uint64 needed_size, cur_file_ofs, comp_remaining, out_buf_ofs = 0, read_buf_size, read_buf_ofs = 0, read_buf_avail; - mz_zip_archive_file_stat file_stat; - void *pRead_buf; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - tinfl_decompressor inflator; - - if ((!pZip) || (!pZip->m_pState) || ((buf_size) && (!pBuf)) || ((user_read_buf_size) && (!pUser_read_buf)) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - /* A directory or zero length file */ - if ((file_stat.m_is_directory) || (!file_stat.m_comp_size)) - return MZ_TRUE; - - /* Encryption and patch files are not supported. */ - if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - /* This function only supports decompressing stored and deflate. */ - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - - /* Ensure supplied output buffer is large enough. */ - needed_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? file_stat.m_comp_size : file_stat.m_uncomp_size; - if (buf_size < needed_size) - return mz_zip_set_error(pZip, MZ_ZIP_BUF_TOO_SMALL); - - /* Read and parse the local directory entry. */ - cur_file_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) - { - /* The file is stored or the caller has requested the compressed data. */ - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pBuf, (size_t)needed_size) != needed_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) == 0) - { - if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32) - return mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED); - } -#endif - - return MZ_TRUE; - } - - /* Decompress the file either directly from memory or from a file input buffer. */ - tinfl_init(&inflator); - - if (pZip->m_pState->m_pMem) - { - /* Read directly from the archive in memory. */ - pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; - read_buf_size = read_buf_avail = file_stat.m_comp_size; - comp_remaining = 0; - } - else if (pUser_read_buf) - { - /* Use a user provided read buffer. */ - if (!user_read_buf_size) - return MZ_FALSE; - pRead_buf = (mz_uint8 *)pUser_read_buf; - read_buf_size = user_read_buf_size; - read_buf_avail = 0; - comp_remaining = file_stat.m_comp_size; - } - else - { - /* Temporarily allocate a read buffer. */ - read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); - if (((sizeof(size_t) == sizeof(mz_uint32))) && (read_buf_size > 0x7FFFFFFF)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - read_buf_avail = 0; - comp_remaining = file_stat.m_comp_size; - } - - do - { - /* The size_t cast here should be OK because we've verified that the output buffer is >= file_stat.m_uncomp_size above */ - size_t in_buf_size, out_buf_size = (size_t)(file_stat.m_uncomp_size - out_buf_ofs); - if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) - { - read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - status = TINFL_STATUS_FAILED; - mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); - break; - } - cur_file_ofs += read_buf_avail; - comp_remaining -= read_buf_avail; - read_buf_ofs = 0; - } - in_buf_size = (size_t)read_buf_avail; - status = tinfl_decompress(&inflator, (mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pBuf, (mz_uint8 *)pBuf + out_buf_ofs, &out_buf_size, TINFL_FLAG_USING_NON_WRAPPING_OUTPUT_BUF | (comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0)); - read_buf_avail -= in_buf_size; - read_buf_ofs += in_buf_size; - out_buf_ofs += out_buf_size; - } while (status == TINFL_STATUS_NEEDS_MORE_INPUT); - - if (status == TINFL_STATUS_DONE) - { - /* Make sure the entire file was decompressed, and check its CRC. */ - if (out_buf_ofs != file_stat.m_uncomp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); - status = TINFL_STATUS_FAILED; - } -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - else if (mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, (size_t)file_stat.m_uncomp_size) != file_stat.m_crc32) - { - mz_zip_set_error(pZip, MZ_ZIP_CRC_CHECK_FAILED); - status = TINFL_STATUS_FAILED; - } -#endif - } - - if ((!pZip->m_pState->m_pMem) && (!pUser_read_buf)) - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - - return status == TINFL_STATUS_DONE; -} - -mz_bool mz_zip_reader_extract_file_to_mem_no_alloc(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags, void *pUser_read_buf, size_t user_read_buf_size) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - return MZ_FALSE; - return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, pUser_read_buf, user_read_buf_size); -} - -mz_bool mz_zip_reader_extract_to_mem(mz_zip_archive *pZip, mz_uint file_index, void *pBuf, size_t buf_size, mz_uint flags) -{ - return mz_zip_reader_extract_to_mem_no_alloc(pZip, file_index, pBuf, buf_size, flags, NULL, 0); -} - -mz_bool mz_zip_reader_extract_file_to_mem(mz_zip_archive *pZip, const char *pFilename, void *pBuf, size_t buf_size, mz_uint flags) -{ - return mz_zip_reader_extract_file_to_mem_no_alloc(pZip, pFilename, pBuf, buf_size, flags, NULL, 0); -} - -void *mz_zip_reader_extract_to_heap(mz_zip_archive *pZip, mz_uint file_index, size_t *pSize, mz_uint flags) -{ - mz_uint64 comp_size, uncomp_size, alloc_size; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - void *pBuf; - - if (pSize) - *pSize = 0; - - if (!p) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return NULL; - } - - comp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS); - uncomp_size = MZ_READ_LE32(p + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS); - - alloc_size = (flags & MZ_ZIP_FLAG_COMPRESSED_DATA) ? comp_size : uncomp_size; - if (((sizeof(size_t) == sizeof(mz_uint32))) && (alloc_size > 0x7FFFFFFF)) - { - mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - return NULL; - } - - if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)alloc_size))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - return NULL; - } - - if (!mz_zip_reader_extract_to_mem(pZip, file_index, pBuf, (size_t)alloc_size, flags)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return NULL; - } - - if (pSize) - *pSize = (size_t)alloc_size; - return pBuf; -} - -void *mz_zip_reader_extract_file_to_heap(mz_zip_archive *pZip, const char *pFilename, size_t *pSize, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - { - if (pSize) - *pSize = 0; - return MZ_FALSE; - } - return mz_zip_reader_extract_to_heap(pZip, file_index, pSize, flags); -} - -mz_bool mz_zip_reader_extract_to_callback(mz_zip_archive *pZip, mz_uint file_index, mz_file_write_func pCallback, void *pOpaque, mz_uint flags) -{ - int status = TINFL_STATUS_DONE; - mz_uint file_crc32 = MZ_CRC32_INIT; - mz_uint64 read_buf_size, read_buf_ofs = 0, read_buf_avail, comp_remaining, out_buf_ofs = 0, cur_file_ofs; - mz_zip_archive_file_stat file_stat; - void *pRead_buf = NULL; - void *pWrite_buf = NULL; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - - if ((!pZip) || (!pZip->m_pState) || (!pCallback) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - /* A directory or zero length file */ - if ((file_stat.m_is_directory) || (!file_stat.m_comp_size)) - return MZ_TRUE; - - /* Encryption and patch files are not supported. */ - if (file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - /* This function only supports decompressing stored and deflate. */ - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - - /* Read and do some minimal validation of the local directory entry (this doesn't crack the zip64 stuff, which we already have from the central dir) */ - cur_file_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - if ((cur_file_ofs + file_stat.m_comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - /* Decompress the file either directly from memory or from a file input buffer. */ - if (pZip->m_pState->m_pMem) - { - pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + cur_file_ofs; - read_buf_size = read_buf_avail = file_stat.m_comp_size; - comp_remaining = 0; - } - else - { - read_buf_size = MZ_MIN(file_stat.m_comp_size, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); - if (NULL == (pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)read_buf_size))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - read_buf_avail = 0; - comp_remaining = file_stat.m_comp_size; - } - - if ((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!file_stat.m_method)) - { - /* The file is stored or the caller has requested the compressed data. */ - if (pZip->m_pState->m_pMem) - { - if (((sizeof(size_t) == sizeof(mz_uint32))) && (file_stat.m_comp_size > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)file_stat.m_comp_size) != file_stat.m_comp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED); - status = TINFL_STATUS_FAILED; - } - else if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)file_stat.m_comp_size); -#endif - } - - cur_file_ofs += file_stat.m_comp_size; - out_buf_ofs += file_stat.m_comp_size; - comp_remaining = 0; - } - else - { - while (comp_remaining) - { - read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - if (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - file_crc32 = (mz_uint32)mz_crc32(file_crc32, (const mz_uint8 *)pRead_buf, (size_t)read_buf_avail); - } -#endif - - if (pCallback(pOpaque, out_buf_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - - cur_file_ofs += read_buf_avail; - out_buf_ofs += read_buf_avail; - comp_remaining -= read_buf_avail; - } - } - } - else - { - tinfl_decompressor inflator; - tinfl_init(&inflator); - - if (NULL == (pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - status = TINFL_STATUS_FAILED; - } - else - { - do - { - mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pWrite_buf + (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - if ((!read_buf_avail) && (!pZip->m_pState->m_pMem)) - { - read_buf_avail = MZ_MIN(read_buf_size, comp_remaining); - if (pZip->m_pRead(pZip->m_pIO_opaque, cur_file_ofs, pRead_buf, (size_t)read_buf_avail) != read_buf_avail) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - cur_file_ofs += read_buf_avail; - comp_remaining -= read_buf_avail; - read_buf_ofs = 0; - } - - in_buf_size = (size_t)read_buf_avail; - status = tinfl_decompress(&inflator, (const mz_uint8 *)pRead_buf + read_buf_ofs, &in_buf_size, (mz_uint8 *)pWrite_buf, pWrite_buf_cur, &out_buf_size, comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0); - read_buf_avail -= in_buf_size; - read_buf_ofs += in_buf_size; - - if (out_buf_size) - { - if (pCallback(pOpaque, out_buf_ofs, pWrite_buf_cur, out_buf_size) != out_buf_size) - { - mz_zip_set_error(pZip, MZ_ZIP_WRITE_CALLBACK_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - file_crc32 = (mz_uint32)mz_crc32(file_crc32, pWrite_buf_cur, out_buf_size); -#endif - if ((out_buf_ofs += out_buf_size) > file_stat.m_uncomp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); - status = TINFL_STATUS_FAILED; - break; - } - } - } while ((status == TINFL_STATUS_NEEDS_MORE_INPUT) || (status == TINFL_STATUS_HAS_MORE_OUTPUT)); - } - } - - if ((status == TINFL_STATUS_DONE) && (!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - { - /* Make sure the entire file was decompressed, and check its CRC. */ - if (out_buf_ofs != file_stat.m_uncomp_size) - { - mz_zip_set_error(pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); - status = TINFL_STATUS_FAILED; - } -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - else if (file_crc32 != file_stat.m_crc32) - { - mz_zip_set_error(pZip, MZ_ZIP_DECOMPRESSION_FAILED); - status = TINFL_STATUS_FAILED; - } -#endif - } - - if (!pZip->m_pState->m_pMem) - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - - if (pWrite_buf) - pZip->m_pFree(pZip->m_pAlloc_opaque, pWrite_buf); - - return status == TINFL_STATUS_DONE; -} - -mz_bool mz_zip_reader_extract_file_to_callback(mz_zip_archive *pZip, const char *pFilename, mz_file_write_func pCallback, void *pOpaque, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - return MZ_FALSE; - - return mz_zip_reader_extract_to_callback(pZip, file_index, pCallback, pOpaque, flags); -} - -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_iter_new(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags) -{ - mz_zip_reader_extract_iter_state *pState; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - - /* Argument sanity check */ - if ((!pZip) || (!pZip->m_pState)) - return NULL; - - /* Allocate an iterator status structure */ - pState = (mz_zip_reader_extract_iter_state*)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_reader_extract_iter_state)); - if (!pState) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - return NULL; - } - - /* Fetch file details */ - if (!mz_zip_reader_file_stat(pZip, file_index, &pState->file_stat)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* Encryption and patch files are not supported. */ - if (pState->file_stat.m_bit_flag & (MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_IS_ENCRYPTED | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_USES_STRONG_ENCRYPTION | MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_COMPRESSED_PATCH_FLAG)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* This function only supports decompressing stored and deflate. */ - if ((!(flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (pState->file_stat.m_method != 0) && (pState->file_stat.m_method != MZ_DEFLATED)) - { - mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* Init state - save args */ - pState->pZip = pZip; - pState->flags = flags; - - /* Init state - reset variables to defaults */ - pState->status = TINFL_STATUS_DONE; -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - pState->file_crc32 = MZ_CRC32_INIT; -#endif - pState->read_buf_ofs = 0; - pState->out_buf_ofs = 0; - pState->pRead_buf = NULL; - pState->pWrite_buf = NULL; - pState->out_blk_remain = 0; - - /* Read and parse the local directory entry. */ - pState->cur_file_ofs = pState->file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, pState->cur_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - pState->cur_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS) + MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - if ((pState->cur_file_ofs + pState->file_stat.m_comp_size) > pZip->m_archive_size) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - - /* Decompress the file either directly from memory or from a file input buffer. */ - if (pZip->m_pState->m_pMem) - { - pState->pRead_buf = (mz_uint8 *)pZip->m_pState->m_pMem + pState->cur_file_ofs; - pState->read_buf_size = pState->read_buf_avail = pState->file_stat.m_comp_size; - pState->comp_remaining = pState->file_stat.m_comp_size; - } - else - { - if (!((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method))) - { - /* Decompression required, therefore intermediate read buffer required */ - pState->read_buf_size = MZ_MIN(pState->file_stat.m_comp_size, MZ_ZIP_MAX_IO_BUF_SIZE); - if (NULL == (pState->pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)pState->read_buf_size))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - } - else - { - /* Decompression not required - we will be reading directly into user buffer, no temp buf required */ - pState->read_buf_size = 0; - } - pState->read_buf_avail = 0; - pState->comp_remaining = pState->file_stat.m_comp_size; - } - - if (!((flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method))) - { - /* Decompression required, init decompressor */ - tinfl_init( &pState->inflator ); - - /* Allocate write buffer */ - if (NULL == (pState->pWrite_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, TINFL_LZ_DICT_SIZE))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - if (pState->pRead_buf) - pZip->m_pFree(pZip->m_pAlloc_opaque, pState->pRead_buf); - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - return NULL; - } - } - - return pState; -} - -mz_zip_reader_extract_iter_state* mz_zip_reader_extract_file_iter_new(mz_zip_archive *pZip, const char *pFilename, mz_uint flags) -{ - mz_uint32 file_index; - - /* Locate file index by name */ - if (!mz_zip_reader_locate_file_v2(pZip, pFilename, NULL, flags, &file_index)) - return NULL; - - /* Construct iterator */ - return mz_zip_reader_extract_iter_new(pZip, file_index, flags); -} - -size_t mz_zip_reader_extract_iter_read(mz_zip_reader_extract_iter_state* pState, void* pvBuf, size_t buf_size) -{ - size_t copied_to_caller = 0; - - /* Argument sanity check */ - if ((!pState) || (!pState->pZip) || (!pState->pZip->m_pState) || (!pvBuf)) - return 0; - - if ((pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA) || (!pState->file_stat.m_method)) - { - /* The file is stored or the caller has requested the compressed data, calc amount to return. */ - copied_to_caller = MZ_MIN( buf_size, pState->comp_remaining ); - - /* Zip is in memory....or requires reading from a file? */ - if (pState->pZip->m_pState->m_pMem) - { - /* Copy data to caller's buffer */ - memcpy( pvBuf, pState->pRead_buf, copied_to_caller ); - pState->pRead_buf = ((mz_uint8*)pState->pRead_buf) + copied_to_caller; - } - else - { - /* Read directly into caller's buffer */ - if (pState->pZip->m_pRead(pState->pZip->m_pIO_opaque, pState->cur_file_ofs, pvBuf, copied_to_caller) != copied_to_caller) - { - /* Failed to read all that was asked for, flag failure and alert user */ - mz_zip_set_error(pState->pZip, MZ_ZIP_FILE_READ_FAILED); - pState->status = TINFL_STATUS_FAILED; - copied_to_caller = 0; - } - } - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - /* Compute CRC if not returning compressed data only */ - if (!(pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - pState->file_crc32 = (mz_uint32)mz_crc32(pState->file_crc32, (const mz_uint8 *)pvBuf, copied_to_caller); -#endif - - /* Advance offsets, dec counters */ - pState->cur_file_ofs += copied_to_caller; - pState->out_buf_ofs += copied_to_caller; - pState->comp_remaining -= copied_to_caller; - } - else - { - do - { - /* Calc ptr to write buffer - given current output pos and block size */ - mz_uint8 *pWrite_buf_cur = (mz_uint8 *)pState->pWrite_buf + (pState->out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - - /* Calc max output size - given current output pos and block size */ - size_t in_buf_size, out_buf_size = TINFL_LZ_DICT_SIZE - (pState->out_buf_ofs & (TINFL_LZ_DICT_SIZE - 1)); - - if (!pState->out_blk_remain) - { - /* Read more data from file if none available (and reading from file) */ - if ((!pState->read_buf_avail) && (!pState->pZip->m_pState->m_pMem)) - { - /* Calc read size */ - pState->read_buf_avail = MZ_MIN(pState->read_buf_size, pState->comp_remaining); - if (pState->pZip->m_pRead(pState->pZip->m_pIO_opaque, pState->cur_file_ofs, pState->pRead_buf, (size_t)pState->read_buf_avail) != pState->read_buf_avail) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_FILE_READ_FAILED); - pState->status = TINFL_STATUS_FAILED; - break; - } - - /* Advance offsets, dec counters */ - pState->cur_file_ofs += pState->read_buf_avail; - pState->comp_remaining -= pState->read_buf_avail; - pState->read_buf_ofs = 0; - } - - /* Perform decompression */ - in_buf_size = (size_t)pState->read_buf_avail; - pState->status = tinfl_decompress(&pState->inflator, (const mz_uint8 *)pState->pRead_buf + pState->read_buf_ofs, &in_buf_size, (mz_uint8 *)pState->pWrite_buf, pWrite_buf_cur, &out_buf_size, pState->comp_remaining ? TINFL_FLAG_HAS_MORE_INPUT : 0); - pState->read_buf_avail -= in_buf_size; - pState->read_buf_ofs += in_buf_size; - - /* Update current output block size remaining */ - pState->out_blk_remain = out_buf_size; - } - - if (pState->out_blk_remain) - { - /* Calc amount to return. */ - size_t to_copy = MZ_MIN( (buf_size - copied_to_caller), pState->out_blk_remain ); - - /* Copy data to caller's buffer */ - memcpy( (uint8_t*)pvBuf + copied_to_caller, pWrite_buf_cur, to_copy ); - -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - /* Perform CRC */ - pState->file_crc32 = (mz_uint32)mz_crc32(pState->file_crc32, pWrite_buf_cur, to_copy); -#endif - - /* Decrement data consumed from block */ - pState->out_blk_remain -= to_copy; - - /* Inc output offset, while performing sanity check */ - if ((pState->out_buf_ofs += to_copy) > pState->file_stat.m_uncomp_size) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_DECOMPRESSION_FAILED); - pState->status = TINFL_STATUS_FAILED; - break; - } - - /* Increment counter of data copied to caller */ - copied_to_caller += to_copy; - } - } while ( (copied_to_caller < buf_size) && ((pState->status == TINFL_STATUS_NEEDS_MORE_INPUT) || (pState->status == TINFL_STATUS_HAS_MORE_OUTPUT)) ); - } - - /* Return how many bytes were copied into user buffer */ - return copied_to_caller; -} - -mz_bool mz_zip_reader_extract_iter_free(mz_zip_reader_extract_iter_state* pState) -{ - int status; - - /* Argument sanity check */ - if ((!pState) || (!pState->pZip) || (!pState->pZip->m_pState)) - return MZ_FALSE; - - /* Was decompression completed and requested? */ - if ((pState->status == TINFL_STATUS_DONE) && (!(pState->flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - { - /* Make sure the entire file was decompressed, and check its CRC. */ - if (pState->out_buf_ofs != pState->file_stat.m_uncomp_size) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE); - pState->status = TINFL_STATUS_FAILED; - } -#ifndef MINIZ_DISABLE_ZIP_READER_CRC32_CHECKS - else if (pState->file_crc32 != pState->file_stat.m_crc32) - { - mz_zip_set_error(pState->pZip, MZ_ZIP_DECOMPRESSION_FAILED); - pState->status = TINFL_STATUS_FAILED; - } -#endif - } - - /* Free buffers */ - if (!pState->pZip->m_pState->m_pMem) - pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState->pRead_buf); - if (pState->pWrite_buf) - pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState->pWrite_buf); - - /* Save status */ - status = pState->status; - - /* Free context */ - pState->pZip->m_pFree(pState->pZip->m_pAlloc_opaque, pState); - - return status == TINFL_STATUS_DONE; -} - -#ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_write_callback(void *pOpaque, mz_uint64 ofs, const void *pBuf, size_t n) -{ - (void)ofs; - - return MZ_FWRITE(pBuf, 1, n, (MZ_FILE *)pOpaque); -} - -mz_bool mz_zip_reader_extract_to_file(mz_zip_archive *pZip, mz_uint file_index, const char *pDst_filename, mz_uint flags) -{ - mz_bool status; - mz_zip_archive_file_stat file_stat; - MZ_FILE *pFile; - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - if ((file_stat.m_is_directory) || (!file_stat.m_is_supported)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - - pFile = MZ_FOPEN(pDst_filename, "wb"); - if (!pFile) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - status = mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags); - - if (MZ_FCLOSE(pFile) == EOF) - { - if (status) - mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED); - - status = MZ_FALSE; - } - -#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO) - if (status) - mz_zip_set_file_times(pDst_filename, file_stat.m_time, file_stat.m_time); -#endif - - return status; -} - -mz_bool mz_zip_reader_extract_file_to_file(mz_zip_archive *pZip, const char *pArchive_filename, const char *pDst_filename, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pArchive_filename, NULL, flags, &file_index)) - return MZ_FALSE; - - return mz_zip_reader_extract_to_file(pZip, file_index, pDst_filename, flags); -} - -mz_bool mz_zip_reader_extract_to_cfile(mz_zip_archive *pZip, mz_uint file_index, MZ_FILE *pFile, mz_uint flags) -{ - mz_zip_archive_file_stat file_stat; - - if (!mz_zip_reader_file_stat(pZip, file_index, &file_stat)) - return MZ_FALSE; - - if ((file_stat.m_is_directory) || (!file_stat.m_is_supported)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - - return mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_file_write_callback, pFile, flags); -} - -mz_bool mz_zip_reader_extract_file_to_cfile(mz_zip_archive *pZip, const char *pArchive_filename, MZ_FILE *pFile, mz_uint flags) -{ - mz_uint32 file_index; - if (!mz_zip_reader_locate_file_v2(pZip, pArchive_filename, NULL, flags, &file_index)) - return MZ_FALSE; - - return mz_zip_reader_extract_to_cfile(pZip, file_index, pFile, flags); -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -static size_t mz_zip_compute_crc32_callback(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ - mz_uint32 *p = (mz_uint32 *)pOpaque; - (void)file_ofs; - *p = (mz_uint32)mz_crc32(*p, (const mz_uint8 *)pBuf, n); - return n; -} - -mz_bool mz_zip_validate_file(mz_zip_archive *pZip, mz_uint file_index, mz_uint flags) -{ - mz_zip_archive_file_stat file_stat; - mz_zip_internal_state *pState; - const mz_uint8 *pCentral_dir_header; - mz_bool found_zip64_ext_data_in_cdir = MZ_FALSE; - mz_bool found_zip64_ext_data_in_ldir = MZ_FALSE; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - mz_uint64 local_header_ofs = 0; - mz_uint32 local_header_filename_len, local_header_extra_len, local_header_crc32; - mz_uint64 local_header_comp_size, local_header_uncomp_size; - mz_uint32 uncomp_crc32 = MZ_CRC32_INIT; - mz_bool has_data_descriptor; - mz_uint32 local_header_bit_flags; - - mz_zip_array file_data_array; - mz_zip_array_init(&file_data_array, 1); - - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (file_index > pZip->m_total_files) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - pCentral_dir_header = mz_zip_get_cdh(pZip, file_index); - - if (!mz_zip_file_stat_internal(pZip, file_index, pCentral_dir_header, &file_stat, &found_zip64_ext_data_in_cdir)) - return MZ_FALSE; - - /* A directory or zero length file */ - if ((file_stat.m_is_directory) || (!file_stat.m_uncomp_size)) - return MZ_TRUE; - - /* Encryption and patch files are not supported. */ - if (file_stat.m_is_encrypted) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_ENCRYPTION); - - /* This function only supports stored and deflate. */ - if ((file_stat.m_method != 0) && (file_stat.m_method != MZ_DEFLATED)) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_METHOD); - - if (!file_stat.m_is_supported) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_FEATURE); - - /* Read and parse the local directory entry. */ - local_header_ofs = file_stat.m_local_header_ofs; - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - local_header_filename_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS); - local_header_extra_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - local_header_comp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS); - local_header_uncomp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS); - local_header_crc32 = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_CRC32_OFS); - local_header_bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS); - has_data_descriptor = (local_header_bit_flags & 8) != 0; - - if (local_header_filename_len != strlen(file_stat.m_filename)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if ((local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len + local_header_extra_len + file_stat.m_comp_size) > pZip->m_archive_size) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (!mz_zip_array_resize(pZip, &file_data_array, MZ_MAX(local_header_filename_len, local_header_extra_len), MZ_FALSE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if (local_header_filename_len) - { - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE, file_data_array.m_p, local_header_filename_len) != local_header_filename_len) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - goto handle_failure; - } - - /* I've seen 1 archive that had the same pathname, but used backslashes in the local dir and forward slashes in the central dir. Do we care about this? For now, this case will fail validation. */ - if (memcmp(file_stat.m_filename, file_data_array.m_p, local_header_filename_len) != 0) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - goto handle_failure; - } - } - - if ((local_header_extra_len) && ((local_header_comp_size == MZ_UINT32_MAX) || (local_header_uncomp_size == MZ_UINT32_MAX))) - { - mz_uint32 extra_size_remaining = local_header_extra_len; - const mz_uint8 *pExtra_data = (const mz_uint8 *)file_data_array.m_p; - - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len, file_data_array.m_p, local_header_extra_len) != local_header_extra_len) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - goto handle_failure; - } - - do - { - mz_uint32 field_id, field_data_size, field_total_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - field_total_size = field_data_size + sizeof(mz_uint16) * 2; - - if (field_total_size > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - const mz_uint8 *pSrc_field_data = pExtra_data + sizeof(mz_uint32); - - if (field_data_size < sizeof(mz_uint64) * 2) - { - mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - goto handle_failure; - } - - local_header_uncomp_size = MZ_READ_LE64(pSrc_field_data); - local_header_comp_size = MZ_READ_LE64(pSrc_field_data + sizeof(mz_uint64)); - - found_zip64_ext_data_in_ldir = MZ_TRUE; - break; - } - - pExtra_data += field_total_size; - extra_size_remaining -= field_total_size; - } while (extra_size_remaining); - } - - /* TODO: parse local header extra data when local_header_comp_size is 0xFFFFFFFF! (big_descriptor.zip) */ - /* I've seen zips in the wild with the data descriptor bit set, but proper local header values and bogus data descriptors */ - if ((has_data_descriptor) && (!local_header_comp_size) && (!local_header_crc32)) - { - mz_uint8 descriptor_buf[32]; - mz_bool has_id; - const mz_uint8 *pSrc; - mz_uint32 file_crc32; - mz_uint64 comp_size = 0, uncomp_size = 0; - - mz_uint32 num_descriptor_uint32s = ((pState->m_zip64) || (found_zip64_ext_data_in_ldir)) ? 6 : 4; - - if (pZip->m_pRead(pZip->m_pIO_opaque, local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_len + local_header_extra_len + file_stat.m_comp_size, descriptor_buf, sizeof(mz_uint32) * num_descriptor_uint32s) != (sizeof(mz_uint32) * num_descriptor_uint32s)) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - goto handle_failure; - } - - has_id = (MZ_READ_LE32(descriptor_buf) == MZ_ZIP_DATA_DESCRIPTOR_ID); - pSrc = has_id ? (descriptor_buf + sizeof(mz_uint32)) : descriptor_buf; - - file_crc32 = MZ_READ_LE32(pSrc); - - if ((pState->m_zip64) || (found_zip64_ext_data_in_ldir)) - { - comp_size = MZ_READ_LE64(pSrc + sizeof(mz_uint32)); - uncomp_size = MZ_READ_LE64(pSrc + sizeof(mz_uint32) + sizeof(mz_uint64)); - } - else - { - comp_size = MZ_READ_LE32(pSrc + sizeof(mz_uint32)); - uncomp_size = MZ_READ_LE32(pSrc + sizeof(mz_uint32) + sizeof(mz_uint32)); - } - - if ((file_crc32 != file_stat.m_crc32) || (comp_size != file_stat.m_comp_size) || (uncomp_size != file_stat.m_uncomp_size)) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - goto handle_failure; - } - } - else - { - if ((local_header_crc32 != file_stat.m_crc32) || (local_header_comp_size != file_stat.m_comp_size) || (local_header_uncomp_size != file_stat.m_uncomp_size)) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - goto handle_failure; - } - } - - mz_zip_array_clear(pZip, &file_data_array); - - if ((flags & MZ_ZIP_FLAG_VALIDATE_HEADERS_ONLY) == 0) - { - if (!mz_zip_reader_extract_to_callback(pZip, file_index, mz_zip_compute_crc32_callback, &uncomp_crc32, 0)) - return MZ_FALSE; - - /* 1 more check to be sure, although the extract checks too. */ - if (uncomp_crc32 != file_stat.m_crc32) - { - mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - return MZ_FALSE; - } - } - - return MZ_TRUE; - -handle_failure: - mz_zip_array_clear(pZip, &file_data_array); - return MZ_FALSE; -} - -mz_bool mz_zip_validate_archive(mz_zip_archive *pZip, mz_uint flags) -{ - mz_zip_internal_state *pState; - uint32_t i; - - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - /* Basic sanity checks */ - if (!pState->m_zip64) - { - if (pZip->m_total_files > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - if (pZip->m_archive_size > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - } - else - { - if (pZip->m_total_files >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - if (pState->m_central_dir.m_size >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - } - - for (i = 0; i < pZip->m_total_files; i++) - { - if (MZ_ZIP_FLAG_VALIDATE_LOCATE_FILE_FLAG & flags) - { - mz_uint32 found_index; - mz_zip_archive_file_stat stat; - - if (!mz_zip_reader_file_stat(pZip, i, &stat)) - return MZ_FALSE; - - if (!mz_zip_reader_locate_file_v2(pZip, stat.m_filename, NULL, 0, &found_index)) - return MZ_FALSE; - - /* This check can fail if there are duplicate filenames in the archive (which we don't check for when writing - that's up to the user) */ - if (found_index != i) - return mz_zip_set_error(pZip, MZ_ZIP_VALIDATION_FAILED); - } - - if (!mz_zip_validate_file(pZip, i, flags)) - return MZ_FALSE; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_validate_mem_archive(const void *pMem, size_t size, mz_uint flags, mz_zip_error *pErr) -{ - mz_bool success = MZ_TRUE; - mz_zip_archive zip; - mz_zip_error actual_err = MZ_ZIP_NO_ERROR; - - if ((!pMem) || (!size)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - return MZ_FALSE; - } - - mz_zip_zero_struct(&zip); - - if (!mz_zip_reader_init_mem(&zip, pMem, size, flags)) - { - if (pErr) - *pErr = zip.m_last_error; - return MZ_FALSE; - } - - if (!mz_zip_validate_archive(&zip, flags)) - { - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (!mz_zip_reader_end_internal(&zip, success)) - { - if (!actual_err) - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (pErr) - *pErr = actual_err; - - return success; -} - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_validate_file_archive(const char *pFilename, mz_uint flags, mz_zip_error *pErr) -{ - mz_bool success = MZ_TRUE; - mz_zip_archive zip; - mz_zip_error actual_err = MZ_ZIP_NO_ERROR; - - if (!pFilename) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - return MZ_FALSE; - } - - mz_zip_zero_struct(&zip); - - if (!mz_zip_reader_init_file_v2(&zip, pFilename, flags, 0, 0)) - { - if (pErr) - *pErr = zip.m_last_error; - return MZ_FALSE; - } - - if (!mz_zip_validate_archive(&zip, flags)) - { - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (!mz_zip_reader_end_internal(&zip, success)) - { - if (!actual_err) - actual_err = zip.m_last_error; - success = MZ_FALSE; - } - - if (pErr) - *pErr = actual_err; - - return success; -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -/* ------------------- .ZIP archive writing */ - -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS - -static MZ_FORCEINLINE void mz_write_le16(mz_uint8 *p, mz_uint16 v) -{ - p[0] = (mz_uint8)v; - p[1] = (mz_uint8)(v >> 8); -} -static MZ_FORCEINLINE void mz_write_le32(mz_uint8 *p, mz_uint32 v) -{ - p[0] = (mz_uint8)v; - p[1] = (mz_uint8)(v >> 8); - p[2] = (mz_uint8)(v >> 16); - p[3] = (mz_uint8)(v >> 24); -} -static MZ_FORCEINLINE void mz_write_le64(mz_uint8 *p, mz_uint64 v) -{ - mz_write_le32(p, (mz_uint32)v); - mz_write_le32(p + sizeof(mz_uint32), (mz_uint32)(v >> 32)); -} - -#define MZ_WRITE_LE16(p, v) mz_write_le16((mz_uint8 *)(p), (mz_uint16)(v)) -#define MZ_WRITE_LE32(p, v) mz_write_le32((mz_uint8 *)(p), (mz_uint32)(v)) -#define MZ_WRITE_LE64(p, v) mz_write_le64((mz_uint8 *)(p), (mz_uint64)(v)) - -static size_t mz_zip_heap_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - mz_zip_internal_state *pState = pZip->m_pState; - mz_uint64 new_size = MZ_MAX(file_ofs + n, pState->m_mem_size); - - if (!n) - return 0; - - /* An allocation this big is likely to just fail on 32-bit systems, so don't even go there. */ - if ((sizeof(size_t) == sizeof(mz_uint32)) && (new_size > 0x7FFFFFFF)) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE); - return 0; - } - - if (new_size > pState->m_mem_capacity) - { - void *pNew_block; - size_t new_capacity = MZ_MAX(64, pState->m_mem_capacity); - - while (new_capacity < new_size) - new_capacity *= 2; - - if (NULL == (pNew_block = pZip->m_pRealloc(pZip->m_pAlloc_opaque, pState->m_pMem, 1, new_capacity))) - { - mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - return 0; - } - - pState->m_pMem = pNew_block; - pState->m_mem_capacity = new_capacity; - } - memcpy((mz_uint8 *)pState->m_pMem + file_ofs, pBuf, n); - pState->m_mem_size = (size_t)new_size; - return n; -} - -static mz_bool mz_zip_writer_end_internal(mz_zip_archive *pZip, mz_bool set_last_error) -{ - mz_zip_internal_state *pState; - mz_bool status = MZ_TRUE; - - if ((!pZip) || (!pZip->m_pState) || (!pZip->m_pAlloc) || (!pZip->m_pFree) || ((pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) && (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED))) - { - if (set_last_error) - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return MZ_FALSE; - } - - pState = pZip->m_pState; - pZip->m_pState = NULL; - mz_zip_array_clear(pZip, &pState->m_central_dir); - mz_zip_array_clear(pZip, &pState->m_central_dir_offsets); - mz_zip_array_clear(pZip, &pState->m_sorted_central_dir_offsets); - -#ifndef MINIZ_NO_STDIO - if (pState->m_pFile) - { - if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE) - { - if (MZ_FCLOSE(pState->m_pFile) == EOF) - { - if (set_last_error) - mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED); - status = MZ_FALSE; - } - } - - pState->m_pFile = NULL; - } -#endif /* #ifndef MINIZ_NO_STDIO */ - - if ((pZip->m_pWrite == mz_zip_heap_write_func) && (pState->m_pMem)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pState->m_pMem); - pState->m_pMem = NULL; - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pState); - pZip->m_zip_mode = MZ_ZIP_MODE_INVALID; - return status; -} - -mz_bool mz_zip_writer_init_v2(mz_zip_archive *pZip, mz_uint64 existing_size, mz_uint flags) -{ - mz_bool zip64 = (flags & MZ_ZIP_FLAG_WRITE_ZIP64) != 0; - - if ((!pZip) || (pZip->m_pState) || (!pZip->m_pWrite) || (pZip->m_zip_mode != MZ_ZIP_MODE_INVALID)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - { - if (!pZip->m_pRead) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - if (pZip->m_file_offset_alignment) - { - /* Ensure user specified file offset alignment is a power of 2. */ - if (pZip->m_file_offset_alignment & (pZip->m_file_offset_alignment - 1)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - if (!pZip->m_pAlloc) - pZip->m_pAlloc = miniz_def_alloc_func; - if (!pZip->m_pFree) - pZip->m_pFree = miniz_def_free_func; - if (!pZip->m_pRealloc) - pZip->m_pRealloc = miniz_def_realloc_func; - - pZip->m_archive_size = existing_size; - pZip->m_central_directory_file_ofs = 0; - pZip->m_total_files = 0; - - if (NULL == (pZip->m_pState = (mz_zip_internal_state *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(mz_zip_internal_state)))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - memset(pZip->m_pState, 0, sizeof(mz_zip_internal_state)); - - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir, sizeof(mz_uint8)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_central_dir_offsets, sizeof(mz_uint32)); - MZ_ZIP_ARRAY_SET_ELEMENT_SIZE(&pZip->m_pState->m_sorted_central_dir_offsets, sizeof(mz_uint32)); - - pZip->m_pState->m_zip64 = zip64; - pZip->m_pState->m_zip64_has_extended_info_fields = zip64; - - pZip->m_zip_type = MZ_ZIP_TYPE_USER; - pZip->m_zip_mode = MZ_ZIP_MODE_WRITING; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init(mz_zip_archive *pZip, mz_uint64 existing_size) -{ - return mz_zip_writer_init_v2(pZip, existing_size, 0); -} - -mz_bool mz_zip_writer_init_heap_v2(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size, mz_uint flags) -{ - pZip->m_pWrite = mz_zip_heap_write_func; - pZip->m_pNeeds_keepalive = NULL; - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - pZip->m_pRead = mz_zip_mem_read_func; - - pZip->m_pIO_opaque = pZip; - - if (!mz_zip_writer_init_v2(pZip, size_to_reserve_at_beginning, flags)) - return MZ_FALSE; - - pZip->m_zip_type = MZ_ZIP_TYPE_HEAP; - - if (0 != (initial_allocation_size = MZ_MAX(initial_allocation_size, size_to_reserve_at_beginning))) - { - if (NULL == (pZip->m_pState->m_pMem = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, initial_allocation_size))) - { - mz_zip_writer_end_internal(pZip, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - pZip->m_pState->m_mem_capacity = initial_allocation_size; - } - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init_heap(mz_zip_archive *pZip, size_t size_to_reserve_at_beginning, size_t initial_allocation_size) -{ - return mz_zip_writer_init_heap_v2(pZip, size_to_reserve_at_beginning, initial_allocation_size, 0); -} - -#ifndef MINIZ_NO_STDIO -static size_t mz_zip_file_write_func(void *pOpaque, mz_uint64 file_ofs, const void *pBuf, size_t n) -{ - mz_zip_archive *pZip = (mz_zip_archive *)pOpaque; - mz_int64 cur_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - - file_ofs += pZip->m_pState->m_file_archive_start_ofs; - - if (((mz_int64)file_ofs < 0) || (((cur_ofs != (mz_int64)file_ofs)) && (MZ_FSEEK64(pZip->m_pState->m_pFile, (mz_int64)file_ofs, SEEK_SET)))) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_SEEK_FAILED); - return 0; - } - - return MZ_FWRITE(pBuf, 1, n, pZip->m_pState->m_pFile); -} - -mz_bool mz_zip_writer_init_file(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning) -{ - return mz_zip_writer_init_file_v2(pZip, pFilename, size_to_reserve_at_beginning, 0); -} - -mz_bool mz_zip_writer_init_file_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint64 size_to_reserve_at_beginning, mz_uint flags) -{ - MZ_FILE *pFile; - - pZip->m_pWrite = mz_zip_file_write_func; - pZip->m_pNeeds_keepalive = NULL; - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - pZip->m_pRead = mz_zip_file_read_func; - - pZip->m_pIO_opaque = pZip; - - if (!mz_zip_writer_init_v2(pZip, size_to_reserve_at_beginning, flags)) - return MZ_FALSE; - - if (NULL == (pFile = MZ_FOPEN(pFilename, (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) ? "w+b" : "wb"))) - { - mz_zip_writer_end(pZip); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - } - - pZip->m_pState->m_pFile = pFile; - pZip->m_zip_type = MZ_ZIP_TYPE_FILE; - - if (size_to_reserve_at_beginning) - { - mz_uint64 cur_ofs = 0; - char buf[4096]; - - MZ_CLEAR_OBJ(buf); - - do - { - size_t n = (size_t)MZ_MIN(sizeof(buf), size_to_reserve_at_beginning); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_ofs, buf, n) != n) - { - mz_zip_writer_end(pZip); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_ofs += n; - size_to_reserve_at_beginning -= n; - } while (size_to_reserve_at_beginning); - } - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init_cfile(mz_zip_archive *pZip, MZ_FILE *pFile, mz_uint flags) -{ - pZip->m_pWrite = mz_zip_file_write_func; - pZip->m_pNeeds_keepalive = NULL; - - if (flags & MZ_ZIP_FLAG_WRITE_ALLOW_READING) - pZip->m_pRead = mz_zip_file_read_func; - - pZip->m_pIO_opaque = pZip; - - if (!mz_zip_writer_init_v2(pZip, 0, flags)) - return MZ_FALSE; - - pZip->m_pState->m_pFile = pFile; - pZip->m_pState->m_file_archive_start_ofs = MZ_FTELL64(pZip->m_pState->m_pFile); - pZip->m_zip_type = MZ_ZIP_TYPE_CFILE; - - return MZ_TRUE; -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -mz_bool mz_zip_writer_init_from_reader_v2(mz_zip_archive *pZip, const char *pFilename, mz_uint flags) -{ - mz_zip_internal_state *pState; - - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_READING)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (flags & MZ_ZIP_FLAG_WRITE_ZIP64) - { - /* We don't support converting a non-zip64 file to zip64 - this seems like more trouble than it's worth. (What about the existing 32-bit data descriptors that could follow the compressed data?) */ - if (!pZip->m_pState->m_zip64) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - /* No sense in trying to write to an archive that's already at the support max size */ - if (pZip->m_pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if (pZip->m_total_files == MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - - if ((pZip->m_archive_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + MZ_ZIP_LOCAL_DIR_HEADER_SIZE) > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE); - } - - pState = pZip->m_pState; - - if (pState->m_pFile) - { -#ifdef MINIZ_NO_STDIO - (void)pFilename; - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); -#else - if (pZip->m_pIO_opaque != pZip) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (pZip->m_zip_type == MZ_ZIP_TYPE_FILE) - { - if (!pFilename) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Archive is being read from stdio and was originally opened only for reading. Try to reopen as writable. */ - if (NULL == (pState->m_pFile = MZ_FREOPEN(pFilename, "r+b", pState->m_pFile))) - { - /* The mz_zip_archive is now in a bogus state because pState->m_pFile is NULL, so just close it. */ - mz_zip_reader_end_internal(pZip, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - } - } - - pZip->m_pWrite = mz_zip_file_write_func; - pZip->m_pNeeds_keepalive = NULL; -#endif /* #ifdef MINIZ_NO_STDIO */ - } - else if (pState->m_pMem) - { - /* Archive lives in a memory block. Assume it's from the heap that we can resize using the realloc callback. */ - if (pZip->m_pIO_opaque != pZip) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState->m_mem_capacity = pState->m_mem_size; - pZip->m_pWrite = mz_zip_heap_write_func; - pZip->m_pNeeds_keepalive = NULL; - } - /* Archive is being read via a user provided read function - make sure the user has specified a write function too. */ - else if (!pZip->m_pWrite) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Start writing new files at the archive's current central directory location. */ - /* TODO: We could add a flag that lets the user start writing immediately AFTER the existing central dir - this would be safer. */ - pZip->m_archive_size = pZip->m_central_directory_file_ofs; - pZip->m_central_directory_file_ofs = 0; - - /* Clear the sorted central dir offsets, they aren't useful or maintained now. */ - /* Even though we're now in write mode, files can still be extracted and verified, but file locates will be slow. */ - /* TODO: We could easily maintain the sorted central directory offsets. */ - mz_zip_array_clear(pZip, &pZip->m_pState->m_sorted_central_dir_offsets); - - pZip->m_zip_mode = MZ_ZIP_MODE_WRITING; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_init_from_reader(mz_zip_archive *pZip, const char *pFilename) -{ - return mz_zip_writer_init_from_reader_v2(pZip, pFilename, 0); -} - -/* TODO: pArchive_name is a terrible name here! */ -mz_bool mz_zip_writer_add_mem(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, mz_uint level_and_flags) -{ - return mz_zip_writer_add_mem_ex(pZip, pArchive_name, pBuf, buf_size, NULL, 0, level_and_flags, 0, 0); -} - -typedef struct -{ - mz_zip_archive *m_pZip; - mz_uint64 m_cur_archive_file_ofs; - mz_uint64 m_comp_size; -} mz_zip_writer_add_state; - -static mz_bool mz_zip_writer_add_put_buf_callback(const void *pBuf, int len, void *pUser) -{ - mz_zip_writer_add_state *pState = (mz_zip_writer_add_state *)pUser; - if ((int)pState->m_pZip->m_pWrite(pState->m_pZip->m_pIO_opaque, pState->m_cur_archive_file_ofs, pBuf, len) != len) - return MZ_FALSE; - - pState->m_cur_archive_file_ofs += len; - pState->m_comp_size += len; - return MZ_TRUE; -} - -#define MZ_ZIP64_MAX_LOCAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 2) -#define MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE (sizeof(mz_uint16) * 2 + sizeof(mz_uint64) * 3) -static mz_uint32 mz_zip_writer_create_zip64_extra_data(mz_uint8 *pBuf, mz_uint64 *pUncomp_size, mz_uint64 *pComp_size, mz_uint64 *pLocal_header_ofs) -{ - mz_uint8 *pDst = pBuf; - mz_uint32 field_size = 0; - - MZ_WRITE_LE16(pDst + 0, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID); - MZ_WRITE_LE16(pDst + 2, 0); - pDst += sizeof(mz_uint16) * 2; - - if (pUncomp_size) - { - MZ_WRITE_LE64(pDst, *pUncomp_size); - pDst += sizeof(mz_uint64); - field_size += sizeof(mz_uint64); - } - - if (pComp_size) - { - MZ_WRITE_LE64(pDst, *pComp_size); - pDst += sizeof(mz_uint64); - field_size += sizeof(mz_uint64); - } - - if (pLocal_header_ofs) - { - MZ_WRITE_LE64(pDst, *pLocal_header_ofs); - pDst += sizeof(mz_uint64); - field_size += sizeof(mz_uint64); - } - - MZ_WRITE_LE16(pBuf + 2, field_size); - - return (mz_uint32)(pDst - pBuf); -} - -static mz_bool mz_zip_writer_create_local_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, mz_uint16 filename_size, mz_uint16 extra_size, mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date) -{ - (void)pZip; - memset(pDst, 0, MZ_ZIP_LOCAL_DIR_HEADER_SIZE); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_SIG_OFS, MZ_ZIP_LOCAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_VERSION_NEEDED_OFS, method ? 20 : 0); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_BIT_FLAG_OFS, bit_flags); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_METHOD_OFS, method); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_TIME_OFS, dos_time); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILE_DATE_OFS, dos_date); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_CRC32_OFS, uncomp_crc32); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS, MZ_MIN(comp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE32(pDst + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS, MZ_MIN(uncomp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_FILENAME_LEN_OFS, filename_size); - MZ_WRITE_LE16(pDst + MZ_ZIP_LDH_EXTRA_LEN_OFS, extra_size); - return MZ_TRUE; -} - -static mz_bool mz_zip_writer_create_central_dir_header(mz_zip_archive *pZip, mz_uint8 *pDst, - mz_uint16 filename_size, mz_uint16 extra_size, mz_uint16 comment_size, - mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, - mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, - mz_uint64 local_header_ofs, mz_uint32 ext_attributes) -{ - (void)pZip; - memset(pDst, 0, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_SIG_OFS, MZ_ZIP_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_VERSION_NEEDED_OFS, method ? 20 : 0); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_BIT_FLAG_OFS, bit_flags); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_METHOD_OFS, method); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_TIME_OFS, dos_time); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILE_DATE_OFS, dos_date); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_CRC32_OFS, uncomp_crc32); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, MZ_MIN(comp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, MZ_MIN(uncomp_size, MZ_UINT32_MAX)); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_FILENAME_LEN_OFS, filename_size); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_EXTRA_LEN_OFS, extra_size); - MZ_WRITE_LE16(pDst + MZ_ZIP_CDH_COMMENT_LEN_OFS, comment_size); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_EXTERNAL_ATTR_OFS, ext_attributes); - MZ_WRITE_LE32(pDst + MZ_ZIP_CDH_LOCAL_HEADER_OFS, MZ_MIN(local_header_ofs, MZ_UINT32_MAX)); - return MZ_TRUE; -} - -static mz_bool mz_zip_writer_add_to_central_dir(mz_zip_archive *pZip, const char *pFilename, mz_uint16 filename_size, - const void *pExtra, mz_uint16 extra_size, const void *pComment, mz_uint16 comment_size, - mz_uint64 uncomp_size, mz_uint64 comp_size, mz_uint32 uncomp_crc32, - mz_uint16 method, mz_uint16 bit_flags, mz_uint16 dos_time, mz_uint16 dos_date, - mz_uint64 local_header_ofs, mz_uint32 ext_attributes, - const char *user_extra_data, mz_uint user_extra_data_len) -{ - mz_zip_internal_state *pState = pZip->m_pState; - mz_uint32 central_dir_ofs = (mz_uint32)pState->m_central_dir.m_size; - size_t orig_central_dir_size = pState->m_central_dir.m_size; - mz_uint8 central_dir_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE]; - - if (!pZip->m_pState->m_zip64) - { - if (local_header_ofs > 0xFFFFFFFF) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_TOO_LARGE); - } - - /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */ - if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + filename_size + extra_size + user_extra_data_len + comment_size) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - if (!mz_zip_writer_create_central_dir_header(pZip, central_dir_header, filename_size, extra_size + user_extra_data_len, comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_header_ofs, ext_attributes)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if ((!mz_zip_array_push_back(pZip, &pState->m_central_dir, central_dir_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pFilename, filename_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pExtra, extra_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, user_extra_data, user_extra_data_len)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pComment, comment_size)) || - (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, ¢ral_dir_ofs, 1))) - { - /* Try to resize the central directory array back into its original state. */ - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - return MZ_TRUE; -} - -static mz_bool mz_zip_writer_validate_archive_name(const char *pArchive_name) -{ - /* Basic ZIP archive filename validity checks: Valid filenames cannot start with a forward slash, cannot contain a drive letter, and cannot use DOS-style backward slashes. */ - if (*pArchive_name == '/') - return MZ_FALSE; - - while (*pArchive_name) - { - if ((*pArchive_name == '\\') || (*pArchive_name == ':')) - return MZ_FALSE; - - pArchive_name++; - } - - return MZ_TRUE; -} - -static mz_uint mz_zip_writer_compute_padding_needed_for_file_alignment(mz_zip_archive *pZip) -{ - mz_uint32 n; - if (!pZip->m_file_offset_alignment) - return 0; - n = (mz_uint32)(pZip->m_archive_size & (pZip->m_file_offset_alignment - 1)); - return (mz_uint)((pZip->m_file_offset_alignment - n) & (pZip->m_file_offset_alignment - 1)); -} - -static mz_bool mz_zip_writer_write_zeros(mz_zip_archive *pZip, mz_uint64 cur_file_ofs, mz_uint32 n) -{ - char buf[4096]; - memset(buf, 0, MZ_MIN(sizeof(buf), n)); - while (n) - { - mz_uint32 s = MZ_MIN(sizeof(buf), n); - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_file_ofs, buf, s) != s) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_file_ofs += s; - n -= s; - } - return MZ_TRUE; -} - -mz_bool mz_zip_writer_add_mem_ex(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - mz_uint64 uncomp_size, mz_uint32 uncomp_crc32) -{ - return mz_zip_writer_add_mem_ex_v2(pZip, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, uncomp_size, uncomp_crc32, NULL, NULL, 0, NULL, 0); -} - -mz_bool mz_zip_writer_add_mem_ex_v2(mz_zip_archive *pZip, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, - mz_uint level_and_flags, mz_uint64 uncomp_size, mz_uint32 uncomp_crc32, MZ_TIME_T *last_modified, - const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len) -{ - mz_uint16 method = 0, dos_time = 0, dos_date = 0; - mz_uint level, ext_attributes = 0, num_alignment_padding_bytes; - mz_uint64 local_dir_header_ofs = pZip->m_archive_size, cur_archive_file_ofs = pZip->m_archive_size, comp_size = 0; - size_t archive_name_size; - mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; - tdefl_compressor *pComp = NULL; - mz_bool store_data_uncompressed; - mz_zip_internal_state *pState; - mz_uint8 *pExtra_data = NULL; - mz_uint32 extra_size = 0; - mz_uint8 extra_data[MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE]; - mz_uint16 bit_flags = 0; - - if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - - if (uncomp_size || (buf_size && !(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA))) - bit_flags |= MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR; - - if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME)) - bit_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8; - - level = level_and_flags & 0xF; - store_data_uncompressed = ((!level) || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)); - - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || ((buf_size) && (!pBuf)) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - if (pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if (pZip->m_total_files == MZ_UINT16_MAX) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */ - } - if ((buf_size > 0xFFFFFFFF) || (uncomp_size > 0xFFFFFFFF)) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - } - } - - if ((!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) && (uncomp_size)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_writer_validate_archive_name(pArchive_name)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - -#ifndef MINIZ_NO_TIME - if (last_modified != NULL) - { - mz_zip_time_t_to_dos_time(*last_modified, &dos_time, &dos_date); - } - else - { - MZ_TIME_T cur_time; - time(&cur_time); - mz_zip_time_t_to_dos_time(cur_time, &dos_time, &dos_date); - } -#endif /* #ifndef MINIZ_NO_TIME */ - - if (!(level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - uncomp_crc32 = (mz_uint32)mz_crc32(MZ_CRC32_INIT, (const mz_uint8 *)pBuf, buf_size); - uncomp_size = buf_size; - if (uncomp_size <= 3) - { - level = 0; - store_data_uncompressed = MZ_TRUE; - } - } - - archive_name_size = strlen(pArchive_name); - if (archive_name_size > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); - - /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */ - if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE + comment_size) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - if (!pState->m_zip64) - { - /* Bail early if the archive would obviously become too large */ - if ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + archive_name_size - + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size + user_extra_data_len + - pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + user_extra_data_central_len - + MZ_ZIP_DATA_DESCRIPTER_SIZE32) > 0xFFFFFFFF) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - } - } - - if ((archive_name_size) && (pArchive_name[archive_name_size - 1] == '/')) - { - /* Set DOS Subdirectory attribute bit. */ - ext_attributes |= MZ_ZIP_DOS_DIR_ATTRIBUTE_BITFLAG; - - /* Subdirectories cannot contain data. */ - if ((buf_size) || (uncomp_size)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - } - - /* Try to do any allocations before writing to the archive, so if an allocation fails the file remains unmodified. (A good idea if we're doing an in-place modification.) */ - if ((!mz_zip_array_ensure_room(pZip, &pState->m_central_dir, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + comment_size + (pState->m_zip64 ? MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE : 0))) || (!mz_zip_array_ensure_room(pZip, &pState->m_central_dir_offsets, 1))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if ((!store_data_uncompressed) && (buf_size)) - { - if (NULL == (pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return MZ_FALSE; - } - - local_dir_header_ofs += num_alignment_padding_bytes; - if (pZip->m_file_offset_alignment) - { - MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); - } - cur_archive_file_ofs += num_alignment_padding_bytes; - - MZ_CLEAR_OBJ(local_dir_header); - - if (!store_data_uncompressed || (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA)) - { - method = MZ_DEFLATED; - } - - if (pState->m_zip64) - { - if (uncomp_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX) - { - pExtra_data = extra_data; - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, extra_size + user_extra_data_len, 0, 0, 0, method, bit_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_archive_file_ofs += archive_name_size; - - if (pExtra_data != NULL) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += extra_size; - } - } - else - { - if ((comp_size > MZ_UINT32_MAX) || (cur_archive_file_ofs > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, user_extra_data_len, 0, 0, 0, method, bit_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, local_dir_header_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_archive_file_ofs += archive_name_size; - } - - if (user_extra_data_len > 0) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += user_extra_data_len; - } - - if (store_data_uncompressed) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pBuf, buf_size) != buf_size) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += buf_size; - comp_size = buf_size; - } - else if (buf_size) - { - mz_zip_writer_add_state state; - - state.m_pZip = pZip; - state.m_cur_archive_file_ofs = cur_archive_file_ofs; - state.m_comp_size = 0; - - if ((tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) || - (tdefl_compress_buffer(pComp, pBuf, buf_size, TDEFL_FINISH) != TDEFL_STATUS_DONE)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - return mz_zip_set_error(pZip, MZ_ZIP_COMPRESSION_FAILED); - } - - comp_size = state.m_comp_size; - cur_archive_file_ofs = state.m_cur_archive_file_ofs; - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - pComp = NULL; - - if (uncomp_size) - { - mz_uint8 local_dir_footer[MZ_ZIP_DATA_DESCRIPTER_SIZE64]; - mz_uint32 local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE32; - - MZ_ASSERT(bit_flags & MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR); - - MZ_WRITE_LE32(local_dir_footer + 0, MZ_ZIP_DATA_DESCRIPTOR_ID); - MZ_WRITE_LE32(local_dir_footer + 4, uncomp_crc32); - if (pExtra_data == NULL) - { - if (comp_size > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - MZ_WRITE_LE32(local_dir_footer + 8, comp_size); - MZ_WRITE_LE32(local_dir_footer + 12, uncomp_size); - } - else - { - MZ_WRITE_LE64(local_dir_footer + 8, comp_size); - MZ_WRITE_LE64(local_dir_footer + 16, uncomp_size); - local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE64; - } - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size) - return MZ_FALSE; - - cur_archive_file_ofs += local_dir_footer_size; - } - - if (pExtra_data != NULL) - { - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, pExtra_data, extra_size, pComment, - comment_size, uncomp_size, comp_size, uncomp_crc32, method, bit_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes, - user_extra_data_central, user_extra_data_central_len)) - return MZ_FALSE; - - pZip->m_total_files++; - pZip->m_archive_size = cur_archive_file_ofs; - - return MZ_TRUE; -} - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_writer_add_cfile(mz_zip_archive *pZip, const char *pArchive_name, MZ_FILE *pSrc_file, mz_uint64 size_to_add, const MZ_TIME_T *pFile_time, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, - const char *user_extra_data, mz_uint user_extra_data_len, const char *user_extra_data_central, mz_uint user_extra_data_central_len) -{ - mz_uint16 gen_flags = MZ_ZIP_LDH_BIT_FLAG_HAS_LOCATOR; - mz_uint uncomp_crc32 = MZ_CRC32_INIT, level, num_alignment_padding_bytes; - mz_uint16 method = 0, dos_time = 0, dos_date = 0, ext_attributes = 0; - mz_uint64 local_dir_header_ofs, cur_archive_file_ofs = pZip->m_archive_size, uncomp_size = size_to_add, comp_size = 0; - size_t archive_name_size; - mz_uint8 local_dir_header[MZ_ZIP_LOCAL_DIR_HEADER_SIZE]; - mz_uint8 *pExtra_data = NULL; - mz_uint32 extra_size = 0; - mz_uint8 extra_data[MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE]; - mz_zip_internal_state *pState; - - if (!(level_and_flags & MZ_ZIP_FLAG_ASCII_FILENAME)) - gen_flags |= MZ_ZIP_GENERAL_PURPOSE_BIT_FLAG_UTF8; - - if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - level = level_and_flags & 0xF; - - /* Sanity checks */ - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pArchive_name) || ((comment_size) && (!pComment)) || (level > MZ_UBER_COMPRESSION)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - if ((!pState->m_zip64) && (uncomp_size > MZ_UINT32_MAX)) - { - /* Source file is too large for non-zip64 */ - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - pState->m_zip64 = MZ_TRUE; - } - - /* We could support this, but why? */ - if (level_and_flags & MZ_ZIP_FLAG_COMPRESSED_DATA) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_writer_validate_archive_name(pArchive_name)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - - if (pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if (pZip->m_total_files == MZ_UINT16_MAX) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); */ - } - } - - archive_name_size = strlen(pArchive_name); - if (archive_name_size > MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_FILENAME); - - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); - - /* miniz doesn't support central dirs >= MZ_UINT32_MAX bytes yet */ - if (((mz_uint64)pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP64_MAX_CENTRAL_EXTRA_FIELD_SIZE + comment_size) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - if (!pState->m_zip64) - { - /* Bail early if the archive would obviously become too large */ - if ((pZip->m_archive_size + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + archive_name_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE - + archive_name_size + comment_size + user_extra_data_len + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + 1024 - + MZ_ZIP_DATA_DESCRIPTER_SIZE32 + user_extra_data_central_len) > 0xFFFFFFFF) - { - pState->m_zip64 = MZ_TRUE; - /*return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); */ - } - } - -#ifndef MINIZ_NO_TIME - if (pFile_time) - { - mz_zip_time_t_to_dos_time(*pFile_time, &dos_time, &dos_date); - } -#endif - - if (uncomp_size <= 3) - level = 0; - - if (!mz_zip_writer_write_zeros(pZip, cur_archive_file_ofs, num_alignment_padding_bytes)) - { - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += num_alignment_padding_bytes; - local_dir_header_ofs = cur_archive_file_ofs; - - if (pZip->m_file_offset_alignment) - { - MZ_ASSERT((cur_archive_file_ofs & (pZip->m_file_offset_alignment - 1)) == 0); - } - - if (uncomp_size && level) - { - method = MZ_DEFLATED; - } - - MZ_CLEAR_OBJ(local_dir_header); - if (pState->m_zip64) - { - if (uncomp_size >= MZ_UINT32_MAX || local_dir_header_ofs >= MZ_UINT32_MAX) - { - pExtra_data = extra_data; - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, extra_size + user_extra_data_len, 0, 0, 0, method, gen_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += archive_name_size; - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, extra_data, extra_size) != extra_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += extra_size; - } - else - { - if ((comp_size > MZ_UINT32_MAX) || (cur_archive_file_ofs > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - if (!mz_zip_writer_create_local_dir_header(pZip, local_dir_header, (mz_uint16)archive_name_size, user_extra_data_len, 0, 0, 0, method, gen_flags, dos_time, dos_date)) - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_header, sizeof(local_dir_header)) != sizeof(local_dir_header)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += sizeof(local_dir_header); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pArchive_name, archive_name_size) != archive_name_size) - { - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_archive_file_ofs += archive_name_size; - } - - if (user_extra_data_len > 0) - { - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, user_extra_data, user_extra_data_len) != user_extra_data_len) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_archive_file_ofs += user_extra_data_len; - } - - if (uncomp_size) - { - mz_uint64 uncomp_remaining = uncomp_size; - void *pRead_buf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, MZ_ZIP_MAX_IO_BUF_SIZE); - if (!pRead_buf) - { - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!level) - { - while (uncomp_remaining) - { - mz_uint n = (mz_uint)MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, uncomp_remaining); - if ((MZ_FREAD(pRead_buf, 1, n, pSrc_file) != n) || (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, pRead_buf, n) != n)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, n); - uncomp_remaining -= n; - cur_archive_file_ofs += n; - } - comp_size = uncomp_size; - } - else - { - mz_bool result = MZ_FALSE; - mz_zip_writer_add_state state; - tdefl_compressor *pComp = (tdefl_compressor *)pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, sizeof(tdefl_compressor)); - if (!pComp) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - state.m_pZip = pZip; - state.m_cur_archive_file_ofs = cur_archive_file_ofs; - state.m_comp_size = 0; - - if (tdefl_init(pComp, mz_zip_writer_add_put_buf_callback, &state, tdefl_create_comp_flags_from_zip_params(level, -15, MZ_DEFAULT_STRATEGY)) != TDEFL_STATUS_OKAY) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return mz_zip_set_error(pZip, MZ_ZIP_INTERNAL_ERROR); - } - - for (;;) - { - size_t in_buf_size = (mz_uint32)MZ_MIN(uncomp_remaining, (mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE); - tdefl_status status; - tdefl_flush flush = TDEFL_NO_FLUSH; - - if (MZ_FREAD(pRead_buf, 1, in_buf_size, pSrc_file) != in_buf_size) - { - mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - break; - } - - uncomp_crc32 = (mz_uint32)mz_crc32(uncomp_crc32, (const mz_uint8 *)pRead_buf, in_buf_size); - uncomp_remaining -= in_buf_size; - - if (pZip->m_pNeeds_keepalive != NULL && pZip->m_pNeeds_keepalive(pZip->m_pIO_opaque)) - flush = TDEFL_FULL_FLUSH; - - status = tdefl_compress_buffer(pComp, pRead_buf, in_buf_size, uncomp_remaining ? flush : TDEFL_FINISH); - if (status == TDEFL_STATUS_DONE) - { - result = MZ_TRUE; - break; - } - else if (status != TDEFL_STATUS_OKAY) - { - mz_zip_set_error(pZip, MZ_ZIP_COMPRESSION_FAILED); - break; - } - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pComp); - - if (!result) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - return MZ_FALSE; - } - - comp_size = state.m_comp_size; - cur_archive_file_ofs = state.m_cur_archive_file_ofs; - } - - pZip->m_pFree(pZip->m_pAlloc_opaque, pRead_buf); - } - - { - mz_uint8 local_dir_footer[MZ_ZIP_DATA_DESCRIPTER_SIZE64]; - mz_uint32 local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE32; - - MZ_WRITE_LE32(local_dir_footer + 0, MZ_ZIP_DATA_DESCRIPTOR_ID); - MZ_WRITE_LE32(local_dir_footer + 4, uncomp_crc32); - if (pExtra_data == NULL) - { - if (comp_size > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - MZ_WRITE_LE32(local_dir_footer + 8, comp_size); - MZ_WRITE_LE32(local_dir_footer + 12, uncomp_size); - } - else - { - MZ_WRITE_LE64(local_dir_footer + 8, comp_size); - MZ_WRITE_LE64(local_dir_footer + 16, uncomp_size); - local_dir_footer_size = MZ_ZIP_DATA_DESCRIPTER_SIZE64; - } - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_archive_file_ofs, local_dir_footer, local_dir_footer_size) != local_dir_footer_size) - return MZ_FALSE; - - cur_archive_file_ofs += local_dir_footer_size; - } - - if (pExtra_data != NULL) - { - extra_size = mz_zip_writer_create_zip64_extra_data(extra_data, (uncomp_size >= MZ_UINT32_MAX) ? &uncomp_size : NULL, - (uncomp_size >= MZ_UINT32_MAX) ? &comp_size : NULL, (local_dir_header_ofs >= MZ_UINT32_MAX) ? &local_dir_header_ofs : NULL); - } - - if (!mz_zip_writer_add_to_central_dir(pZip, pArchive_name, (mz_uint16)archive_name_size, pExtra_data, extra_size, pComment, comment_size, - uncomp_size, comp_size, uncomp_crc32, method, gen_flags, dos_time, dos_date, local_dir_header_ofs, ext_attributes, - user_extra_data_central, user_extra_data_central_len)) - return MZ_FALSE; - - pZip->m_total_files++; - pZip->m_archive_size = cur_archive_file_ofs; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_add_file(mz_zip_archive *pZip, const char *pArchive_name, const char *pSrc_filename, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags) -{ - MZ_FILE *pSrc_file = NULL; - mz_uint64 uncomp_size = 0; - MZ_TIME_T file_modified_time; - MZ_TIME_T *pFile_time = NULL; - mz_bool status; - - memset(&file_modified_time, 0, sizeof(file_modified_time)); - -#if !defined(MINIZ_NO_TIME) && !defined(MINIZ_NO_STDIO) - pFile_time = &file_modified_time; - if (!mz_zip_get_file_modified_time(pSrc_filename, &file_modified_time)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_STAT_FAILED); -#endif - - pSrc_file = MZ_FOPEN(pSrc_filename, "rb"); - if (!pSrc_file) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_OPEN_FAILED); - - MZ_FSEEK64(pSrc_file, 0, SEEK_END); - uncomp_size = MZ_FTELL64(pSrc_file); - MZ_FSEEK64(pSrc_file, 0, SEEK_SET); - - status = mz_zip_writer_add_cfile(pZip, pArchive_name, pSrc_file, uncomp_size, pFile_time, pComment, comment_size, level_and_flags, NULL, 0, NULL, 0); - - MZ_FCLOSE(pSrc_file); - - return status; -} -#endif /* #ifndef MINIZ_NO_STDIO */ - -static mz_bool mz_zip_writer_update_zip64_extension_block(mz_zip_array *pNew_ext, mz_zip_archive *pZip, const mz_uint8 *pExt, uint32_t ext_len, mz_uint64 *pComp_size, mz_uint64 *pUncomp_size, mz_uint64 *pLocal_header_ofs, mz_uint32 *pDisk_start) -{ - /* + 64 should be enough for any new zip64 data */ - if (!mz_zip_array_reserve(pZip, pNew_ext, ext_len + 64, MZ_FALSE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - mz_zip_array_resize(pZip, pNew_ext, 0, MZ_FALSE); - - if ((pUncomp_size) || (pComp_size) || (pLocal_header_ofs) || (pDisk_start)) - { - mz_uint8 new_ext_block[64]; - mz_uint8 *pDst = new_ext_block; - mz_write_le16(pDst, MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID); - mz_write_le16(pDst + sizeof(mz_uint16), 0); - pDst += sizeof(mz_uint16) * 2; - - if (pUncomp_size) - { - mz_write_le64(pDst, *pUncomp_size); - pDst += sizeof(mz_uint64); - } - - if (pComp_size) - { - mz_write_le64(pDst, *pComp_size); - pDst += sizeof(mz_uint64); - } - - if (pLocal_header_ofs) - { - mz_write_le64(pDst, *pLocal_header_ofs); - pDst += sizeof(mz_uint64); - } - - if (pDisk_start) - { - mz_write_le32(pDst, *pDisk_start); - pDst += sizeof(mz_uint32); - } - - mz_write_le16(new_ext_block + sizeof(mz_uint16), (mz_uint16)((pDst - new_ext_block) - sizeof(mz_uint16) * 2)); - - if (!mz_zip_array_push_back(pZip, pNew_ext, new_ext_block, pDst - new_ext_block)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if ((pExt) && (ext_len)) - { - mz_uint32 extra_size_remaining = ext_len; - const mz_uint8 *pExtra_data = pExt; - - do - { - mz_uint32 field_id, field_data_size, field_total_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - field_total_size = field_data_size + sizeof(mz_uint16) * 2; - - if (field_total_size > extra_size_remaining) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - if (field_id != MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - if (!mz_zip_array_push_back(pZip, pNew_ext, pExtra_data, field_total_size)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - pExtra_data += field_total_size; - extra_size_remaining -= field_total_size; - } while (extra_size_remaining); - } - - return MZ_TRUE; -} - -/* TODO: This func is now pretty freakin complex due to zip64, split it up? */ -mz_bool mz_zip_writer_add_from_zip_reader(mz_zip_archive *pZip, mz_zip_archive *pSource_zip, mz_uint src_file_index) -{ - mz_uint n, bit_flags, num_alignment_padding_bytes, src_central_dir_following_data_size; - mz_uint64 src_archive_bytes_remaining, local_dir_header_ofs; - mz_uint64 cur_src_file_ofs, cur_dst_file_ofs; - mz_uint32 local_header_u32[(MZ_ZIP_LOCAL_DIR_HEADER_SIZE + sizeof(mz_uint32) - 1) / sizeof(mz_uint32)]; - mz_uint8 *pLocal_header = (mz_uint8 *)local_header_u32; - mz_uint8 new_central_header[MZ_ZIP_CENTRAL_DIR_HEADER_SIZE]; - size_t orig_central_dir_size; - mz_zip_internal_state *pState; - void *pBuf; - const mz_uint8 *pSrc_central_header; - mz_zip_archive_file_stat src_file_stat; - mz_uint32 src_filename_len, src_comment_len, src_ext_len; - mz_uint32 local_header_filename_size, local_header_extra_len; - mz_uint64 local_header_comp_size, local_header_uncomp_size; - mz_bool found_zip64_ext_data_in_ldir = MZ_FALSE; - - /* Sanity checks */ - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING) || (!pSource_zip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - /* Don't support copying files from zip64 archives to non-zip64, even though in some cases this is possible */ - if ((pSource_zip->m_pState->m_zip64) && (!pZip->m_pState->m_zip64)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - /* Get pointer to the source central dir header and crack it */ - if (NULL == (pSrc_central_header = mz_zip_get_cdh(pSource_zip, src_file_index))) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (MZ_READ_LE32(pSrc_central_header + MZ_ZIP_CDH_SIG_OFS) != MZ_ZIP_CENTRAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - src_filename_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_FILENAME_LEN_OFS); - src_comment_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_COMMENT_LEN_OFS); - src_ext_len = MZ_READ_LE16(pSrc_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS); - src_central_dir_following_data_size = src_filename_len + src_ext_len + src_comment_len; - - /* TODO: We don't support central dir's >= MZ_UINT32_MAX bytes right now (+32 fudge factor in case we need to add more extra data) */ - if ((pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_central_dir_following_data_size + 32) >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - - num_alignment_padding_bytes = mz_zip_writer_compute_padding_needed_for_file_alignment(pZip); - - if (!pState->m_zip64) - { - if (pZip->m_total_files == MZ_UINT16_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - /* TODO: Our zip64 support still has some 32-bit limits that may not be worth fixing. */ - if (pZip->m_total_files == MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - - if (!mz_zip_file_stat_internal(pSource_zip, src_file_index, pSrc_central_header, &src_file_stat, NULL)) - return MZ_FALSE; - - cur_src_file_ofs = src_file_stat.m_local_header_ofs; - cur_dst_file_ofs = pZip->m_archive_size; - - /* Read the source archive's local dir header */ - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - - if (MZ_READ_LE32(pLocal_header) != MZ_ZIP_LOCAL_DIR_HEADER_SIG) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - - cur_src_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE; - - /* Compute the total size we need to copy (filename+extra data+compressed data) */ - local_header_filename_size = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_FILENAME_LEN_OFS); - local_header_extra_len = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_EXTRA_LEN_OFS); - local_header_comp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_COMPRESSED_SIZE_OFS); - local_header_uncomp_size = MZ_READ_LE32(pLocal_header + MZ_ZIP_LDH_DECOMPRESSED_SIZE_OFS); - src_archive_bytes_remaining = local_header_filename_size + local_header_extra_len + src_file_stat.m_comp_size; - - /* Try to find a zip64 extended information field */ - if ((local_header_extra_len) && ((local_header_comp_size == MZ_UINT32_MAX) || (local_header_uncomp_size == MZ_UINT32_MAX))) - { - mz_zip_array file_data_array; - const mz_uint8 *pExtra_data; - mz_uint32 extra_size_remaining = local_header_extra_len; - - mz_zip_array_init(&file_data_array, 1); - if (!mz_zip_array_resize(pZip, &file_data_array, local_header_extra_len, MZ_FALSE)) - { - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, src_file_stat.m_local_header_ofs + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + local_header_filename_size, file_data_array.m_p, local_header_extra_len) != local_header_extra_len) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - - pExtra_data = (const mz_uint8 *)file_data_array.m_p; - - do - { - mz_uint32 field_id, field_data_size, field_total_size; - - if (extra_size_remaining < (sizeof(mz_uint16) * 2)) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - field_id = MZ_READ_LE16(pExtra_data); - field_data_size = MZ_READ_LE16(pExtra_data + sizeof(mz_uint16)); - field_total_size = field_data_size + sizeof(mz_uint16) * 2; - - if (field_total_size > extra_size_remaining) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - if (field_id == MZ_ZIP64_EXTENDED_INFORMATION_FIELD_HEADER_ID) - { - const mz_uint8 *pSrc_field_data = pExtra_data + sizeof(mz_uint32); - - if (field_data_size < sizeof(mz_uint64) * 2) - { - mz_zip_array_clear(pZip, &file_data_array); - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_HEADER_OR_CORRUPTED); - } - - local_header_uncomp_size = MZ_READ_LE64(pSrc_field_data); - local_header_comp_size = MZ_READ_LE64(pSrc_field_data + sizeof(mz_uint64)); /* may be 0 if there's a descriptor */ - - found_zip64_ext_data_in_ldir = MZ_TRUE; - break; - } - - pExtra_data += field_total_size; - extra_size_remaining -= field_total_size; - } while (extra_size_remaining); - - mz_zip_array_clear(pZip, &file_data_array); - } - - if (!pState->m_zip64) - { - /* Try to detect if the new archive will most likely wind up too big and bail early (+(sizeof(mz_uint32) * 4) is for the optional descriptor which could be present, +64 is a fudge factor). */ - /* We also check when the archive is finalized so this doesn't need to be perfect. */ - mz_uint64 approx_new_archive_size = cur_dst_file_ofs + num_alignment_padding_bytes + MZ_ZIP_LOCAL_DIR_HEADER_SIZE + src_archive_bytes_remaining + (sizeof(mz_uint32) * 4) + - pState->m_central_dir.m_size + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_central_dir_following_data_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE + 64; - - if (approx_new_archive_size >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - } - - /* Write dest archive padding */ - if (!mz_zip_writer_write_zeros(pZip, cur_dst_file_ofs, num_alignment_padding_bytes)) - return MZ_FALSE; - - cur_dst_file_ofs += num_alignment_padding_bytes; - - local_dir_header_ofs = cur_dst_file_ofs; - if (pZip->m_file_offset_alignment) - { - MZ_ASSERT((local_dir_header_ofs & (pZip->m_file_offset_alignment - 1)) == 0); - } - - /* The original zip's local header+ext block doesn't change, even with zip64, so we can just copy it over to the dest zip */ - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pLocal_header, MZ_ZIP_LOCAL_DIR_HEADER_SIZE) != MZ_ZIP_LOCAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - cur_dst_file_ofs += MZ_ZIP_LOCAL_DIR_HEADER_SIZE; - - /* Copy over the source archive bytes to the dest archive, also ensure we have enough buf space to handle optional data descriptor */ - if (NULL == (pBuf = pZip->m_pAlloc(pZip->m_pAlloc_opaque, 1, (size_t)MZ_MAX(32U, MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, src_archive_bytes_remaining))))) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - while (src_archive_bytes_remaining) - { - n = (mz_uint)MZ_MIN((mz_uint64)MZ_ZIP_MAX_IO_BUF_SIZE, src_archive_bytes_remaining); - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, n) != n) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - cur_src_file_ofs += n; - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - cur_dst_file_ofs += n; - - src_archive_bytes_remaining -= n; - } - - /* Now deal with the optional data descriptor */ - bit_flags = MZ_READ_LE16(pLocal_header + MZ_ZIP_LDH_BIT_FLAG_OFS); - if (bit_flags & 8) - { - /* Copy data descriptor */ - if ((pSource_zip->m_pState->m_zip64) || (found_zip64_ext_data_in_ldir)) - { - /* src is zip64, dest must be zip64 */ - - /* name uint32_t's */ - /* id 1 (optional in zip64?) */ - /* crc 1 */ - /* comp_size 2 */ - /* uncomp_size 2 */ - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, (sizeof(mz_uint32) * 6)) != (sizeof(mz_uint32) * 6)) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - - n = sizeof(mz_uint32) * ((MZ_READ_LE32(pBuf) == MZ_ZIP_DATA_DESCRIPTOR_ID) ? 6 : 5); - } - else - { - /* src is NOT zip64 */ - mz_bool has_id; - - if (pSource_zip->m_pRead(pSource_zip->m_pIO_opaque, cur_src_file_ofs, pBuf, sizeof(mz_uint32) * 4) != sizeof(mz_uint32) * 4) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_READ_FAILED); - } - - has_id = (MZ_READ_LE32(pBuf) == MZ_ZIP_DATA_DESCRIPTOR_ID); - - if (pZip->m_pState->m_zip64) - { - /* dest is zip64, so upgrade the data descriptor */ - const mz_uint32 *pSrc_descriptor = (const mz_uint32 *)((const mz_uint8 *)pBuf + (has_id ? sizeof(mz_uint32) : 0)); - const mz_uint32 src_crc32 = pSrc_descriptor[0]; - const mz_uint64 src_comp_size = pSrc_descriptor[1]; - const mz_uint64 src_uncomp_size = pSrc_descriptor[2]; - - mz_write_le32((mz_uint8 *)pBuf, MZ_ZIP_DATA_DESCRIPTOR_ID); - mz_write_le32((mz_uint8 *)pBuf + sizeof(mz_uint32) * 1, src_crc32); - mz_write_le64((mz_uint8 *)pBuf + sizeof(mz_uint32) * 2, src_comp_size); - mz_write_le64((mz_uint8 *)pBuf + sizeof(mz_uint32) * 4, src_uncomp_size); - - n = sizeof(mz_uint32) * 6; - } - else - { - /* dest is NOT zip64, just copy it as-is */ - n = sizeof(mz_uint32) * (has_id ? 4 : 3); - } - } - - if (pZip->m_pWrite(pZip->m_pIO_opaque, cur_dst_file_ofs, pBuf, n) != n) - { - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - } - - cur_src_file_ofs += n; - cur_dst_file_ofs += n; - } - pZip->m_pFree(pZip->m_pAlloc_opaque, pBuf); - - /* Finally, add the new central dir header */ - orig_central_dir_size = pState->m_central_dir.m_size; - - memcpy(new_central_header, pSrc_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE); - - if (pState->m_zip64) - { - /* This is the painful part: We need to write a new central dir header + ext block with updated zip64 fields, and ensure the old fields (if any) are not included. */ - const mz_uint8 *pSrc_ext = pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_filename_len; - mz_zip_array new_ext_block; - - mz_zip_array_init(&new_ext_block, sizeof(mz_uint8)); - - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_COMPRESSED_SIZE_OFS, MZ_UINT32_MAX); - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_DECOMPRESSED_SIZE_OFS, MZ_UINT32_MAX); - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, MZ_UINT32_MAX); - - if (!mz_zip_writer_update_zip64_extension_block(&new_ext_block, pZip, pSrc_ext, src_ext_len, &src_file_stat.m_comp_size, &src_file_stat.m_uncomp_size, &local_dir_header_ofs, NULL)) - { - mz_zip_array_clear(pZip, &new_ext_block); - return MZ_FALSE; - } - - MZ_WRITE_LE16(new_central_header + MZ_ZIP_CDH_EXTRA_LEN_OFS, new_ext_block.m_size); - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) - { - mz_zip_array_clear(pZip, &new_ext_block); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, src_filename_len)) - { - mz_zip_array_clear(pZip, &new_ext_block); - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_ext_block.m_p, new_ext_block.m_size)) - { - mz_zip_array_clear(pZip, &new_ext_block); - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE + src_filename_len + src_ext_len, src_comment_len)) - { - mz_zip_array_clear(pZip, &new_ext_block); - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - mz_zip_array_clear(pZip, &new_ext_block); - } - else - { - /* sanity checks */ - if (cur_dst_file_ofs > MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - if (local_dir_header_ofs >= MZ_UINT32_MAX) - return mz_zip_set_error(pZip, MZ_ZIP_ARCHIVE_TOO_LARGE); - - MZ_WRITE_LE32(new_central_header + MZ_ZIP_CDH_LOCAL_HEADER_OFS, local_dir_header_ofs); - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, new_central_header, MZ_ZIP_CENTRAL_DIR_HEADER_SIZE)) - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir, pSrc_central_header + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, src_central_dir_following_data_size)) - { - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - } - - /* This shouldn't trigger unless we screwed up during the initial sanity checks */ - if (pState->m_central_dir.m_size >= MZ_UINT32_MAX) - { - /* TODO: Support central dirs >= 32-bits in size */ - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_UNSUPPORTED_CDIR_SIZE); - } - - n = (mz_uint32)orig_central_dir_size; - if (!mz_zip_array_push_back(pZip, &pState->m_central_dir_offsets, &n, 1)) - { - mz_zip_array_resize(pZip, &pState->m_central_dir, orig_central_dir_size, MZ_FALSE); - return mz_zip_set_error(pZip, MZ_ZIP_ALLOC_FAILED); - } - - pZip->m_total_files++; - pZip->m_archive_size = cur_dst_file_ofs; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_finalize_archive(mz_zip_archive *pZip) -{ - mz_zip_internal_state *pState; - mz_uint64 central_dir_ofs, central_dir_size; - mz_uint8 hdr[256]; - - if ((!pZip) || (!pZip->m_pState) || (pZip->m_zip_mode != MZ_ZIP_MODE_WRITING)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - pState = pZip->m_pState; - - if (pState->m_zip64) - { - if ((pZip->m_total_files > MZ_UINT32_MAX) || (pState->m_central_dir.m_size >= MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - else - { - if ((pZip->m_total_files > MZ_UINT16_MAX) || ((pZip->m_archive_size + pState->m_central_dir.m_size + MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) > MZ_UINT32_MAX)) - return mz_zip_set_error(pZip, MZ_ZIP_TOO_MANY_FILES); - } - - central_dir_ofs = 0; - central_dir_size = 0; - if (pZip->m_total_files) - { - /* Write central directory */ - central_dir_ofs = pZip->m_archive_size; - central_dir_size = pState->m_central_dir.m_size; - pZip->m_central_directory_file_ofs = central_dir_ofs; - if (pZip->m_pWrite(pZip->m_pIO_opaque, central_dir_ofs, pState->m_central_dir.m_p, (size_t)central_dir_size) != central_dir_size) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - pZip->m_archive_size += central_dir_size; - } - - if (pState->m_zip64) - { - /* Write zip64 end of central directory header */ - mz_uint64 rel_ofs_to_zip64_ecdr = pZip->m_archive_size; - - MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDH_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_SIZE_OF_RECORD_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE - sizeof(mz_uint32) - sizeof(mz_uint64)); - MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_MADE_BY_OFS, 0x031E); /* TODO: always Unix */ - MZ_WRITE_LE16(hdr + MZ_ZIP64_ECDH_VERSION_NEEDED_OFS, 0x002D); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, pZip->m_total_files); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_TOTAL_ENTRIES_OFS, pZip->m_total_files); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_SIZE_OFS, central_dir_size); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDH_CDIR_OFS_OFS, central_dir_ofs); - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_HEADER_SIZE; - - /* Write zip64 end of central directory locator */ - MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_SIG_OFS, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIG); - MZ_WRITE_LE64(hdr + MZ_ZIP64_ECDL_REL_OFS_TO_ZIP64_ECDR_OFS, rel_ofs_to_zip64_ecdr); - MZ_WRITE_LE32(hdr + MZ_ZIP64_ECDL_TOTAL_NUMBER_OF_DISKS_OFS, 1); - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) != MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - - pZip->m_archive_size += MZ_ZIP64_END_OF_CENTRAL_DIR_LOCATOR_SIZE; - } - - /* Write end of central directory record */ - MZ_CLEAR_OBJ(hdr); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_SIG_OFS, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIG); - MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_NUM_ENTRIES_ON_DISK_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files)); - MZ_WRITE_LE16(hdr + MZ_ZIP_ECDH_CDIR_TOTAL_ENTRIES_OFS, MZ_MIN(MZ_UINT16_MAX, pZip->m_total_files)); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_SIZE_OFS, MZ_MIN(MZ_UINT32_MAX, central_dir_size)); - MZ_WRITE_LE32(hdr + MZ_ZIP_ECDH_CDIR_OFS_OFS, MZ_MIN(MZ_UINT32_MAX, central_dir_ofs)); - - if (pZip->m_pWrite(pZip->m_pIO_opaque, pZip->m_archive_size, hdr, MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) != MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_WRITE_FAILED); - -#ifndef MINIZ_NO_STDIO - if ((pState->m_pFile) && (MZ_FFLUSH(pState->m_pFile) == EOF)) - return mz_zip_set_error(pZip, MZ_ZIP_FILE_CLOSE_FAILED); -#endif /* #ifndef MINIZ_NO_STDIO */ - - pZip->m_archive_size += MZ_ZIP_END_OF_CENTRAL_DIR_HEADER_SIZE; - - pZip->m_zip_mode = MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED; - return MZ_TRUE; -} - -mz_bool mz_zip_writer_finalize_heap_archive(mz_zip_archive *pZip, void **ppBuf, size_t *pSize) -{ - if ((!ppBuf) || (!pSize)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - *ppBuf = NULL; - *pSize = 0; - - if ((!pZip) || (!pZip->m_pState)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (pZip->m_pWrite != mz_zip_heap_write_func) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - if (!mz_zip_writer_finalize_archive(pZip)) - return MZ_FALSE; - - *ppBuf = pZip->m_pState->m_pMem; - *pSize = pZip->m_pState->m_mem_size; - pZip->m_pState->m_pMem = NULL; - pZip->m_pState->m_mem_size = pZip->m_pState->m_mem_capacity = 0; - - return MZ_TRUE; -} - -mz_bool mz_zip_writer_end(mz_zip_archive *pZip) -{ - return mz_zip_writer_end_internal(pZip, MZ_TRUE); -} - -#ifndef MINIZ_NO_STDIO -mz_bool mz_zip_add_mem_to_archive_file_in_place(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags) -{ - return mz_zip_add_mem_to_archive_file_in_place_v2(pZip_filename, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, NULL); -} - -mz_bool mz_zip_add_mem_to_archive_file_in_place_v2(const char *pZip_filename, const char *pArchive_name, const void *pBuf, size_t buf_size, const void *pComment, mz_uint16 comment_size, mz_uint level_and_flags, mz_zip_error *pErr) -{ - mz_bool status, created_new_archive = MZ_FALSE; - mz_zip_archive zip_archive; - struct MZ_FILE_STAT_STRUCT file_stat; - mz_zip_error actual_err = MZ_ZIP_NO_ERROR; - - mz_zip_zero_struct(&zip_archive); - if ((int)level_and_flags < 0) - level_and_flags = MZ_DEFAULT_LEVEL; - - if ((!pZip_filename) || (!pArchive_name) || ((buf_size) && (!pBuf)) || ((comment_size) && (!pComment)) || ((level_and_flags & 0xF) > MZ_UBER_COMPRESSION)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - return MZ_FALSE; - } - - if (!mz_zip_writer_validate_archive_name(pArchive_name)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_FILENAME; - return MZ_FALSE; - } - - /* Important: The regular non-64 bit version of stat() can fail here if the file is very large, which could cause the archive to be overwritten. */ - /* So be sure to compile with _LARGEFILE64_SOURCE 1 */ - if (MZ_FILE_STAT(pZip_filename, &file_stat) != 0) - { - /* Create a new archive. */ - if (!mz_zip_writer_init_file_v2(&zip_archive, pZip_filename, 0, level_and_flags)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - return MZ_FALSE; - } - - created_new_archive = MZ_TRUE; - } - else - { - /* Append to an existing archive. */ - if (!mz_zip_reader_init_file_v2(&zip_archive, pZip_filename, level_and_flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY, 0, 0)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - return MZ_FALSE; - } - - if (!mz_zip_writer_init_from_reader_v2(&zip_archive, pZip_filename, level_and_flags)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - - mz_zip_reader_end_internal(&zip_archive, MZ_FALSE); - - return MZ_FALSE; - } - } - - status = mz_zip_writer_add_mem_ex(&zip_archive, pArchive_name, pBuf, buf_size, pComment, comment_size, level_and_flags, 0, 0); - actual_err = zip_archive.m_last_error; - - /* Always finalize, even if adding failed for some reason, so we have a valid central directory. (This may not always succeed, but we can try.) */ - if (!mz_zip_writer_finalize_archive(&zip_archive)) - { - if (!actual_err) - actual_err = zip_archive.m_last_error; - - status = MZ_FALSE; - } - - if (!mz_zip_writer_end_internal(&zip_archive, status)) - { - if (!actual_err) - actual_err = zip_archive.m_last_error; - - status = MZ_FALSE; - } - - if ((!status) && (created_new_archive)) - { - /* It's a new archive and something went wrong, so just delete it. */ - int ignoredStatus = MZ_DELETE_FILE(pZip_filename); - (void)ignoredStatus; - } - - if (pErr) - *pErr = actual_err; - - return status; -} - -void *mz_zip_extract_archive_file_to_heap_v2(const char *pZip_filename, const char *pArchive_name, const char *pComment, size_t *pSize, mz_uint flags, mz_zip_error *pErr) -{ - mz_uint32 file_index; - mz_zip_archive zip_archive; - void *p = NULL; - - if (pSize) - *pSize = 0; - - if ((!pZip_filename) || (!pArchive_name)) - { - if (pErr) - *pErr = MZ_ZIP_INVALID_PARAMETER; - - return NULL; - } - - mz_zip_zero_struct(&zip_archive); - if (!mz_zip_reader_init_file_v2(&zip_archive, pZip_filename, flags | MZ_ZIP_FLAG_DO_NOT_SORT_CENTRAL_DIRECTORY, 0, 0)) - { - if (pErr) - *pErr = zip_archive.m_last_error; - - return NULL; - } - - if (mz_zip_reader_locate_file_v2(&zip_archive, pArchive_name, pComment, flags, &file_index)) - { - p = mz_zip_reader_extract_to_heap(&zip_archive, file_index, pSize, flags); - } - - mz_zip_reader_end_internal(&zip_archive, p != NULL); - - if (pErr) - *pErr = zip_archive.m_last_error; - - return p; -} - -void *mz_zip_extract_archive_file_to_heap(const char *pZip_filename, const char *pArchive_name, size_t *pSize, mz_uint flags) -{ - return mz_zip_extract_archive_file_to_heap_v2(pZip_filename, pArchive_name, NULL, pSize, flags, NULL); -} - -#endif /* #ifndef MINIZ_NO_STDIO */ - -#endif /* #ifndef MINIZ_NO_ARCHIVE_WRITING_APIS */ - -/* ------------------- Misc utils */ - -mz_zip_mode mz_zip_get_mode(mz_zip_archive *pZip) -{ - return pZip ? pZip->m_zip_mode : MZ_ZIP_MODE_INVALID; -} - -mz_zip_type mz_zip_get_type(mz_zip_archive *pZip) -{ - return pZip ? pZip->m_zip_type : MZ_ZIP_TYPE_INVALID; -} - -mz_zip_error mz_zip_set_last_error(mz_zip_archive *pZip, mz_zip_error err_num) -{ - mz_zip_error prev_err; - - if (!pZip) - return MZ_ZIP_INVALID_PARAMETER; - - prev_err = pZip->m_last_error; - - pZip->m_last_error = err_num; - return prev_err; -} - -mz_zip_error mz_zip_peek_last_error(mz_zip_archive *pZip) -{ - if (!pZip) - return MZ_ZIP_INVALID_PARAMETER; - - return pZip->m_last_error; -} - -mz_zip_error mz_zip_clear_last_error(mz_zip_archive *pZip) -{ - return mz_zip_set_last_error(pZip, MZ_ZIP_NO_ERROR); -} - -mz_zip_error mz_zip_get_last_error(mz_zip_archive *pZip) -{ - mz_zip_error prev_err; - - if (!pZip) - return MZ_ZIP_INVALID_PARAMETER; - - prev_err = pZip->m_last_error; - - pZip->m_last_error = MZ_ZIP_NO_ERROR; - return prev_err; -} - -const char *mz_zip_get_error_string(mz_zip_error mz_err) -{ - switch (mz_err) - { - case MZ_ZIP_NO_ERROR: - return "no error"; - case MZ_ZIP_UNDEFINED_ERROR: - return "undefined error"; - case MZ_ZIP_TOO_MANY_FILES: - return "too many files"; - case MZ_ZIP_FILE_TOO_LARGE: - return "file too large"; - case MZ_ZIP_UNSUPPORTED_METHOD: - return "unsupported method"; - case MZ_ZIP_UNSUPPORTED_ENCRYPTION: - return "unsupported encryption"; - case MZ_ZIP_UNSUPPORTED_FEATURE: - return "unsupported feature"; - case MZ_ZIP_FAILED_FINDING_CENTRAL_DIR: - return "failed finding central directory"; - case MZ_ZIP_NOT_AN_ARCHIVE: - return "not a ZIP archive"; - case MZ_ZIP_INVALID_HEADER_OR_CORRUPTED: - return "invalid header or archive is corrupted"; - case MZ_ZIP_UNSUPPORTED_MULTIDISK: - return "unsupported multidisk archive"; - case MZ_ZIP_DECOMPRESSION_FAILED: - return "decompression failed or archive is corrupted"; - case MZ_ZIP_COMPRESSION_FAILED: - return "compression failed"; - case MZ_ZIP_UNEXPECTED_DECOMPRESSED_SIZE: - return "unexpected decompressed size"; - case MZ_ZIP_CRC_CHECK_FAILED: - return "CRC-32 check failed"; - case MZ_ZIP_UNSUPPORTED_CDIR_SIZE: - return "unsupported central directory size"; - case MZ_ZIP_ALLOC_FAILED: - return "allocation failed"; - case MZ_ZIP_FILE_OPEN_FAILED: - return "file open failed"; - case MZ_ZIP_FILE_CREATE_FAILED: - return "file create failed"; - case MZ_ZIP_FILE_WRITE_FAILED: - return "file write failed"; - case MZ_ZIP_FILE_READ_FAILED: - return "file read failed"; - case MZ_ZIP_FILE_CLOSE_FAILED: - return "file close failed"; - case MZ_ZIP_FILE_SEEK_FAILED: - return "file seek failed"; - case MZ_ZIP_FILE_STAT_FAILED: - return "file stat failed"; - case MZ_ZIP_INVALID_PARAMETER: - return "invalid parameter"; - case MZ_ZIP_INVALID_FILENAME: - return "invalid filename"; - case MZ_ZIP_BUF_TOO_SMALL: - return "buffer too small"; - case MZ_ZIP_INTERNAL_ERROR: - return "internal error"; - case MZ_ZIP_FILE_NOT_FOUND: - return "file not found"; - case MZ_ZIP_ARCHIVE_TOO_LARGE: - return "archive is too large"; - case MZ_ZIP_VALIDATION_FAILED: - return "validation failed"; - case MZ_ZIP_WRITE_CALLBACK_FAILED: - return "write calledback failed"; - default: - break; - } - - return "unknown error"; -} - -/* Note: Just because the archive is not zip64 doesn't necessarily mean it doesn't have Zip64 extended information extra field, argh. */ -mz_bool mz_zip_is_zip64(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return MZ_FALSE; - - return pZip->m_pState->m_zip64; -} - -size_t mz_zip_get_central_dir_size(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return 0; - - return pZip->m_pState->m_central_dir.m_size; -} - -mz_uint mz_zip_reader_get_num_files(mz_zip_archive *pZip) -{ - return pZip ? pZip->m_total_files : 0; -} - -mz_uint64 mz_zip_get_archive_size(mz_zip_archive *pZip) -{ - if (!pZip) - return 0; - return pZip->m_archive_size; -} - -mz_uint64 mz_zip_get_archive_file_start_offset(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return 0; - return pZip->m_pState->m_file_archive_start_ofs; -} - -MZ_FILE *mz_zip_get_cfile(mz_zip_archive *pZip) -{ - if ((!pZip) || (!pZip->m_pState)) - return 0; - return pZip->m_pState->m_pFile; -} - -size_t mz_zip_read_archive_data(mz_zip_archive *pZip, mz_uint64 file_ofs, void *pBuf, size_t n) -{ - if ((!pZip) || (!pZip->m_pState) || (!pBuf) || (!pZip->m_pRead)) - return mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - - return pZip->m_pRead(pZip->m_pIO_opaque, file_ofs, pBuf, n); -} - -mz_uint mz_zip_reader_get_filename(mz_zip_archive *pZip, mz_uint file_index, char *pFilename, mz_uint filename_buf_size) -{ - mz_uint n; - const mz_uint8 *p = mz_zip_get_cdh(pZip, file_index); - if (!p) - { - if (filename_buf_size) - pFilename[0] = '\0'; - mz_zip_set_error(pZip, MZ_ZIP_INVALID_PARAMETER); - return 0; - } - n = MZ_READ_LE16(p + MZ_ZIP_CDH_FILENAME_LEN_OFS); - if (filename_buf_size) - { - n = MZ_MIN(n, filename_buf_size - 1); - memcpy(pFilename, p + MZ_ZIP_CENTRAL_DIR_HEADER_SIZE, n); - pFilename[n] = '\0'; - } - return n + 1; -} - -mz_bool mz_zip_reader_file_stat(mz_zip_archive *pZip, mz_uint file_index, mz_zip_archive_file_stat *pStat) -{ - return mz_zip_file_stat_internal(pZip, file_index, mz_zip_get_cdh(pZip, file_index), pStat, NULL); -} - -mz_bool mz_zip_end(mz_zip_archive *pZip) -{ - if (!pZip) - return MZ_FALSE; - - if (pZip->m_zip_mode == MZ_ZIP_MODE_READING) - return mz_zip_reader_end(pZip); -#ifndef MINIZ_NO_ARCHIVE_WRITING_APIS - else if ((pZip->m_zip_mode == MZ_ZIP_MODE_WRITING) || (pZip->m_zip_mode == MZ_ZIP_MODE_WRITING_HAS_BEEN_FINALIZED)) - return mz_zip_writer_end(pZip); -#endif - - return MZ_FALSE; -} - -#ifdef __cplusplus -} -#endif - -#endif /*#ifndef MINIZ_NO_ARCHIVE_APIS*/ diff --git a/libhttp/uri.c b/libhttp/uri.c deleted file mode 100644 index 0c23c8356..000000000 --- a/libhttp/uri.c +++ /dev/null @@ -1,138 +0,0 @@ -/* -* Copyright (c)2018-2019 Rick V. All rights reserved. -* -* This software is provided 'as-is', without any express or implied -* warranty. In no event will the authors be held liable for any damages -* arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, -* including commercial applications, and to alter it and redistribute it -* freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not -* claim that you wrote the original software. If you use this software -* in a product, an acknowledgment in the product documentation would be -* appreciated but is not required. -* 2. Altered source versions must be plainly marked as such, and must not be -* misrepresented as being the original software. -* 3. This notice may not be removed or altered from any source distribution. -*------------------------------------------------------------------------------ -* uri parsing functions -*/ - -#include -#include -#include -#include - -#include "internal.h" - -#ifdef _WIN32 -#include -#include -#else -#include -#include -#include -#include -#endif - -void free_parsed_url(url_parsed) -url_t *url_parsed; -{ - if (url_parsed->protocol) - free(url_parsed->protocol); - if (url_parsed->host) - free(url_parsed->host); - if (url_parsed->path) - free(url_parsed->path); - if (url_parsed->query_string) - free(url_parsed->query_string); - - free(url_parsed); -} - -parse_url(url, verify_host, parsed_url) -char *url; -bool verify_host; -url_t *parsed_url; -{ - char *local_url, *token, *token_host, *host_port, *host_ip, *token_ptr; - char *host_token_ptr, *path = NULL; - - /* Copy our string */ - local_url = strdup(url); - - token = strtok_r(local_url, ":", &token_ptr); - parsed_url->protocol = strdup(token); - - /* Host:Port */ - token = strtok_r(NULL, "/", &token_ptr); - if (token) - host_port = strdup(token); - else - host_port = (char *) calloc(1, sizeof(char)); - - token_host = strtok_r(host_port, ":", &host_token_ptr); - parsed_url->host_ip = NULL; - if (token_host) { - parsed_url->host = strdup(token_host); - - if (verify_host) { - struct hostent *host; - host = gethostbyname(parsed_url->host); - if (host != NULL) { - parsed_url->host_ip = inet_ntoa(* (struct in_addr *) host->h_addr); - parsed_url->host_exists = 1; - } else { - parsed_url->host_exists = 0; - } - } else { - parsed_url->host_exists = -1; - } - } else { - parsed_url->host_exists = -1; - parsed_url->host = NULL; - } - - /* Port */ - token_host = strtok_r(NULL, ":", &host_token_ptr); - if (token_host) - parsed_url->port = atoi(token_host); - else - parsed_url->port = 0; - - token_host = strtok_r(NULL, ":", &host_token_ptr); - assert(token_host == NULL); - - token = strtok_r(NULL, "?", &token_ptr); - parsed_url->path = NULL; - if (token) { - path = (char *) realloc(path, sizeof(char) * (strlen(token) + 2)); - memset(path, 0, sizeof(char) * (strlen(token)+2)); - strcpy(path, "/"); - strcat(path, token); - - parsed_url->path = strdup(path); - - free(path); - } else { - parsed_url->path = (char *) malloc(sizeof(char) * 2); - strcpy(parsed_url->path, "/"); - } - - token = strtok_r(NULL, "?", &token_ptr); - if (token) { - parsed_url->query_string = (char *) malloc(sizeof(char) * (strlen(token) + 1)); - strncpy(parsed_url->query_string, token, strlen(token)); - } else { - parsed_url->query_string = NULL; - } - - token = strtok_r(NULL, "?", &token_ptr); - assert(token == NULL); - - free(local_url); - free(host_port); - return 0; -} diff --git a/libhttp/zpipe.c b/libhttp/zpipe.c deleted file mode 100644 index 75b13c10a..000000000 --- a/libhttp/zpipe.c +++ /dev/null @@ -1,209 +0,0 @@ -/* zpipe.c: example of proper use of zlib's inflate() and deflate() - Not copyrighted -- provided to the public domain - Version 1.4 11 December 2005 Mark Adler */ - - /* Version history: - 1.0 30 Oct 2004 First version - 1.1 8 Nov 2004 Add void casting for unused return values - Use switch statement for inflate() return values - 1.2 9 Nov 2004 Add assertions to document zlib guarantees - 1.3 6 Apr 2005 Remove incorrect assertion in inf() - 1.4 11 Dec 2005 Add hack to avoid MSDOS end-of-line conversions - Avoid some compiler warnings for input and output buffers - */ - -#include -#include -#include -#include "miniz.h" - -#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) -# include -# include -# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY) -#else -# define SET_BINARY_MODE(file) -#endif - -#define CHUNK 16384 - - /* Compress from file source to file dest until EOF on source. - def() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_STREAM_ERROR if an invalid compression - level is supplied, Z_VERSION_ERROR if the version of zlib.h and the - version of the library linked do not match, or Z_ERRNO if there is - an error reading or writing the files. */ -int def(FILE *source, FILE *dest, int level) -{ - int ret, flush; - unsigned have; - z_stream strm; - unsigned char in[CHUNK];unsigned char out[CHUNK]; - - /* allocate deflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - ret = deflateInit(&strm, level); - if (ret != Z_OK) - return ret; - - /* compress until end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - flush = feof(source) ? Z_FINISH : Z_NO_FLUSH; - strm.next_in = in; - - /* run deflate() on input until output buffer not full, finish - compression if all of source has been read in */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = deflate(&strm, flush); /* no bad return value */ - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)deflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - assert(strm.avail_in == 0); /* all input will be used */ - - /* done when last data in file processed */ - } while (flush != Z_FINISH); - assert(ret == Z_STREAM_END); /* stream will be complete */ - - /* clean up and return */ - (void)deflateEnd(&strm); - return Z_OK; -} - -/* Decompress from file source to file dest until stream ends or EOF. - inf() returns Z_OK on success, Z_MEM_ERROR if memory could not be - allocated for processing, Z_DATA_ERROR if the deflate data is - invalid or incomplete, Z_VERSION_ERROR if the version of zlib.h and - the version of the library linked do not match, or Z_ERRNO if there - is an error reading or writing the files. */ -int inf(FILE *source, FILE *dest) -{ - int ret; - unsigned have; - z_stream strm; - unsigned char in[CHUNK]; - unsigned char out[CHUNK]; - - /* allocate inflate state */ - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.avail_in = 0; - strm.next_in = Z_NULL; - ret = inflateInit(&strm); - if (ret != Z_OK) - return ret; - - /* decompress until deflate stream ends or end of file */ - do { - strm.avail_in = fread(in, 1, CHUNK, source); - if (ferror(source)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - if (strm.avail_in == 0) - break; - strm.next_in = in; - - /* run inflate() on input until output buffer not full */ - do { - strm.avail_out = CHUNK; - strm.next_out = out; - ret = inflate(&strm, Z_NO_FLUSH); - assert(ret != Z_STREAM_ERROR); /* state not clobbered */ - switch (ret) { - case Z_NEED_DICT: - ret = Z_DATA_ERROR; /* and fall through */ - case Z_DATA_ERROR: - case Z_MEM_ERROR: - (void)inflateEnd(&strm); - return ret; - } - have = CHUNK - strm.avail_out; - if (fwrite(out, 1, have, dest) != have || ferror(dest)) { - (void)inflateEnd(&strm); - return Z_ERRNO; - } - } while (strm.avail_out == 0); - - /* done when inflate() says it's done */ - } while (ret != Z_STREAM_END); - - /* clean up and return */ - (void)inflateEnd(&strm); - return ret == Z_STREAM_END ? Z_OK : Z_DATA_ERROR; -} - -/* report a zlib or i/o error */ -void zerr(int ret) -{ - fputs("zpipe: ", stderr); - switch (ret) { - case Z_ERRNO: - if (ferror(stdin)) - fputs("error reading stdin\n", stderr); - if (ferror(stdout)) - fputs("error writing stdout\n", stderr); - break; - case Z_STREAM_ERROR: - fputs("invalid compression level\n", stderr); - break; - case Z_DATA_ERROR: - fputs("invalid or incomplete deflate data\n", stderr); - break; - case Z_MEM_ERROR: - fputs("out of memory\n", stderr); - break; - case Z_VERSION_ERROR: - fputs("zlib version mismatch!\n", stderr); - } -} - -/* compress or decompress from stdin to stdout */ -int main(int argc, char **argv) -{ - int ret; - - /* avoid end-of-line conversions */ - SET_BINARY_MODE(stdin); - SET_BINARY_MODE(stdout); - - /* do compression if no arguments */ - /* Warning: Not compatible with plain libz, dial it back down to - * 9 if this is required, uber-level is 10 - * since we have everything crammed in miniz, we don't depend on - * libz at all. - */ - if (argc == 1) { - ret = def(stdin, stdout, MZ_UBER_COMPRESSION); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* do decompression if -d specified */ - else if (argc == 2 && strcmp(argv[1], "-d") == 0) { - ret = inf(stdin, stdout); - if (ret != Z_OK) - zerr(ret); - return ret; - } - - /* otherwise, report usage */ - else { - fputs("zpipe usage: zpipe [-d] < source > dest\n", stderr); - return 1; - } -} \ No newline at end of file diff --git a/win32-setup/.gitignore b/win32-setup/.gitignore index 8186f730d..0e82a7a54 100644 --- a/win32-setup/.gitignore +++ b/win32-setup/.gitignore @@ -1,2 +1,6 @@ mbedtls*.tgz* -mbedtls-*/ \ No newline at end of file +mbedtls-*/ +curl*.tar.xz* +curl-*/ +include/ +lib/ \ No newline at end of file diff --git a/win32-setup/Makefile b/win32-setup/Makefile index b20f86230..ec4ca46ff 100644 --- a/win32-setup/Makefile +++ b/win32-setup/Makefile @@ -6,6 +6,7 @@ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ CFLAGS=-Ofast -march=nocona -mfpmath=sse LIBS=-lws2_32 +LDFLAGS=-static default: all @@ -16,10 +17,21 @@ mbedtls: wget https://tls.mbed.org/download/mbedtls-2.16.3-apache.tgz tar xvf mbedtls-2.16.3-apache.tgz patch -p0 -d mbedtls-2.16.3 < mbedtls-win32.patch - $(MAKE) -C mbedtls-2.16.3 CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" LDFLAGS=$(LIBS) + $(MAKE) -j4 -C mbedtls-2.16.3/library CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" LDFLAGS=$(LIBS) + mkdir -p lib; mkdir -p include + cp mbedtls-2.16.3/library/*.a lib + cp -r mbedtls-2.16.3/include/mbedtls include -#lokinet-bootstrap.exe: -# wget https://snowlight.net/loki/win32-dist/lokinet-bootstrap.exe +curl: + wget https://curl.haxx.se/download/curl-7.66.0.tar.xz + tar xvf curl-7.66.0.tar.xz + patch -p1 < curl-win32.patch + cd curl-7.66.0; ./configure CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" LIBS=$(LIBS) --disable-shared --without-zlib --without-ssl --with-mbedtls=$(PWD) --enable-optimize --enable-http --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --enable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --enable-manual + $(MAKE) -j4 -C curl-7.66.0 + +lokinet-bootstrap.exe: mbedtls curl + cp curl-7.66.0/src/curl.exe $@ + wget -O rootcerts.pem https://curl.haxx.se/ca/cacert.pem clean: - rm *.dll *.exe + rm -rf curl-7* include lib mbedtls-2* *.exe *.dll *.pem diff --git a/win32-setup/curl-win32.patch b/win32-setup/curl-win32.patch new file mode 100644 index 000000000..de0c121ac --- /dev/null +++ b/win32-setup/curl-win32.patch @@ -0,0 +1,82 @@ +diff --git a/curl-7.66.0/include/curl/curl.h b/curl-patched/include/curl/curl.h +index ff0c7749..4d3fdbb5 100644 +--- a/curl-7.66.0/include/curl/curl.h ++++ b/curl-patched/include/curl/curl.h +@@ -65,6 +65,7 @@ + included, since they can't co-exist without problems */ + #include + #include ++#include + #endif + #endif + +diff --git a/curl-7.66.0/include/curl/system.h b/curl-patched/include/curl/system.h +index cd37c2bf..b96cfd8c 100644 +--- a/curl-7.66.0/include/curl/system.h ++++ b/curl-patched/include/curl/system.h +@@ -411,6 +411,7 @@ + # include + # include + # include ++# include + #endif + + /* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */ +diff --git a/curl-7.66.0/lib/curl_setup.h b/curl-patched/lib/curl_setup.h +index 13af8cde..a0408d5c 100644 +--- a/curl-7.66.0/lib/curl_setup.h ++++ b/curl-patched/lib/curl_setup.h +@@ -255,6 +255,7 @@ + # include + # ifdef HAVE_WS2TCPIP_H + # include ++# include + # endif + # else + # ifdef HAVE_WINSOCK_H +diff --git a/curl-7.66.0/lib/inet_pton.h b/curl-patched/lib/inet_pton.h +index 0209b9b7..67774fb9 100644 +--- a/curl-7.66.0/lib/inet_pton.h ++++ b/curl-patched/lib/inet_pton.h +@@ -32,6 +32,7 @@ int Curl_inet_pton(int, const char *, void *); + #elif defined(HAVE_WS2TCPIP_H) + /* inet_pton() exists in Vista or later */ + #include ++#include + #endif + #define Curl_inet_pton(x,y,z) inet_pton(x,y,z) + #endif +diff --git a/curl-7.66.0/src/tool_util.c b/curl-patched/src/tool_util.c +index 9990a463..8ea37f37 100644 +--- a/curl-7.66.0/src/tool_util.c ++++ b/curl-patched/src/tool_util.c +@@ -40,12 +40,7 @@ struct timeval tvnow(void) + ** is typically in the range of 10 milliseconds to 16 milliseconds. + */ + struct timeval now; +-#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && \ +- (!defined(__MINGW32__) || defined(__MINGW64_VERSION_MAJOR)) +- ULONGLONG milliseconds = GetTickCount64(); +-#else + DWORD milliseconds = GetTickCount(); +-#endif + now.tv_sec = (long)(milliseconds / 1000); + now.tv_usec = (long)((milliseconds % 1000) * 1000); + return now; +diff --git a/curl-7.66.0/tests/server/util.c b/curl-patched/tests/server/util.c +index b0613380..00d0b0c3 100644 +--- a/curl-7.66.0/tests/server/util.c ++++ b/curl-patched/tests/server/util.c +@@ -415,12 +415,7 @@ static struct timeval tvnow(void) + ** is typically in the range of 10 milliseconds to 16 milliseconds. + */ + struct timeval now; +-#if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0600) && \ +- (!defined(__MINGW32__) || defined(__MINGW64_VERSION_MAJOR)) +- ULONGLONG milliseconds = GetTickCount64(); +-#else + DWORD milliseconds = GetTickCount(); +-#endif + now.tv_sec = (long)(milliseconds / 1000); + now.tv_usec = (long)((milliseconds % 1000) * 1000); + return now; diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index e4b61488b..2f9eec5b9 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -91,9 +91,10 @@ Source: "{#DevPath}ui-win32\bin\release\lokinetui.pdb"; DestDir: "{app}"; Flags: Source: "{#DevPath}build\testAll.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#DevPath}build\lokinet-rcutil.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#DevPath}LICENSE"; DestDir: "{app}"; Flags: ignoreversion +Source: "lokinet-bootstrap.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "rootcerts.pem"; DestDir: "{app}"; Flags: ignoreversion ; delet this after finishing setup, we only need it to extract the drivers ; and download an initial RC. The UI has its own bootstrap built-in! -Source: "lokinet-bootstrap.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall Source: "{tmp}\7z.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall external ; if nonexistent, then inet6 was already installed Source: "{tmp}\inet6.7z"; DestDir: "{app}"; Flags: ignoreversion external deleteafterinstall skipifsourcedoesntexist; MinVersion: 0,5.0; OnlyBelowVersion: 0,5.1 @@ -225,7 +226,7 @@ Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Descr Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; OnlyBelowVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9_n6.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; MinVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x inet6.7z"; WorkingDir: "{app}"; Flags: skipifdoesntexist runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract inet6 driver"; StatusMsg: "Extracting IPv6 driver..."; MinVersion: 0, 5.0; OnlyBelowVersion: 0, 5.1 -Filename: "{tmp}\lokinet-bootstrap.exe"; Parameters:"https://seed.lokinet.org/bootstrap.signed {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." +Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert {app}\rootcerts.pem > {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." ; then ask to install drivers Filename: "{app}\tap-windows-9.9.2\install.bat"; WorkingDir: "{app}\tap-windows-9.9.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; OnlyBelowVersion: 0, 6.0; Check: not IsTapInstalled Filename: "{app}\tap-windows-9.21.2\install.bat"; WorkingDir: "{app}\tap-windows-9.21.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; MinVersion: 0, 6.0; Check: not IsTapInstalled From d1b86580e5b23248e8442f06dc784fe7a0152199 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 18:31:46 -0500 Subject: [PATCH 23/38] specify host/target explicitly for cross-build --- win32-setup/.gitignore | 3 ++- win32-setup/Makefile | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/win32-setup/.gitignore b/win32-setup/.gitignore index 0e82a7a54..97f9129a3 100644 --- a/win32-setup/.gitignore +++ b/win32-setup/.gitignore @@ -3,4 +3,5 @@ mbedtls-*/ curl*.tar.xz* curl-*/ include/ -lib/ \ No newline at end of file +lib/ +*.pem \ No newline at end of file diff --git a/win32-setup/Makefile b/win32-setup/Makefile index ec4ca46ff..cf44305b6 100644 --- a/win32-setup/Makefile +++ b/win32-setup/Makefile @@ -26,7 +26,7 @@ curl: wget https://curl.haxx.se/download/curl-7.66.0.tar.xz tar xvf curl-7.66.0.tar.xz patch -p1 < curl-win32.patch - cd curl-7.66.0; ./configure CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" LIBS=$(LIBS) --disable-shared --without-zlib --without-ssl --with-mbedtls=$(PWD) --enable-optimize --enable-http --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --enable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --enable-manual + cd curl-7.66.0; ./configure --host=i686-w64-mingw32 --target=i686-w64-mingw32 CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" LIBS=$(LIBS) --disable-shared --without-zlib --without-ssl --with-mbedtls=$(PWD) --enable-optimize --enable-http --disable-ftp --disable-file --disable-ldap --disable-ldaps --disable-rtsp --enable-proxy --disable-dict --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smb --disable-smtp --disable-gopher --enable-manual $(MAKE) -j4 -C curl-7.66.0 lokinet-bootstrap.exe: mbedtls curl From 48d0353a995459629d73f85e703f8b42ca992fac Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 18:49:13 -0500 Subject: [PATCH 24/38] add targets for release engineering --- win32-setup/Makefile | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/win32-setup/Makefile b/win32-setup/Makefile index cf44305b6..4e328ba57 100644 --- a/win32-setup/Makefile +++ b/win32-setup/Makefile @@ -1,13 +1,13 @@ # Makefile for windows install pkg and helper library -all: regdbhelper.dll lokinet-bootstrap.exe - CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ CFLAGS=-Ofast -march=nocona -mfpmath=sse LIBS=-lws2_32 LDFLAGS=-static +ifndef RELEASE +all: regdbhelper.dll lokinet-bootstrap.exe default: all regdbhelper.dll: @@ -32,6 +32,17 @@ curl: lokinet-bootstrap.exe: mbedtls curl cp curl-7.66.0/src/curl.exe $@ wget -O rootcerts.pem https://curl.haxx.se/ca/cacert.pem +else + +all: regdbhelper.dll lokinet-bootstrap.exe + +regdbhelper.dll: + scp despair@10.10.10.6:loki-network/win32-setup/*.dll . + +lokinet-bootstrap.exe: + scp despair@10.10.10.6:loki-network/win32-setup/*.exe . + wget -O rootcerts.pem https://curl.haxx.se/ca/cacert.pem +endif clean: - rm -rf curl-7* include lib mbedtls-2* *.exe *.dll *.pem + -rm -rf curl-7* include lib mbedtls-2* *.exe *.dll *.pem From 94e9305d54b36cf8088789b49afd211a20518881 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 18:53:31 -0500 Subject: [PATCH 25/38] fix static build --- cmake/win32.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/win32.cmake b/cmake/win32.cmake index ceb3123de..a875a189a 100644 --- a/cmake/win32.cmake +++ b/cmake/win32.cmake @@ -20,7 +20,7 @@ if(NOT MSVC_VERSION) # GNU ld sees fit to merge *all* the .ident sections in object files # to .r[o]data section one after the other! add_compile_options(-fno-ident -Wa,-mbig-obj) - link_libraries( -lshlwapi -ldbghelp ) + link_libraries( -lws2_32 -liphlpapi -lshlwapi -ldbghelp ) add_definitions(-DWINVER=0x0500 -D_WIN32_WINNT=0x0500) # Wait a minute, if we're not Microsoft C++, nor a Clang paired with Microsoft C++, # then the only possible option has to be GNU or a GNU-linked Clang! From d1dd270bbb38fa88cd5bb90c65ca54e3d219ae5e Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 19:25:00 -0500 Subject: [PATCH 26/38] fix command line parameters --- win32-setup/lokinet-win32.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index 2f9eec5b9..8f9eb9664 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -226,7 +226,7 @@ Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Descr Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; OnlyBelowVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9_n6.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; MinVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x inet6.7z"; WorkingDir: "{app}"; Flags: skipifdoesntexist runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract inet6 driver"; StatusMsg: "Extracting IPv6 driver..."; MinVersion: 0, 5.0; OnlyBelowVersion: 0, 5.1 -Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert {app}\rootcerts.pem > {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." +Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert rootcerts.pem -o {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." ; then ask to install drivers Filename: "{app}\tap-windows-9.9.2\install.bat"; WorkingDir: "{app}\tap-windows-9.9.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; OnlyBelowVersion: 0, 6.0; Check: not IsTapInstalled Filename: "{app}\tap-windows-9.21.2\install.bat"; WorkingDir: "{app}\tap-windows-9.21.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; MinVersion: 0, 6.0; Check: not IsTapInstalled From ef4ccdc943a8f3cb34d2e35a0694c00cb5064d1b Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 19:57:46 -0500 Subject: [PATCH 27/38] try running curl if we can't use native WebClient --- ui-win32/UserSettings.cs | 100 +++++++++++++++++++-------------------- ui-win32/dlgBootstrap.cs | 28 ++++++++++- 2 files changed, 76 insertions(+), 52 deletions(-) diff --git a/ui-win32/UserSettings.cs b/ui-win32/UserSettings.cs index bd5daa3b4..53df671e3 100644 --- a/ui-win32/UserSettings.cs +++ b/ui-win32/UserSettings.cs @@ -1,5 +1,5 @@ using System; -using System.Diagnostics; +using System.Diagnostics; using System.IO; using System.Windows.Forms; @@ -58,54 +58,54 @@ namespace network.loki.lokinet.win32.ui VisualSettings v = new VisualSettings(); v.ShowDialog(); v.Dispose(); - } - - private void BtnEditCfg_Click(object sender, EventArgs e) - { - try { - Process.Start(string.Format("{0}/lokinet.ini", config_path)); } - catch - { - MessageBox.Show("No existing config found"); - BtnNewCfg_Click(sender, e); - } - - } - - private void BtnNewCfg_Click(object sender, EventArgs e) - { - if (File.Exists(string.Format("{0}/lokinet.ini", config_path))) - { - DialogResult resp = MessageBox.Show("WARNING: This will overwrite your existing config file, Continue?", "Lokinet", MessageBoxButtons.YesNo, MessageBoxIcon.Question); - switch(resp) - { - case DialogResult.Yes: - File.Delete(string.Format("{0}/lokinet.ini", config_path)); - break; - case DialogResult.No: - return; - } - } - - string lokinetExeString; - - if (Program.platform == PlatformID.Win32NT) - lokinetExeString = String.Format("{0}\\lokinet.exe", Directory.GetCurrentDirectory()); - else - lokinetExeString = String.Format("{0}/lokinet", Directory.GetCurrentDirectory()); - Process p = new Process(); - p.StartInfo.FileName = lokinetExeString; - p.StartInfo.Arguments = "-g"; - p.StartInfo.CreateNoWindow = true; - p.StartInfo.UseShellExecute = false; - p.EnableRaisingEvents = true; - p.Exited += new EventHandler(msg); - p.Start(); - } - - private void msg(object sender, EventArgs e) - { - MessageBox.Show(string.Format("Created new config file at {0}/lokinet.ini", config_path), "Success", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); - } + } + + private void BtnEditCfg_Click(object sender, EventArgs e) + { + try { + Process.Start(string.Format("{0}/lokinet.ini", config_path)); } + catch + { + MessageBox.Show("No existing config found"); + BtnNewCfg_Click(sender, e); + } + + } + + private void BtnNewCfg_Click(object sender, EventArgs e) + { + if (File.Exists(string.Format("{0}/lokinet.ini", config_path))) + { + DialogResult resp = MessageBox.Show("WARNING: This will overwrite your existing config file, Continue?", "Lokinet", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + switch(resp) + { + case DialogResult.Yes: + File.Delete(string.Format("{0}/lokinet.ini", config_path)); + break; + case DialogResult.No: + return; + } + } + + string lokinetExeString; + + if (Program.platform == PlatformID.Win32NT) + lokinetExeString = String.Format("{0}\\lokinet.exe", Directory.GetCurrentDirectory()); + else + lokinetExeString = String.Format("{0}/lokinet", Directory.GetCurrentDirectory()); + Process p = new Process(); + p.StartInfo.FileName = lokinetExeString; + p.StartInfo.Arguments = "-g"; + p.StartInfo.CreateNoWindow = true; + p.StartInfo.UseShellExecute = false; + p.EnableRaisingEvents = true; + p.Exited += new EventHandler(msg); + p.Start(); + } + + private void msg(object sender, EventArgs e) + { + MessageBox.Show(string.Format("Created new config file at {0}/lokinet.ini", config_path), "Success", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + } } } diff --git a/ui-win32/dlgBootstrap.cs b/ui-win32/dlgBootstrap.cs index c2b6d3be2..e7c693986 100644 --- a/ui-win32/dlgBootstrap.cs +++ b/ui-win32/dlgBootstrap.cs @@ -1,4 +1,6 @@ using System; +using System.Diagnostics; +using System.IO; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; @@ -33,10 +35,32 @@ namespace network.loki.lokinet.win32.ui MessageBox.Show("LokiNET node bootstrapped", "LokiNET", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult = DialogResult.OK; } + catch (NotSupportedException ex) + { + string lokinetExeString; + Process lokinet_bootstrap = new Process(); + + if (Program.platform == PlatformID.Win32NT) + lokinetExeString = String.Format("{0}\\lokinet-bootstrap.exe", Directory.GetCurrentDirectory()); + else + lokinetExeString = String.Format("{0}/lokinet-bootstrap", Directory.GetCurrentDirectory()); + + lokinet_bootstrap.StartInfo.UseShellExecute = false; + lokinet_bootstrap.StartInfo.CreateNoWindow = true; + lokinet_bootstrap.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory(); + lokinet_bootstrap.StartInfo.FileName = lokinetExeString; + lokinet_bootstrap.StartInfo.Arguments = string.Format("--cacert rootcerts.pem -L {0} -o {1}", uriBox.Text, default_path); + lokinet_bootstrap.Start(); + lokinet_bootstrap.WaitForExit(); + if (lokinet_bootstrap.ExitCode == 0) + DialogResult = DialogResult.OK; + else + throw (ex); // pass the original exception back to the caller, TLS failed + } catch (Exception ex) - { + { MessageBox.Show(string.Format("An error occured while downloading data. {0}", ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); - DialogResult = DialogResult.Abort; + DialogResult = DialogResult.Abort; } wc.Dispose(); Close(); From 1295b3d851748bac850cacf43421e976560d1942 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 20:11:32 -0500 Subject: [PATCH 28/38] fix bootstrap command line --- ui-win32/dlgBootstrap.cs | 2 +- win32-setup/lokinet-win32.iss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ui-win32/dlgBootstrap.cs b/ui-win32/dlgBootstrap.cs index e7c693986..51c9196ef 100644 --- a/ui-win32/dlgBootstrap.cs +++ b/ui-win32/dlgBootstrap.cs @@ -49,7 +49,7 @@ namespace network.loki.lokinet.win32.ui lokinet_bootstrap.StartInfo.CreateNoWindow = true; lokinet_bootstrap.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory(); lokinet_bootstrap.StartInfo.FileName = lokinetExeString; - lokinet_bootstrap.StartInfo.Arguments = string.Format("--cacert rootcerts.pem -L {0} -o {1}", uriBox.Text, default_path); + lokinet_bootstrap.StartInfo.Arguments = string.Format("--cacert rootcerts.pem -L {0} --output {1}", uriBox.Text, default_path); lokinet_bootstrap.Start(); lokinet_bootstrap.WaitForExit(); if (lokinet_bootstrap.ExitCode == 0) diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index 8f9eb9664..e5e0e9149 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -226,7 +226,7 @@ Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Descr Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; OnlyBelowVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9_n6.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; MinVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x inet6.7z"; WorkingDir: "{app}"; Flags: skipifdoesntexist runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract inet6 driver"; StatusMsg: "Extracting IPv6 driver..."; MinVersion: 0, 5.0; OnlyBelowVersion: 0, 5.1 -Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert rootcerts.pem -o {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." +Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert rootcerts.pem --output {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." ; then ask to install drivers Filename: "{app}\tap-windows-9.9.2\install.bat"; WorkingDir: "{app}\tap-windows-9.9.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; OnlyBelowVersion: 0, 6.0; Check: not IsTapInstalled Filename: "{app}\tap-windows-9.21.2\install.bat"; WorkingDir: "{app}\tap-windows-9.21.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; MinVersion: 0, 6.0; Check: not IsTapInstalled From 2a7dddf78070406db7ccd7bec068b33b9ed6f342 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 20:22:32 -0500 Subject: [PATCH 29/38] fix license --- LICENSE | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/LICENSE b/LICENSE index c0b098c8c..180c986c6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,23 +1,23 @@ -LokiNET is the reference implementation of LLARP (Low Latency Anonymous -Routing Protocol) and is licensed under ZLIB license, however the protocol -specifications are placed into the public domian using the CC0 License. - -Copyright (c) 2018-2019 The Loki Project -Copyright (c) 2018-2019 Jeff Becker -Windows NT port and portions Copyright (c) 2018-2019 Rick V. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. +LokiNET is the reference implementation of LLARP (Low Latency Anonymous +Routing Protocol) and is licensed under ZLIB license, however the protocol +specifications are placed into the public domian using the CC0 License. + +Copyright (c) 2018-2019 The Loki Project +Copyright (c) 2018-2019 Jeff Becker +Windows NT port and portions Copyright (c) 2018-2019 Rick V. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. From 0ba4ab10a438c7d7d09d9f7a9ba1aa181d559e86 Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 20:42:09 -0500 Subject: [PATCH 30/38] quote paths --- ui-win32/dlgBootstrap.cs | 28 ++++++++++++++-------------- win32-setup/lokinet-win32.iss | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ui-win32/dlgBootstrap.cs b/ui-win32/dlgBootstrap.cs index 51c9196ef..474d8c649 100644 --- a/ui-win32/dlgBootstrap.cs +++ b/ui-win32/dlgBootstrap.cs @@ -24,18 +24,18 @@ namespace network.loki.lokinet.win32.ui private string default_path; private void button1_Click(object sender, EventArgs e) { - ServicePointManager.ServerCertificateValidationCallback += cert_check; - ServicePointManager.SecurityProtocol = (SecurityProtocolType)48 | 0 | (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; - wc = new WebClient(); // add something more unique, this is the IE 5.0 default string - wc.Headers.Add("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)"); try - { + { + ServicePointManager.ServerCertificateValidationCallback += cert_check; + ServicePointManager.SecurityProtocol = (SecurityProtocolType)48 | 0 | (SecurityProtocolType)192 | (SecurityProtocolType)768 | (SecurityProtocolType)3072; + wc = new WebClient(); + wc.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0)"); wc.DownloadFile(uriBox.Text, default_path); MessageBox.Show("LokiNET node bootstrapped", "LokiNET", MessageBoxButtons.OK, MessageBoxIcon.Information); DialogResult = DialogResult.OK; } - catch (NotSupportedException ex) + catch (Exception ex) { string lokinetExeString; Process lokinet_bootstrap = new Process(); @@ -49,20 +49,20 @@ namespace network.loki.lokinet.win32.ui lokinet_bootstrap.StartInfo.CreateNoWindow = true; lokinet_bootstrap.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory(); lokinet_bootstrap.StartInfo.FileName = lokinetExeString; - lokinet_bootstrap.StartInfo.Arguments = string.Format("--cacert rootcerts.pem -L {0} --output {1}", uriBox.Text, default_path); + lokinet_bootstrap.StartInfo.Arguments = string.Format("--cacert rootcerts.pem -L {0} --output \"{1}\"", uriBox.Text, default_path); lokinet_bootstrap.Start(); lokinet_bootstrap.WaitForExit(); if (lokinet_bootstrap.ExitCode == 0) + { DialogResult = DialogResult.OK; + MessageBox.Show("LokiNET node bootstrapped", "LokiNET", MessageBoxButtons.OK, MessageBoxIcon.Information); + } else - throw (ex); // pass the original exception back to the caller, TLS failed - } - catch (Exception ex) - { - MessageBox.Show(string.Format("An error occured while downloading data. {0}", ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); - DialogResult = DialogResult.Abort; + { + MessageBox.Show(string.Format("An error occured while downloading data. {0}", ex.Message), "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); + DialogResult = DialogResult.Abort; + } } - wc.Dispose(); Close(); } diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index e5e0e9149..6f5ac3569 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -226,7 +226,7 @@ Filename: "{app}\{#MyAppExeName}"; Flags: nowait postinstall skipifsilent; Descr Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; OnlyBelowVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x tuntapv9_n6.7z"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract TUN/TAP-v9 driver"; StatusMsg: "Extracting driver..."; MinVersion: 0, 6.0 Filename: "{tmp}\7z.exe"; Parameters: "x inet6.7z"; WorkingDir: "{app}"; Flags: skipifdoesntexist runascurrentuser waituntilterminated skipifdoesntexist; Description: "extract inet6 driver"; StatusMsg: "Extracting IPv6 driver..."; MinVersion: 0, 5.0; OnlyBelowVersion: 0, 5.1 -Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert rootcerts.pem --output {userappdata}\.lokinet\bootstrap.signed"; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." +Filename: "{app}\lokinet-bootstrap.exe"; Parameters:"-L https://seed.lokinet.org/bootstrap.signed --cacert rootcerts.pem -o ""{userappdata}\.lokinet\bootstrap.signed"""; WorkingDir: "{app}"; Flags: runascurrentuser waituntilterminated; Description: "bootstrap dht"; StatusMsg: "Downloading initial RC..." ; then ask to install drivers Filename: "{app}\tap-windows-9.9.2\install.bat"; WorkingDir: "{app}\tap-windows-9.9.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; OnlyBelowVersion: 0, 6.0; Check: not IsTapInstalled Filename: "{app}\tap-windows-9.21.2\install.bat"; WorkingDir: "{app}\tap-windows-9.21.2\"; Flags: runascurrentuser waituntilterminated skipifdoesntexist; Description: "Install TUN/TAP-v9 driver"; StatusMsg: "Installing driver..."; MinVersion: 0, 6.0; Check: not IsTapInstalled From 37cf2c0bad3ce9276d81aef0fbd1c8558cb4fa7c Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 21:00:31 -0500 Subject: [PATCH 31/38] Revert "fix license", do the CRLF conversion at installer build time This reverts commit 6fdbf6cb25988845ceef1c8b945a1bc93f6ee7e3. --- LICENSE | 46 +++++++++++++++++------------------ win32-setup/.gitignore | 3 ++- win32-setup/Makefile | 2 ++ win32-setup/lokinet-win32.iss | 2 +- 4 files changed, 28 insertions(+), 25 deletions(-) diff --git a/LICENSE b/LICENSE index 180c986c6..c0b098c8c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,23 +1,23 @@ -LokiNET is the reference implementation of LLARP (Low Latency Anonymous -Routing Protocol) and is licensed under ZLIB license, however the protocol -specifications are placed into the public domian using the CC0 License. - -Copyright (c) 2018-2019 The Loki Project -Copyright (c) 2018-2019 Jeff Becker -Windows NT port and portions Copyright (c) 2018-2019 Rick V. - -This software is provided 'as-is', without any express or implied -warranty. In no event will the authors be held liable for any damages -arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it -freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. +LokiNET is the reference implementation of LLARP (Low Latency Anonymous +Routing Protocol) and is licensed under ZLIB license, however the protocol +specifications are placed into the public domian using the CC0 License. + +Copyright (c) 2018-2019 The Loki Project +Copyright (c) 2018-2019 Jeff Becker +Windows NT port and portions Copyright (c) 2018-2019 Rick V. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/win32-setup/.gitignore b/win32-setup/.gitignore index 97f9129a3..8fecc69fc 100644 --- a/win32-setup/.gitignore +++ b/win32-setup/.gitignore @@ -4,4 +4,5 @@ curl*.tar.xz* curl-*/ include/ lib/ -*.pem \ No newline at end of file +*.pem +LICENSE \ No newline at end of file diff --git a/win32-setup/Makefile b/win32-setup/Makefile index 4e328ba57..fb90182d0 100644 --- a/win32-setup/Makefile +++ b/win32-setup/Makefile @@ -32,6 +32,7 @@ curl: lokinet-bootstrap.exe: mbedtls curl cp curl-7.66.0/src/curl.exe $@ wget -O rootcerts.pem https://curl.haxx.se/ca/cacert.pem + cp ../LICENSE .;unix2dos LICENSE LICENSE else all: regdbhelper.dll lokinet-bootstrap.exe @@ -42,6 +43,7 @@ regdbhelper.dll: lokinet-bootstrap.exe: scp despair@10.10.10.6:loki-network/win32-setup/*.exe . wget -O rootcerts.pem https://curl.haxx.se/ca/cacert.pem + cp ../LICENSE .;unix2dos LICENSE LICENSE endif clean: diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index 6f5ac3569..d59e9e827 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -90,7 +90,7 @@ Source: "{#DevPath}ui-win32\bin\release\lokinetui.pdb"; DestDir: "{app}"; Flags: ; eh, might as well ship the 32-bit port of everything else Source: "{#DevPath}build\testAll.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "{#DevPath}build\lokinet-rcutil.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "{#DevPath}LICENSE"; DestDir: "{app}"; Flags: ignoreversion +Source: "LICENSE"; DestDir: "{app}"; Flags: ignoreversion Source: "lokinet-bootstrap.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "rootcerts.pem"; DestDir: "{app}"; Flags: ignoreversion ; delet this after finishing setup, we only need it to extract the drivers From ffdb88f93fa825f2f743cb55b75d670a4a69200e Mon Sep 17 00:00:00 2001 From: Rick V Date: Fri, 20 Sep 2019 21:13:36 -0500 Subject: [PATCH 32/38] update URI shortcuts --- win32-setup/lokinet-win32.iss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/win32-setup/lokinet-win32.iss b/win32-setup/lokinet-win32.iss index d59e9e827..544bffe4b 100644 --- a/win32-setup/lokinet-win32.iss +++ b/win32-setup/lokinet-win32.iss @@ -4,7 +4,7 @@ #define MyAppName "Lokinet" #define MyAppVersion "0.5.2" #define MyAppPublisher "Loki Project" -#define MyAppURL "https://loki.network" +#define MyAppURL "https://lokinet.org" #define MyAppExeName "lokinetui.exe" ; change this to avoid compiler errors -despair #ifndef DevPath From ae3fc3a395e55f21212dc916aa842609339bb49a Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 16 Sep 2019 20:40:31 +0100 Subject: [PATCH 33/38] Add initial macOS app --- .gitignore | 3 + daemon/main.cpp | 8 + daemon/rcutil.cpp | 4 +- llarp/util/logging/logger.cpp | 2 +- llarp/util/logging/ostream_logger.cpp | 40 +- llarp/util/logging/ostream_logger.hpp | 3 +- ui-macos/lokinet.xcodeproj/project.pbxproj | 621 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/lokinet.xcscheme | 112 ++++ ui-macos/lokinet/AppDelegate.swift | 23 + .../AppIcon.appiconset/Contents.json | 58 ++ .../lokinet/Assets.xcassets/Contents.json | 6 + ui-macos/lokinet/Base.lproj/Main.storyboard | 226 +++++++ ui-macos/lokinet/DNSManager.swift | 72 ++ ui-macos/lokinet/Info.plist | 34 + ui-macos/lokinet/LokinetLog.swift | 32 + ui-macos/lokinet/LokinetRunner.swift | 76 +++ ui-macos/lokinet/StreamReader.swift | 73 ++ ui-macos/lokinet/ViewController.swift | 22 + ui-macos/lokinet/lokinet.entitlements | 8 + ui-macos/lokinetTests/Info.plist | 22 + ui-macos/lokinetTests/lokinetTests.swift | 33 + ui-macos/lokinetUITests/Info.plist | 22 + ui-macos/lokinetUITests/lokinetUITests.swift | 33 + 25 files changed, 1528 insertions(+), 20 deletions(-) create mode 100644 ui-macos/lokinet.xcodeproj/project.pbxproj create mode 100644 ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ui-macos/lokinet.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ui-macos/lokinet.xcodeproj/xcshareddata/xcschemes/lokinet.xcscheme create mode 100644 ui-macos/lokinet/AppDelegate.swift create mode 100644 ui-macos/lokinet/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ui-macos/lokinet/Assets.xcassets/Contents.json create mode 100644 ui-macos/lokinet/Base.lproj/Main.storyboard create mode 100644 ui-macos/lokinet/DNSManager.swift create mode 100644 ui-macos/lokinet/Info.plist create mode 100644 ui-macos/lokinet/LokinetLog.swift create mode 100644 ui-macos/lokinet/LokinetRunner.swift create mode 100644 ui-macos/lokinet/StreamReader.swift create mode 100644 ui-macos/lokinet/ViewController.swift create mode 100644 ui-macos/lokinet/lokinet.entitlements create mode 100644 ui-macos/lokinetTests/Info.plist create mode 100644 ui-macos/lokinetTests/lokinetTests.swift create mode 100644 ui-macos/lokinetUITests/Info.plist create mode 100644 ui-macos/lokinetUITests/lokinetUITests.swift diff --git a/.gitignore b/.gitignore index d21ebf252..dd4172cf6 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,6 @@ GTAGS GRTAGS GPATH version.txt + +# xcode +xcuserdata/ diff --git a/daemon/main.cpp b/daemon/main.cpp index cbac238dd..ec6d938f4 100644 --- a/daemon/main.cpp +++ b/daemon/main.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include @@ -136,6 +137,7 @@ main(int argc, char *argv[]) ("g,generate", "generate client config", cxxopts::value()) ("r,router", "generate router config", cxxopts::value()) ("f,force", "overwrite", cxxopts::value()) + ("c,colour", "colour output", cxxopts::value()->default_value("true")) ("d,debug", "debug mode - UNENCRYPTED TRAFFIC", cxxopts::value()) ("config","path to configuration file", cxxopts::value()); @@ -158,6 +160,12 @@ main(int argc, char *argv[]) llarp::LogDebug("debug logging activated"); } + if(!result["colour"].as< bool >()) + { + llarp::LogContext::Instance().logStream = + std::make_unique< llarp::OStreamLogStream >(false, std::cerr); + } + if(result.count("help")) { std::cout << options.help() << std::endl; diff --git a/daemon/rcutil.cpp b/daemon/rcutil.cpp index 2b8b11618..7d7b997be 100644 --- a/daemon/rcutil.cpp +++ b/daemon/rcutil.cpp @@ -55,6 +55,7 @@ main(int argc, char* argv[]) options.add_options() ("v,verbose", "Verbose", cxxopts::value()) + ("c,colour", "colour output", cxxopts::value()->default_value("true")) ("h,help", "help", cxxopts::value()) ("j,json", "output in json", cxxopts::value()) ("dump", "dump rc file", cxxopts::value >(), "FILE"); @@ -70,7 +71,8 @@ main(int argc, char* argv[]) { SetLogLevel(llarp::eLogDebug); llarp::LogContext::Instance().logStream = - std::make_unique< llarp::OStreamLogStream >(std::cerr); + std::make_unique< llarp::OStreamLogStream >( + result["colour"].as< bool >(), std::cerr); llarp::LogDebug("debug logging activated"); } diff --git a/llarp/util/logging/logger.cpp b/llarp/util/logging/logger.cpp index b2c507c2a..9e99a4781 100644 --- a/llarp/util/logging/logger.cpp +++ b/llarp/util/logging/logger.cpp @@ -19,7 +19,7 @@ namespace llarp #define _LOGSTREAM_INIT #else using Stream_t = OStreamLogStream; -#define _LOGSTREAM_INIT std::cout +#define _LOGSTREAM_INIT true, std::cout #endif #endif diff --git a/llarp/util/logging/ostream_logger.cpp b/llarp/util/logging/ostream_logger.cpp index a9220b0f0..233b99ed4 100644 --- a/llarp/util/logging/ostream_logger.cpp +++ b/llarp/util/logging/ostream_logger.cpp @@ -3,7 +3,8 @@ namespace llarp { - OStreamLogStream::OStreamLogStream(std::ostream& out) : m_Out(out) + OStreamLogStream::OStreamLogStream(bool withColours, std::ostream& out) + : m_withColours(withColours), m_Out(out) { } @@ -12,22 +13,25 @@ namespace llarp const char* fname, int lineno, const std::string& nodename) const { - switch(lvl) + if(m_withColours) { - case eLogNone: - break; - case eLogDebug: - ss << (char)27 << "[0m"; - break; - case eLogInfo: - ss << (char)27 << "[1m"; - break; - case eLogWarn: - ss << (char)27 << "[1;33m"; - break; - case eLogError: - ss << (char)27 << "[1;31m"; - break; + switch(lvl) + { + case eLogNone: + break; + case eLogDebug: + ss << (char)27 << "[0m"; + break; + case eLogInfo: + ss << (char)27 << "[1m"; + break; + case eLogWarn: + ss << (char)27 << "[1;33m"; + break; + case eLogError: + ss << (char)27 << "[1;31m"; + break; + } } ss << "[" << LogLevelToString(lvl) << "] "; ss << "[" << nodename << "]" @@ -38,7 +42,9 @@ namespace llarp void OStreamLogStream::PostLog(std::stringstream& ss) const { - ss << (char)27 << "[0;0m" << std::endl; + if(m_withColours) + ss << (char)27 << "[0;0m"; + ss << std::endl; } void diff --git a/llarp/util/logging/ostream_logger.hpp b/llarp/util/logging/ostream_logger.hpp index 74532a59b..c29d8a791 100644 --- a/llarp/util/logging/ostream_logger.hpp +++ b/llarp/util/logging/ostream_logger.hpp @@ -8,7 +8,7 @@ namespace llarp { struct OStreamLogStream : public ILogStream { - OStreamLogStream(std::ostream& out); + OStreamLogStream(bool withColours, std::ostream& out); ~OStreamLogStream() override = default; @@ -27,6 +27,7 @@ namespace llarp } private: + bool m_withColours; std::ostream& m_Out; }; } // namespace llarp diff --git a/ui-macos/lokinet.xcodeproj/project.pbxproj b/ui-macos/lokinet.xcodeproj/project.pbxproj new file mode 100644 index 000000000..a4b6a7c5a --- /dev/null +++ b/ui-macos/lokinet.xcodeproj/project.pbxproj @@ -0,0 +1,621 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 7B28BD1A232EA8B40073B955 /* DNSManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B28BD19232EA8B40073B955 /* DNSManager.swift */; }; + 7B28BD1C232EB6EF0073B955 /* LokinetRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B28BD1B232EB6EF0073B955 /* LokinetRunner.swift */; }; + 7BED5B7A232D78D900DF603F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B79232D78D900DF603F /* AppDelegate.swift */; }; + 7BED5B7C232D78D900DF603F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B7B232D78D900DF603F /* ViewController.swift */; }; + 7BED5B7E232D78DB00DF603F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7BED5B7D232D78DB00DF603F /* Assets.xcassets */; }; + 7BED5B81232D78DB00DF603F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7BED5B7F232D78DB00DF603F /* Main.storyboard */; }; + 7BED5B8D232D78DB00DF603F /* lokinetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B8C232D78DB00DF603F /* lokinetTests.swift */; }; + 7BED5B98232D78DB00DF603F /* lokinetUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B97232D78DB00DF603F /* lokinetUITests.swift */; }; + 7BED5BA6232E7E6600DF603F /* LokinetLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5BA5232E7E6600DF603F /* LokinetLog.swift */; }; + 7BED5BA8232E831B00DF603F /* StreamReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5BA7232E831B00DF603F /* StreamReader.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 7BED5B89232D78DB00DF603F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7BED5B6E232D78D900DF603F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7BED5B75232D78D900DF603F; + remoteInfo = lokinet; + }; + 7BED5B94232D78DB00DF603F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7BED5B6E232D78D900DF603F /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7BED5B75232D78D900DF603F; + remoteInfo = lokinet; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 7B28BD19232EA8B40073B955 /* DNSManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DNSManager.swift; sourceTree = ""; }; + 7B28BD1B232EB6EF0073B955 /* LokinetRunner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LokinetRunner.swift; sourceTree = ""; }; + 7BED5B76232D78D900DF603F /* lokinet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lokinet.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 7BED5B79232D78D900DF603F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7BED5B7B232D78D900DF603F /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 7BED5B7D232D78DB00DF603F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 7BED5B80232D78DB00DF603F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 7BED5B82232D78DB00DF603F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7BED5B83232D78DB00DF603F /* lokinet.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = lokinet.entitlements; sourceTree = ""; }; + 7BED5B88232D78DB00DF603F /* lokinetTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = lokinetTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 7BED5B8C232D78DB00DF603F /* lokinetTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = lokinetTests.swift; sourceTree = ""; }; + 7BED5B8E232D78DB00DF603F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7BED5B93232D78DB00DF603F /* lokinetUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = lokinetUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 7BED5B97232D78DB00DF603F /* lokinetUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = lokinetUITests.swift; sourceTree = ""; }; + 7BED5B99232D78DB00DF603F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7BED5BA5232E7E6600DF603F /* LokinetLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LokinetLog.swift; sourceTree = ""; }; + 7BED5BA7232E831B00DF603F /* StreamReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreamReader.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 7BED5B73232D78D900DF603F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7BED5B85232D78DB00DF603F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7BED5B90232D78DB00DF603F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 7BED5B6D232D78D900DF603F = { + isa = PBXGroup; + children = ( + 7BED5B78232D78D900DF603F /* lokinet */, + 7BED5B8B232D78DB00DF603F /* lokinetTests */, + 7BED5B96232D78DB00DF603F /* lokinetUITests */, + 7BED5B77232D78D900DF603F /* Products */, + 7BED5BA9232E993E00DF603F /* Frameworks */, + ); + sourceTree = ""; + }; + 7BED5B77232D78D900DF603F /* Products */ = { + isa = PBXGroup; + children = ( + 7BED5B76232D78D900DF603F /* lokinet.app */, + 7BED5B88232D78DB00DF603F /* lokinetTests.xctest */, + 7BED5B93232D78DB00DF603F /* lokinetUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 7BED5B78232D78D900DF603F /* lokinet */ = { + isa = PBXGroup; + children = ( + 7BED5B79232D78D900DF603F /* AppDelegate.swift */, + 7BED5B7B232D78D900DF603F /* ViewController.swift */, + 7BED5B7D232D78DB00DF603F /* Assets.xcassets */, + 7BED5B7F232D78DB00DF603F /* Main.storyboard */, + 7BED5B82232D78DB00DF603F /* Info.plist */, + 7BED5B83232D78DB00DF603F /* lokinet.entitlements */, + 7BED5BA5232E7E6600DF603F /* LokinetLog.swift */, + 7B28BD19232EA8B40073B955 /* DNSManager.swift */, + 7BED5BA7232E831B00DF603F /* StreamReader.swift */, + 7B28BD1B232EB6EF0073B955 /* LokinetRunner.swift */, + ); + path = lokinet; + sourceTree = ""; + }; + 7BED5B8B232D78DB00DF603F /* lokinetTests */ = { + isa = PBXGroup; + children = ( + 7BED5B8C232D78DB00DF603F /* lokinetTests.swift */, + 7BED5B8E232D78DB00DF603F /* Info.plist */, + ); + path = lokinetTests; + sourceTree = ""; + }; + 7BED5B96232D78DB00DF603F /* lokinetUITests */ = { + isa = PBXGroup; + children = ( + 7BED5B97232D78DB00DF603F /* lokinetUITests.swift */, + 7BED5B99232D78DB00DF603F /* Info.plist */, + ); + path = lokinetUITests; + sourceTree = ""; + }; + 7BED5BA9232E993E00DF603F /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 7BED5B75232D78D900DF603F /* lokinet */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7BED5B9C232D78DB00DF603F /* Build configuration list for PBXNativeTarget "lokinet" */; + buildPhases = ( + 7BED5B72232D78D900DF603F /* Sources */, + 7BED5B73232D78D900DF603F /* Frameworks */, + 7BED5B74232D78D900DF603F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = lokinet; + productName = lokinet; + productReference = 7BED5B76232D78D900DF603F /* lokinet.app */; + productType = "com.apple.product-type.application"; + }; + 7BED5B87232D78DB00DF603F /* lokinetTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7BED5B9F232D78DB00DF603F /* Build configuration list for PBXNativeTarget "lokinetTests" */; + buildPhases = ( + 7BED5B84232D78DB00DF603F /* Sources */, + 7BED5B85232D78DB00DF603F /* Frameworks */, + 7BED5B86232D78DB00DF603F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 7BED5B8A232D78DB00DF603F /* PBXTargetDependency */, + ); + name = lokinetTests; + productName = lokinetTests; + productReference = 7BED5B88232D78DB00DF603F /* lokinetTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 7BED5B92232D78DB00DF603F /* lokinetUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7BED5BA2232D78DB00DF603F /* Build configuration list for PBXNativeTarget "lokinetUITests" */; + buildPhases = ( + 7BED5B8F232D78DB00DF603F /* Sources */, + 7BED5B90232D78DB00DF603F /* Frameworks */, + 7BED5B91232D78DB00DF603F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 7BED5B95232D78DB00DF603F /* PBXTargetDependency */, + ); + name = lokinetUITests; + productName = lokinetUITests; + productReference = 7BED5B93232D78DB00DF603F /* lokinetUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 7BED5B6E232D78D900DF603F /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1020; + LastUpgradeCheck = 1020; + ORGANIZATIONNAME = Loki; + TargetAttributes = { + 7BED5B75232D78D900DF603F = { + CreatedOnToolsVersion = 10.2.1; + SystemCapabilities = { + com.apple.ApplicationGroups.Mac = { + enabled = 0; + }; + com.apple.NetworkExtensions = { + enabled = 0; + }; + com.apple.Sandbox = { + enabled = 0; + }; + }; + }; + 7BED5B87232D78DB00DF603F = { + CreatedOnToolsVersion = 10.2.1; + TestTargetID = 7BED5B75232D78D900DF603F; + }; + 7BED5B92232D78DB00DF603F = { + CreatedOnToolsVersion = 10.2.1; + TestTargetID = 7BED5B75232D78D900DF603F; + }; + }; + }; + buildConfigurationList = 7BED5B71232D78D900DF603F /* Build configuration list for PBXProject "lokinet" */; + compatibilityVersion = "Xcode 10.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 7BED5B6D232D78D900DF603F; + productRefGroup = 7BED5B77232D78D900DF603F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7BED5B75232D78D900DF603F /* lokinet */, + 7BED5B87232D78DB00DF603F /* lokinetTests */, + 7BED5B92232D78DB00DF603F /* lokinetUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 7BED5B74232D78D900DF603F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BED5B7E232D78DB00DF603F /* Assets.xcassets in Resources */, + 7BED5B81232D78DB00DF603F /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7BED5B86232D78DB00DF603F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7BED5B91232D78DB00DF603F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7BED5B72232D78D900DF603F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BED5BA8232E831B00DF603F /* StreamReader.swift in Sources */, + 7BED5B7C232D78D900DF603F /* ViewController.swift in Sources */, + 7BED5BA6232E7E6600DF603F /* LokinetLog.swift in Sources */, + 7B28BD1A232EA8B40073B955 /* DNSManager.swift in Sources */, + 7B28BD1C232EB6EF0073B955 /* LokinetRunner.swift in Sources */, + 7BED5B7A232D78D900DF603F /* AppDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7BED5B84232D78DB00DF603F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BED5B8D232D78DB00DF603F /* lokinetTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7BED5B8F232D78DB00DF603F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BED5B98232D78DB00DF603F /* lokinetUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 7BED5B8A232D78DB00DF603F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7BED5B75232D78D900DF603F /* lokinet */; + targetProxy = 7BED5B89232D78DB00DF603F /* PBXContainerItemProxy */; + }; + 7BED5B95232D78DB00DF603F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7BED5B75232D78D900DF603F /* lokinet */; + targetProxy = 7BED5B94232D78DB00DF603F /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 7BED5B7F232D78DB00DF603F /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 7BED5B80232D78DB00DF603F /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 7BED5B9A232D78DB00DF603F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 7BED5B9B232D78DB00DF603F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.14; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 7BED5B9D232D78DB00DF603F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = lokinet/lokinet.entitlements; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 23TKR8Q2XE; + INFOPLIST_FILE = lokinet/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = loki.lokinet; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 7BED5B9E232D78DB00DF603F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = lokinet/lokinet.entitlements; + CODE_SIGN_IDENTITY = "Mac Developer"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 23TKR8Q2XE; + INFOPLIST_FILE = lokinet/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.14; + PRODUCT_BUNDLE_IDENTIFIER = loki.lokinet; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 7BED5BA0232D78DB00DF603F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = lokinetTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = loki.lokinetTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/lokinet.app/Contents/MacOS/lokinet"; + }; + name = Debug; + }; + 7BED5BA1232D78DB00DF603F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = lokinetTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = loki.lokinetTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/lokinet.app/Contents/MacOS/lokinet"; + }; + name = Release; + }; + 7BED5BA3232D78DB00DF603F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = lokinetUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = loki.lokinetUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = lokinet; + }; + name = Debug; + }; + 7BED5BA4232D78DB00DF603F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = lokinetUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/../Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = loki.lokinetUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_TARGET_NAME = lokinet; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7BED5B71232D78D900DF603F /* Build configuration list for PBXProject "lokinet" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7BED5B9A232D78DB00DF603F /* Debug */, + 7BED5B9B232D78DB00DF603F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7BED5B9C232D78DB00DF603F /* Build configuration list for PBXNativeTarget "lokinet" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7BED5B9D232D78DB00DF603F /* Debug */, + 7BED5B9E232D78DB00DF603F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7BED5B9F232D78DB00DF603F /* Build configuration list for PBXNativeTarget "lokinetTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7BED5BA0232D78DB00DF603F /* Debug */, + 7BED5BA1232D78DB00DF603F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7BED5BA2232D78DB00DF603F /* Build configuration list for PBXNativeTarget "lokinetUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7BED5BA3232D78DB00DF603F /* Debug */, + 7BED5BA4232D78DB00DF603F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 7BED5B6E232D78D900DF603F /* Project object */; +} diff --git a/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..a6a9a9a05 --- /dev/null +++ b/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ui-macos/lokinet.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ui-macos/lokinet.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/ui-macos/lokinet.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ui-macos/lokinet.xcodeproj/xcshareddata/xcschemes/lokinet.xcscheme b/ui-macos/lokinet.xcodeproj/xcshareddata/xcschemes/lokinet.xcscheme new file mode 100644 index 000000000..bf40928c4 --- /dev/null +++ b/ui-macos/lokinet.xcodeproj/xcshareddata/xcschemes/lokinet.xcscheme @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui-macos/lokinet/AppDelegate.swift b/ui-macos/lokinet/AppDelegate.swift new file mode 100644 index 000000000..c95c3e2c2 --- /dev/null +++ b/ui-macos/lokinet/AppDelegate.swift @@ -0,0 +1,23 @@ +// +// AppDelegate.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import Cocoa + +@NSApplicationMain +class AppDelegate: NSObject, NSApplicationDelegate { + + + + func applicationDidFinishLaunching(_ aNotification: Notification) { + // Insert code here to initialize your application + } + + func applicationWillTerminate(_ aNotification: Notification) { + // Insert code here to tear down your application + } +} + diff --git a/ui-macos/lokinet/Assets.xcassets/AppIcon.appiconset/Contents.json b/ui-macos/lokinet/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..2db2b1c7c --- /dev/null +++ b/ui-macos/lokinet/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,58 @@ +{ + "images" : [ + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "16x16", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "32x32", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "128x128", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "256x256", + "scale" : "2x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "1x" + }, + { + "idiom" : "mac", + "size" : "512x512", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ui-macos/lokinet/Assets.xcassets/Contents.json b/ui-macos/lokinet/Assets.xcassets/Contents.json new file mode 100644 index 000000000..da4a164c9 --- /dev/null +++ b/ui-macos/lokinet/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ui-macos/lokinet/Base.lproj/Main.storyboard b/ui-macos/lokinet/Base.lproj/Main.storyboard new file mode 100644 index 000000000..813b7c2a0 --- /dev/null +++ b/ui-macos/lokinet/Base.lproj/Main.storyboard @@ -0,0 +1,226 @@ + + + + + + + + + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui-macos/lokinet/DNSManager.swift b/ui-macos/lokinet/DNSManager.swift new file mode 100644 index 000000000..3c713dc81 --- /dev/null +++ b/ui-macos/lokinet/DNSManager.swift @@ -0,0 +1,72 @@ +// +// DNSManager.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import Foundation + +func split(str: String?) -> [String] { + let res = str?.components(separatedBy: NSCharacterSet.whitespacesAndNewlines) ?? [] + return res.filter({!$0.isEmpty}) +} + +class DNSManager { + static let netSetup = URL(fileURLWithPath: "/usr/sbin/networksetup") + + let oldDNSSettings: [String] + let interface: String + + static func getOldSettings(interface: String) -> [String] { + let netprocess = Process() + netprocess.executableURL = DNSManager.netSetup + netprocess.arguments = ["-getdnsservers", interface] + + do { + let pipe = Pipe() + netprocess.standardOutput = pipe + try netprocess.run() + let data = pipe.fileHandleForReading.readDataToEndOfFile() + let asStr = String(data: data, encoding: .ascii) + + return split(str: asStr).filter({$0 != "127.0.0.1"}) + } catch { + return [] + } + } + + func setNewSettings() throws { + let netprocess = Process() + netprocess.executableURL = DNSManager.netSetup + + netprocess.arguments = ["-setdnsservers", self.interface, "127.0.0.1"] + + try netprocess.run() + } + + func restoreOldSettings() { + let netprocess = Process() + netprocess.executableURL = DNSManager.netSetup + + netprocess.arguments = ["-setdnsservers", self.interface] + netprocess.arguments?.append(contentsOf: oldDNSSettings) + + do { + try netprocess.run() + print("Overriding DNS Settings of \(self.oldDNSSettings)") + } catch { + // do nothing + } + } + + init(interface: String) { + self.interface = interface + self.oldDNSSettings = DNSManager.getOldSettings(interface: interface) + print("Overriding DNS Settings of \(self.oldDNSSettings)") + } + + deinit { + restoreOldSettings() + } +} diff --git a/ui-macos/lokinet/Info.plist b/ui-macos/lokinet/Info.plist new file mode 100644 index 000000000..06d8a48d9 --- /dev/null +++ b/ui-macos/lokinet/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSApplicationCategoryType + public.app-category.productivity + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + Copyright © 2019 Loki. All rights reserved. + NSMainStoryboardFile + Main + NSPrincipalClass + NSApplication + + diff --git a/ui-macos/lokinet/LokinetLog.swift b/ui-macos/lokinet/LokinetLog.swift new file mode 100644 index 000000000..c1385feae --- /dev/null +++ b/ui-macos/lokinet/LokinetLog.swift @@ -0,0 +1,32 @@ +// +// LokinetLog.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import AppKit + +final class LokinetLog : NSTextView { + + var runner: LokinetRunner? + + override init(frame: NSRect, textContainer: NSTextContainer?) { + super.init(frame: frame, textContainer: textContainer) + self.runner = LokinetRunner(window: self, interface: "Wi-Fi") + + self.runner?.start() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + self.runner = LokinetRunner(window: self, interface: "Wi-Fi") + + self.runner?.start() + } + + func append(string: String) { + self.textStorage?.append(NSAttributedString(string: string + "\n")) + self.scrollToEndOfDocument(nil) + } +} diff --git a/ui-macos/lokinet/LokinetRunner.swift b/ui-macos/lokinet/LokinetRunner.swift new file mode 100644 index 000000000..63ab2d98f --- /dev/null +++ b/ui-macos/lokinet/LokinetRunner.swift @@ -0,0 +1,76 @@ +// +// LokinetRunner.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import Foundation + +class LokinetRunner { + static let PATH_KEY = "lokinetPath" + static let DEFAULT_PATH = URL(fileURLWithPath: "/usr/local/bin/lokinet") + + var lokinetPath: URL? + var process = Process() + let dnsManager: DNSManager + weak var window: LokinetLog? + + init(window: LokinetLog, interface: String) { + self.dnsManager = DNSManager(interface: interface) + self.window = window + configure() + } + + func configure() { + let defaults = UserDefaults.standard; + + self.lokinetPath = defaults.url(forKey: LokinetRunner.PATH_KEY) ?? LokinetRunner.DEFAULT_PATH + defaults.set(self.lokinetPath, forKey: LokinetRunner.PATH_KEY) + } + + func enableDNS() { + do { + try dnsManager.setNewSettings() + } catch { + self.window?.presentError(error) + } + } + + func start() { + process.executableURL = self.lokinetPath + process.arguments = ["--colour=false"] + let outputPipe = Pipe() + process.standardOutput = outputPipe + process.standardError = outputPipe + + do { + try process.run() + } catch { + self.window?.presentError(error) + } + + guard let reader = StreamReader(fh: outputPipe.fileHandleForReading) else { + let err = NSError(domain: "lokinet", code: 0, userInfo: ["msg": "Failed to read from filehandle"]) + self.window?.presentError(err) + return + } + + DispatchQueue.global(qos: .background).async { + for line in reader { + DispatchQueue.main.async { + self.window?.append(string: line) + } + } + } + + enableDNS() + } + + deinit { + if process.isRunning { + process.terminate() + process.waitUntilExit() + } + } +} diff --git a/ui-macos/lokinet/StreamReader.swift b/ui-macos/lokinet/StreamReader.swift new file mode 100644 index 000000000..39e0c4eae --- /dev/null +++ b/ui-macos/lokinet/StreamReader.swift @@ -0,0 +1,73 @@ +// +// StreamReader.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import Foundation + +final class StreamReader { + let encoding : String.Encoding + let chunkSize : Int + + var fileHandle : FileHandle! + var buffer : Data + let delimData : Data + var atEof : Bool = false + + init?(fh: FileHandle, delimiter: String = "\n", encoding : String.Encoding = .utf8, chunkSize : Int = 4096) { + self.chunkSize = chunkSize + self.encoding = encoding + self.fileHandle = fh + + guard let delimData = delimiter.data(using: encoding) else { + return nil + } + self.delimData = delimData + self.buffer = Data(capacity: chunkSize) + } + + /// Return next line, or nil on EOF. + func nextLine() -> String? { + precondition(fileHandle != nil, "Attempt to read from closed file") + + if atEof { + return nil + } + + // Read data chunks from file until a line delimiter is found: + while !atEof { + if let range = buffer.range(of: delimData) { + // Convert complete line (excluding the delimiter) to a string: + let line = String(data: buffer.subdata(in: 0.. 0 { + buffer.append(tmpData) + } else { + // EOF or read error. + atEof = true + if buffer.count > 0 { + // Buffer contains last line in file (not terminated by delimiter). + let line = String(data: buffer as Data, encoding: encoding) + buffer.count = 0 + return line + } + } + } + + return nil + } +} + +extension StreamReader : Sequence { + func makeIterator() -> AnyIterator { + return AnyIterator { + return self.nextLine() + } + } +} diff --git a/ui-macos/lokinet/ViewController.swift b/ui-macos/lokinet/ViewController.swift new file mode 100644 index 000000000..7a95f4c57 --- /dev/null +++ b/ui-macos/lokinet/ViewController.swift @@ -0,0 +1,22 @@ +// +// ViewController.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import Cocoa + +class ViewController: NSViewController { + + override func viewDidLoad() { + super.viewDidLoad() + } + + override var representedObject: Any? { + didSet { + // Update the view, if already loaded. + } + } +} + diff --git a/ui-macos/lokinet/lokinet.entitlements b/ui-macos/lokinet/lokinet.entitlements new file mode 100644 index 000000000..2eb7e333a --- /dev/null +++ b/ui-macos/lokinet/lokinet.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.application-groups + + + diff --git a/ui-macos/lokinetTests/Info.plist b/ui-macos/lokinetTests/Info.plist new file mode 100644 index 000000000..6c40a6cd0 --- /dev/null +++ b/ui-macos/lokinetTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/ui-macos/lokinetTests/lokinetTests.swift b/ui-macos/lokinetTests/lokinetTests.swift new file mode 100644 index 000000000..e95c64178 --- /dev/null +++ b/ui-macos/lokinetTests/lokinetTests.swift @@ -0,0 +1,33 @@ +// +// lokinetTests.swift +// lokinetTests +// +// Copyright © 2019 Loki. All rights reserved. +// + +import XCTest +@testable import lokinet + +class lokinetTests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/ui-macos/lokinetUITests/Info.plist b/ui-macos/lokinetUITests/Info.plist new file mode 100644 index 000000000..6c40a6cd0 --- /dev/null +++ b/ui-macos/lokinetUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/ui-macos/lokinetUITests/lokinetUITests.swift b/ui-macos/lokinetUITests/lokinetUITests.swift new file mode 100644 index 000000000..79e381db0 --- /dev/null +++ b/ui-macos/lokinetUITests/lokinetUITests.swift @@ -0,0 +1,33 @@ +// +// lokinetUITests.swift +// lokinetUITests +// +// Copyright © 2019 Loki. All rights reserved. +// + +import XCTest + +class lokinetUITests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. + XCUIApplication().launch() + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +} From 5f0bb6fbd16dab9fb62466a8fc5e6a2b861f0333 Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 24 Sep 2019 09:51:54 +0100 Subject: [PATCH 34/38] Try to fix windows build --- llarp/util/logging/win32_logger.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llarp/util/logging/win32_logger.cpp b/llarp/util/logging/win32_logger.cpp index 9012626f2..65e359804 100644 --- a/llarp/util/logging/win32_logger.cpp +++ b/llarp/util/logging/win32_logger.cpp @@ -8,7 +8,7 @@ static short old_attrs; namespace llarp { Win32LogStream::Win32LogStream(std::ostream& out) - : OStreamLogStream(out), m_Out(out) + : OStreamLogStream(true, out), m_Out(out) { // Attempt to use ANSI escapes directly // if the modern console is active. From a5858c770f78308a6f6607855e67862c1fc0a74b Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 24 Sep 2019 09:29:11 +0000 Subject: [PATCH 35/38] Fix static link with gcc --- cmake/static_link.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cmake/static_link.cmake b/cmake/static_link.cmake index 91e528ee1..1a919ab07 100644 --- a/cmake/static_link.cmake +++ b/cmake/static_link.cmake @@ -10,4 +10,14 @@ endif() if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") link_libraries( -flto) + return() +endif() + +if(NOT CMAKE_CROSSCOMPILING) + set(CMAKE_AR "gcc-ar") + set(CMAKE_C_ARCHIVE_CREATE " qcs ") + set(CMAKE_C_ARCHIVE_FINISH "true") + set(CMAKE_CXX_ARCHIVE_CREATE " qcs ") + set(CMAKE_CXX_ARCHIVE_FINISH "true") + link_libraries( -flto ) endif() From 50c67cb7a29315abf0b4949241b9b59af8973cd1 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 25 Sep 2019 10:10:25 +0100 Subject: [PATCH 36/38] Use a hardened build for macOS release --- ui-macos/lokinet.xcodeproj/project.pbxproj | 2 ++ .../project.xcworkspace/contents.xcworkspacedata | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ui-macos/lokinet.xcodeproj/project.pbxproj b/ui-macos/lokinet.xcodeproj/project.pbxproj index a4b6a7c5a..1b18c2eb0 100644 --- a/ui-macos/lokinet.xcodeproj/project.pbxproj +++ b/ui-macos/lokinet.xcodeproj/project.pbxproj @@ -463,6 +463,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = lokinet/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -485,6 +486,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = lokinet/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a6a9a9a05..919434a62 100644 --- a/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> From 89f039d69bdd048125ce60af570a2a74a1573304 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 25 Sep 2019 10:10:25 +0100 Subject: [PATCH 37/38] Use a hardened build for macOS release --- ui-macos/lokinet.xcodeproj/project.pbxproj | 4 ++++ .../project.xcworkspace/contents.xcworkspacedata | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ui-macos/lokinet.xcodeproj/project.pbxproj b/ui-macos/lokinet.xcodeproj/project.pbxproj index a4b6a7c5a..74dd2b01c 100644 --- a/ui-macos/lokinet.xcodeproj/project.pbxproj +++ b/ui-macos/lokinet.xcodeproj/project.pbxproj @@ -373,6 +373,7 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_HARDENED_RUNTIME = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -435,6 +436,7 @@ COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_HARDENED_RUNTIME = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; @@ -463,6 +465,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = lokinet/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -485,6 +488,7 @@ CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = 23TKR8Q2XE; + ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = lokinet/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata index a6a9a9a05..919434a62 100644 --- a/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/ui-macos/lokinet.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> From db20c12b057d396a8887bc359d835d5311bb7c85 Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 30 Sep 2019 10:19:29 +0100 Subject: [PATCH 38/38] Improvements to app workflow --- ui-macos/WindowsManager.swift | 29 +++ ui-macos/lokinet.xcodeproj/project.pbxproj | 24 ++- ui-macos/lokinet/AppDelegate.swift | 136 ++++++++++++++- ui-macos/lokinet/Base.lproj/Main.storyboard | 184 +++++++++++--------- ui-macos/lokinet/DNSManager.swift | 29 +-- ui-macos/lokinet/LokinetLog.swift | 31 ++-- ui-macos/lokinet/LokinetRunner.swift | 44 ++--- ui-macos/lokinet/ViewController.swift | 22 --- 8 files changed, 331 insertions(+), 168 deletions(-) create mode 100644 ui-macos/WindowsManager.swift delete mode 100644 ui-macos/lokinet/ViewController.swift diff --git a/ui-macos/WindowsManager.swift b/ui-macos/WindowsManager.swift new file mode 100644 index 000000000..35d206882 --- /dev/null +++ b/ui-macos/WindowsManager.swift @@ -0,0 +1,29 @@ +// +// WindowsManager.swift +// lokinet +// +// Copyright © 2019 Loki. All rights reserved. +// + +import AppKit +import Foundation + +struct WindowsManager { + static func getVC(withIdentifier identifier: String, + ofType: T.Type?, + storyboard: String = "Main", + bundle: Bundle? = nil) -> T? { + let storyboard = NSStoryboard(name: storyboard, bundle: bundle) + + guard let vc: T = storyboard.instantiateController(withIdentifier: identifier) as? T else { + let alert = NSAlert() + alert.alertStyle = .critical + alert.messageText = "Error initiating the viewcontroller" + alert.runModal() + + return nil + } + + return vc + } +} diff --git a/ui-macos/lokinet.xcodeproj/project.pbxproj b/ui-macos/lokinet.xcodeproj/project.pbxproj index 74dd2b01c..7dd8c6cf5 100644 --- a/ui-macos/lokinet.xcodeproj/project.pbxproj +++ b/ui-macos/lokinet.xcodeproj/project.pbxproj @@ -9,8 +9,12 @@ /* Begin PBXBuildFile section */ 7B28BD1A232EA8B40073B955 /* DNSManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B28BD19232EA8B40073B955 /* DNSManager.swift */; }; 7B28BD1C232EB6EF0073B955 /* LokinetRunner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B28BD1B232EB6EF0073B955 /* LokinetRunner.swift */; }; + 7BA4FB642340D5940098E20A /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA4FB632340D5940098E20A /* Preferences.swift */; }; + 7BA4FB662340DA820098E20A /* StatusMenuExt.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA4FB652340DA820098E20A /* StatusMenuExt.swift */; }; + 7BA4FB6C2340F2270098E20A /* WindowsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA4FB6B2340F2270098E20A /* WindowsManager.swift */; }; + 7BA4FB7023411FF60098E20A /* PrefsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA4FB6E23411FF60098E20A /* PrefsViewController.swift */; }; + 7BA4FB7323412D700098E20A /* Interfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BA4FB7223412D700098E20A /* Interfaces.swift */; }; 7BED5B7A232D78D900DF603F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B79232D78D900DF603F /* AppDelegate.swift */; }; - 7BED5B7C232D78D900DF603F /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B7B232D78D900DF603F /* ViewController.swift */; }; 7BED5B7E232D78DB00DF603F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7BED5B7D232D78DB00DF603F /* Assets.xcassets */; }; 7BED5B81232D78DB00DF603F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7BED5B7F232D78DB00DF603F /* Main.storyboard */; }; 7BED5B8D232D78DB00DF603F /* lokinetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BED5B8C232D78DB00DF603F /* lokinetTests.swift */; }; @@ -39,9 +43,13 @@ /* Begin PBXFileReference section */ 7B28BD19232EA8B40073B955 /* DNSManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DNSManager.swift; sourceTree = ""; }; 7B28BD1B232EB6EF0073B955 /* LokinetRunner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LokinetRunner.swift; sourceTree = ""; }; + 7BA4FB632340D5940098E20A /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = ""; }; + 7BA4FB652340DA820098E20A /* StatusMenuExt.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusMenuExt.swift; sourceTree = ""; }; + 7BA4FB6B2340F2270098E20A /* WindowsManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowsManager.swift; sourceTree = ""; }; + 7BA4FB6E23411FF60098E20A /* PrefsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefsViewController.swift; sourceTree = ""; }; + 7BA4FB7223412D700098E20A /* Interfaces.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Interfaces.swift; sourceTree = ""; }; 7BED5B76232D78D900DF603F /* lokinet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = lokinet.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7BED5B79232D78D900DF603F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7BED5B7B232D78D900DF603F /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 7BED5B7D232D78DB00DF603F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 7BED5B80232D78DB00DF603F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 7BED5B82232D78DB00DF603F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -84,6 +92,7 @@ 7BED5B6D232D78D900DF603F = { isa = PBXGroup; children = ( + 7BA4FB6B2340F2270098E20A /* WindowsManager.swift */, 7BED5B78232D78D900DF603F /* lokinet */, 7BED5B8B232D78DB00DF603F /* lokinetTests */, 7BED5B96232D78DB00DF603F /* lokinetUITests */, @@ -106,7 +115,9 @@ isa = PBXGroup; children = ( 7BED5B79232D78D900DF603F /* AppDelegate.swift */, - 7BED5B7B232D78D900DF603F /* ViewController.swift */, + 7BA4FB652340DA820098E20A /* StatusMenuExt.swift */, + 7BA4FB632340D5940098E20A /* Preferences.swift */, + 7BA4FB6E23411FF60098E20A /* PrefsViewController.swift */, 7BED5B7D232D78DB00DF603F /* Assets.xcassets */, 7BED5B7F232D78DB00DF603F /* Main.storyboard */, 7BED5B82232D78DB00DF603F /* Info.plist */, @@ -115,6 +126,7 @@ 7B28BD19232EA8B40073B955 /* DNSManager.swift */, 7BED5BA7232E831B00DF603F /* StreamReader.swift */, 7B28BD1B232EB6EF0073B955 /* LokinetRunner.swift */, + 7BA4FB7223412D700098E20A /* Interfaces.swift */, ); path = lokinet; sourceTree = ""; @@ -286,10 +298,14 @@ buildActionMask = 2147483647; files = ( 7BED5BA8232E831B00DF603F /* StreamReader.swift in Sources */, - 7BED5B7C232D78D900DF603F /* ViewController.swift in Sources */, + 7BA4FB7023411FF60098E20A /* PrefsViewController.swift in Sources */, 7BED5BA6232E7E6600DF603F /* LokinetLog.swift in Sources */, + 7BA4FB662340DA820098E20A /* StatusMenuExt.swift in Sources */, 7B28BD1A232EA8B40073B955 /* DNSManager.swift in Sources */, 7B28BD1C232EB6EF0073B955 /* LokinetRunner.swift in Sources */, + 7BA4FB6C2340F2270098E20A /* WindowsManager.swift in Sources */, + 7BA4FB7323412D700098E20A /* Interfaces.swift in Sources */, + 7BA4FB642340D5940098E20A /* Preferences.swift in Sources */, 7BED5B7A232D78D900DF603F /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/ui-macos/lokinet/AppDelegate.swift b/ui-macos/lokinet/AppDelegate.swift index c95c3e2c2..4f066d70d 100644 --- a/ui-macos/lokinet/AppDelegate.swift +++ b/ui-macos/lokinet/AppDelegate.swift @@ -7,17 +7,149 @@ import Cocoa +let LOG_WINDOW_CONTROLLER: NSWindowController = NSWindowController(window: nil) + @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { + var lokinet: LokinetRunner? = nil + var appender: Appendable? = nil + + var statusBarItem: NSStatusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength) + func applicationWillFinishLaunching(_ notification: Notification) { + if (!Preferences.firstRunDone) { + Preferences.firstRunDone = true + Preferences.restore() + } + } func applicationDidFinishLaunching(_ aNotification: Notification) { - // Insert code here to initialize your application + guard let statusButton = statusBarItem.button else { return } + statusButton.title = "LokiNet" + let statusMenu: NSMenu = NSMenu() + statusMenu.autoenablesItems = false + statusMenu.addItem(withTitle: "LokiNet", action: nil, keyEquivalent: "") + + let runItem: NSMenuItem = { + let item = NSMenuItem( + title: "Run", + action: #selector(runLokinet), + keyEquivalent: "r" + ) + item.target = self + + return item + }() + + let stopItem: NSMenuItem = { + let item = NSMenuItem( + title: "Stop", + action: #selector(stopLokinet), + keyEquivalent: "s" + + ) + item.isEnabled = false + item.target = self + + return item + }() + + let showWindowItem: NSMenuItem = { + let item = NSMenuItem( + title: "Show Window", + action: #selector(showWindow), + keyEquivalent: "w" + ) + item.target = self + + return item + }() + + let quitApplicationItem: NSMenuItem = { + let item = NSMenuItem( + title: "Quit", + action: #selector(terminate), + keyEquivalent: "q") + item.target = self + + return item + }() + + statusMenu.addItems( + .separator(), + runItem, + stopItem, + .separator(), + showWindowItem, + .separator(), + quitApplicationItem + ) + + statusBarItem.menu = statusMenu } func applicationWillTerminate(_ aNotification: Notification) { - // Insert code here to tear down your application + lokinet?.stop() } } +extension AppDelegate { + @objc + func showWindow(sender: NSMenuItem) { + if let vc = WindowsManager.getVC(withIdentifier: "LokinetLogController", ofType: LokinetLogController.self) { + appender = vc.log + let window: NSWindow = { + let w = NSWindow(contentViewController: vc) + + w.styleMask.remove(.fullScreen) + w.styleMask.remove(.resizable) + w.styleMask.remove(.miniaturizable) + + w.level = .floating + + return w + }() + + lokinet?.logAppender = vc.log + + if LOG_WINDOW_CONTROLLER.window == nil { + LOG_WINDOW_CONTROLLER.window = window + } + + LOG_WINDOW_CONTROLLER.showWindow(window) + } + } + + @objc + func runLokinet(sender: NSMenuItem) { + if lokinet == nil { + lokinet = LokinetRunner(interface: Preferences.interfaceName, path: Preferences.lokinetPath) + lokinet?.logAppender = appender + lokinet?.start() + } + + sender.isEnabled = false; + + if let menu = statusBarItem.menu, let stop = menu.item(withTitle: "Stop") { + stop.isEnabled = true + } + } + + @objc + func stopLokinet(_ sender: NSMenuItem) { + lokinet?.stop() + lokinet = nil + + sender.isEnabled = false; + + if let menu = statusBarItem.menu, let start = menu.item(withTitle: "Run") { + start.isEnabled = true + } + } + + @objc + func terminate(_ sender: NSMenuItem) { + NSApp.terminate(sender) + } +} diff --git a/ui-macos/lokinet/Base.lproj/Main.storyboard b/ui-macos/lokinet/Base.lproj/Main.storyboard index 813b7c2a0..ae53972c5 100644 --- a/ui-macos/lokinet/Base.lproj/Main.storyboard +++ b/ui-macos/lokinet/Base.lproj/Main.storyboard @@ -1,5 +1,5 @@ - + @@ -22,7 +22,11 @@ - + + + + + @@ -59,25 +63,6 @@ - - - - - - - - - - - - - - - - - - - @@ -134,93 +119,120 @@ - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + - - + + - - + + - + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - diff --git a/ui-macos/lokinet/DNSManager.swift b/ui-macos/lokinet/DNSManager.swift index 3c713dc81..7185a91fa 100644 --- a/ui-macos/lokinet/DNSManager.swift +++ b/ui-macos/lokinet/DNSManager.swift @@ -15,10 +15,10 @@ func split(str: String?) -> [String] { class DNSManager { static let netSetup = URL(fileURLWithPath: "/usr/sbin/networksetup") - let oldDNSSettings: [String] let interface: String + var oldDNSSettings: [String] = [] - static func getOldSettings(interface: String) -> [String] { + func getOldSettings() -> [String] { let netprocess = Process() netprocess.executableURL = DNSManager.netSetup netprocess.arguments = ["-getdnsservers", interface] @@ -30,13 +30,20 @@ class DNSManager { let data = pipe.fileHandleForReading.readDataToEndOfFile() let asStr = String(data: data, encoding: .ascii) - return split(str: asStr).filter({$0 != "127.0.0.1"}) + if asStr?.contains("There aren't any DNS Servers") ?? true { + return [] + } else { + return split(str: asStr).filter({$0 != "127.0.0.1"}) + } } catch { return [] } } func setNewSettings() throws { + self.oldDNSSettings = getOldSettings() + print("Overriding DNS Settings of \(self.oldDNSSettings)") + let netprocess = Process() netprocess.executableURL = DNSManager.netSetup @@ -50,11 +57,17 @@ class DNSManager { netprocess.executableURL = DNSManager.netSetup netprocess.arguments = ["-setdnsservers", self.interface] - netprocess.arguments?.append(contentsOf: oldDNSSettings) + + if oldDNSSettings.isEmpty { + // networkmsetup uses "networksetup -setdnsservers Empty" to reset + netprocess.arguments?.append("Empty") + } else { + netprocess.arguments?.append(contentsOf: oldDNSSettings) + } do { try netprocess.run() - print("Overriding DNS Settings of \(self.oldDNSSettings)") + print("Resetting DNS Settings to \(self.oldDNSSettings)") } catch { // do nothing } @@ -62,11 +75,5 @@ class DNSManager { init(interface: String) { self.interface = interface - self.oldDNSSettings = DNSManager.getOldSettings(interface: interface) - print("Overriding DNS Settings of \(self.oldDNSSettings)") - } - - deinit { - restoreOldSettings() } } diff --git a/ui-macos/lokinet/LokinetLog.swift b/ui-macos/lokinet/LokinetLog.swift index c1385feae..40849e5a1 100644 --- a/ui-macos/lokinet/LokinetLog.swift +++ b/ui-macos/lokinet/LokinetLog.swift @@ -7,24 +7,29 @@ import AppKit -final class LokinetLog : NSTextView { - - var runner: LokinetRunner? - - override init(frame: NSRect, textContainer: NSTextContainer?) { - super.init(frame: frame, textContainer: textContainer) - self.runner = LokinetRunner(window: self, interface: "Wi-Fi") +class LokinetLogController : NSViewController { + override func viewDidLoad() { + super.viewDidLoad() + } - self.runner?.start() + var log: LokinetLog { + get { + // this is walking down the UI stack. + // TODO: work out a better way of doing this + let scroll = self.view.subviews[0] as! NSScrollView + let clip = scroll.subviews[0] as! NSClipView + let log = clip.subviews[0] as! LokinetLog + return log + } } - required init?(coder: NSCoder) { - super.init(coder: coder) - self.runner = LokinetRunner(window: self, interface: "Wi-Fi") +} - self.runner?.start() - } +protocol Appendable { + func append(string: String) +} +final class LokinetLog : NSTextView, Appendable { func append(string: String) { self.textStorage?.append(NSAttributedString(string: string + "\n")) self.scrollToEndOfDocument(nil) diff --git a/ui-macos/lokinet/LokinetRunner.swift b/ui-macos/lokinet/LokinetRunner.swift index 63ab2d98f..9ba633155 100644 --- a/ui-macos/lokinet/LokinetRunner.swift +++ b/ui-macos/lokinet/LokinetRunner.swift @@ -6,35 +6,18 @@ // import Foundation +import Cocoa class LokinetRunner { - static let PATH_KEY = "lokinetPath" - static let DEFAULT_PATH = URL(fileURLWithPath: "/usr/local/bin/lokinet") - - var lokinetPath: URL? - var process = Process() let dnsManager: DNSManager - weak var window: LokinetLog? - - init(window: LokinetLog, interface: String) { - self.dnsManager = DNSManager(interface: interface) - self.window = window - configure() - } + let lokinetPath: URL + var process = Process() - func configure() { - let defaults = UserDefaults.standard; + var logAppender: Appendable? = nil - self.lokinetPath = defaults.url(forKey: LokinetRunner.PATH_KEY) ?? LokinetRunner.DEFAULT_PATH - defaults.set(self.lokinetPath, forKey: LokinetRunner.PATH_KEY) - } - - func enableDNS() { - do { - try dnsManager.setNewSettings() - } catch { - self.window?.presentError(error) - } + init(interface: String, path: String) { + self.lokinetPath = URL(fileURLWithPath: path) + self.dnsManager = DNSManager(interface: interface) } func start() { @@ -45,32 +28,33 @@ class LokinetRunner { process.standardError = outputPipe do { + try self.dnsManager.setNewSettings() try process.run() } catch { - self.window?.presentError(error) + NSApp.presentError(error) } guard let reader = StreamReader(fh: outputPipe.fileHandleForReading) else { let err = NSError(domain: "lokinet", code: 0, userInfo: ["msg": "Failed to read from filehandle"]) - self.window?.presentError(err) + NSApp.presentError(err) return } DispatchQueue.global(qos: .background).async { for line in reader { + print(line) DispatchQueue.main.async { - self.window?.append(string: line) + self.logAppender?.append(string: line) } } } - - enableDNS() } - deinit { + func stop() { if process.isRunning { process.terminate() process.waitUntilExit() } + dnsManager.restoreOldSettings() } } diff --git a/ui-macos/lokinet/ViewController.swift b/ui-macos/lokinet/ViewController.swift deleted file mode 100644 index 7a95f4c57..000000000 --- a/ui-macos/lokinet/ViewController.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// ViewController.swift -// lokinet -// -// Copyright © 2019 Loki. All rights reserved. -// - -import Cocoa - -class ViewController: NSViewController { - - override func viewDidLoad() { - super.viewDidLoad() - } - - override var representedObject: Any? { - didSet { - // Update the view, if already loaded. - } - } -} -

    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