[unshield] 01/02: New upstream version 1.4.1
Evgeni Golov
evgeni at moszumanska.debian.org
Sat Jan 14 20:02:36 UTC 2017
This is an automated email from the git hooks/post-receive script.
evgeni pushed a commit to branch master
in repository unshield.
commit cab82759f86293b0a9a3ddfe0352ce3e022243da
Author: Evgeni Golov <evgeni at debian.org>
Date: Sat Jan 14 21:02:20 2017 +0100
New upstream version 1.4.1
---
CMakeLists.txt | 9 +-
lib/CMakeLists.txt | 2 +-
lib/helper.c | 54 +++++-
lib/libunshield.c | 1 +
src/CMakeLists.txt | 3 +
src/unshield.c | 69 +++++--
test/v0/avigomanager.sh | 2 +-
test/v0/the-feeble-files-spanish.md5 | 319 +++++++++++++++++++++++++++++++++
test/v0/the-feeble-files-spanish.sh | 38 ++++
test/v5/CVE-2015-1386/CVE-2015-1386.sh | 2 +-
10 files changed, 469 insertions(+), 30 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4d43176..39ae378 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -62,10 +62,11 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libunshield.pc.in ${CMAKE_CURRENT_BIN
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/lib)
-# To force position independent code for static libs on Linux x64
-if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64")
- add_definitions(-fPIC)
-endif()
+# The POSITION_INDEPENDENT_CODE property was introduced in cmake 2.8.10/CMP0018
+# as we are targeting cmake 2.8.7, we can't use
+# set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+# let's fall back to add_definitions for now
+add_definitions(-fPIC)
add_subdirectory(lib)
add_subdirectory(src)
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 917c8b7..18e17cf 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -37,7 +37,7 @@ else()
endif()
set_target_properties(libunshield PROPERTIES OUTPUT_NAME unshield)
-set_target_properties(libunshield PROPERTIES SOVERSION ${PROJECT_VERSION})
+set_target_properties(libunshield PROPERTIES VERSION 0.0.0 SOVERSION 0)
install(TARGETS libunshield RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES libunshield.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
\ No newline at end of file
diff --git a/lib/helper.c b/lib/helper.c
index d23cca5..54fa870 100644
--- a/lib/helper.c
+++ b/lib/helper.c
@@ -1,4 +1,5 @@
#define _BSD_SOURCE 1
+#define _DEFAULT_SOURCE 1
#include "internal.h"
#include "log.h"
#include "convert_utf/ConvertUTF.h"
@@ -8,6 +9,16 @@
#include <string.h>
#include <errno.h>
+#ifdef _WIN32
+ #define realpath(N,R) _fullpath((R),(N),_MAX_PATH)
+ #include <direct.h>
+ #ifndef PATH_MAX
+ #define PATH_MAX _MAX_PATH
+ #endif
+#else
+ #include <limits.h>
+#endif
+
#define VERBOSE 0
FILE* unshield_fopen_for_reading(Unshield* unshield, int index, const char* suffix)
@@ -15,13 +26,35 @@ FILE* unshield_fopen_for_reading(Unshield* unshield, int index, const char* suff
if (unshield && unshield->filename_pattern)
{
FILE* result = NULL;
- char filename[256];
- char dirname[256];
+ char* filename;
+ char* dirname;
char * p = strrchr(unshield->filename_pattern, '/');
const char *q;
struct dirent *dent = NULL;
DIR *sourcedir;
- snprintf(filename, sizeof(filename), unshield->filename_pattern, index, suffix);
+ long int path_max;
+
+ #ifdef PATH_MAX
+ path_max = PATH_MAX;
+ #else
+ path_max = pathconf(prefix, _PC_PATH_MAX);
+ if (path_max <= 0)
+ path_max = 4096;
+ #endif
+
+ dirname = malloc(path_max);
+ filename = malloc(path_max);
+ if (filename == NULL || dirname == NULL)
+ {
+ unshield_error("Unable to allocate memory.\n");
+ goto exit;
+ }
+
+ if(snprintf(filename, path_max, unshield->filename_pattern, index, suffix)>=path_max)
+ {
+ unshield_error("Pathname exceeds system limits.\n");
+ goto exit;
+ }
q=strrchr(filename,'/');
if (q)
q++;
@@ -30,11 +63,11 @@ FILE* unshield_fopen_for_reading(Unshield* unshield, int index, const char* suff
if (p)
{
- strncpy( dirname, unshield->filename_pattern,sizeof(dirname));
- if ((unsigned int)(p-unshield->filename_pattern) > sizeof(dirname))
+ strncpy( dirname, unshield->filename_pattern,path_max);
+ if ((unsigned int)(p-unshield->filename_pattern) > path_max)
{
unshield_trace("WARN: size\n");
- dirname[sizeof(dirname)-1]=0;
+ dirname[path_max-1]=0;
}
else
dirname[(p-unshield->filename_pattern)] = 0;
@@ -61,7 +94,11 @@ FILE* unshield_fopen_for_reading(Unshield* unshield, int index, const char* suff
goto exit;
}
else
- snprintf(filename, sizeof(filename), "%s/%s", dirname, dent->d_name);
+ if(snprintf(filename, path_max, "%s/%s", dirname, dent->d_name)>=path_max)
+ {
+ unshield_error("Pathname exceeds system limits.\n");
+ goto exit;
+ }
}
else
unshield_trace("Could not open directory %s error %s\n", dirname, strerror(errno));
@@ -74,7 +111,8 @@ FILE* unshield_fopen_for_reading(Unshield* unshield, int index, const char* suff
exit:
if (sourcedir)
closedir(sourcedir);
-
+ free(filename);
+ free(dirname);
return result;
}
diff --git a/lib/libunshield.c b/lib/libunshield.c
index 8b10088..f953116 100644
--- a/lib/libunshield.c
+++ b/lib/libunshield.c
@@ -1,5 +1,6 @@
/* $Id$ */
#define _BSD_SOURCE 1
+#define _DEFAULT_SOURCE 1
#include "internal.h"
#include "log.h"
#include <assert.h>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2129ed0..08dbb63 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,4 +1,7 @@
+LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
+IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
+ENDIF("${isSystemDir}" STREQUAL "-1")
add_executable(unshield "unshield.c")
target_link_libraries(unshield libunshield)
diff --git a/src/unshield.c b/src/unshield.c
index b2299fd..d42ac85 100644
--- a/src/unshield.c
+++ b/src/unshield.c
@@ -1,6 +1,7 @@
/* $Id$ */
#ifdef __linux__
#define _BSD_SOURCE 1
+#define _DEFAULT_SOURCE 1
#define _POSIX_C_SOURCE 2
#endif
#include <sys/types.h>
@@ -39,6 +40,10 @@
#include <limits.h>
#endif
+#ifndef NAME_MAX
+ #define NAME_MAX FILENAME_MAX
+#endif
+
typedef enum
{
OVERWRITE_ASK,
@@ -117,6 +122,8 @@ static bool make_sure_directory_exists(const char* directory)/*{{{*/
#endif
{
fprintf(stderr, "Failed to create directory %s\n", directory);
+ if(strlen(directory)>NAME_MAX)
+ fprintf(stderr, "Directory name must be less than %i characters\n", NAME_MAX+1);
goto exit;
}
}
@@ -359,8 +366,8 @@ static bool handle_parameters(
static bool extract_file(Unshield* unshield, const char* prefix, int index)
{
bool success;
- char dirname[256];
- char filename[256];
+ char* dirname;
+ char* filename;
char* p;
int directory = unshield_file_directory(unshield, index);
long int path_max;
@@ -370,13 +377,15 @@ static bool extract_file(Unshield* unshield, const char* prefix, int index)
#ifdef PATH_MAX
path_max = PATH_MAX;
#else
- path_max = pathconf(path, _PC_PATH_MAX);
+ path_max = pathconf(prefix, _PC_PATH_MAX);
if (path_max <= 0)
path_max = 4096;
#endif
real_output_directory = malloc(path_max);
real_filename = malloc(path_max);
+ dirname = malloc(path_max);
+ filename = malloc(path_max);
if (real_output_directory == NULL || real_filename == NULL)
{
fprintf(stderr,"Unable to allocate memory.");
@@ -384,22 +393,53 @@ static bool extract_file(Unshield* unshield, const char* prefix, int index)
goto exit;
}
- strcpy(dirname, output_directory);
- strcat(dirname, "/");
- if (prefix && prefix[0])
+ if(strlen(output_directory) < path_max-1)
{
- strcat(dirname, prefix);
+ strncpy(dirname, output_directory,path_max-1);
+ if (path_max > 0)
+ dirname[path_max - 1]= '\0';
strcat(dirname, "/");
}
+ else
+ {
+ fprintf(stderr, "\nOutput directory exceeds maximum path length.\n");
+ success = false;
+ goto exit;
+ }
+
+
+ if (prefix && prefix[0])
+ {
+ if(strlen(dirname)+strlen(prefix) < path_max-1)
+ {
+ strcat(dirname, prefix);
+ strcat(dirname, "/");
+ }
+ else
+ {
+ fprintf(stderr, "\nOutput directory exceeds maximum path length.\n");
+ success = false;
+ goto exit;
+ }
+ }
if (!junk_paths && directory >= 0)
{
const char* tmp = unshield_directory_name(unshield, directory);
if (tmp && tmp[0])
{
- strcat(dirname, tmp);
- strcat(dirname, "/");
+ if(strlen(dirname)+strlen(tmp) < path_max-1)
+ {
+ strcat(dirname, tmp);
+ strcat(dirname, "/");
+ }
+ else
+ {
+ fprintf(stderr, "\nOutput directory exceeds maximum path length.\n");
+ success = false;
+ goto exit;
+ }
}
}
@@ -447,7 +487,7 @@ static bool extract_file(Unshield* unshield, const char* prefix, int index)
make_sure_directory_exists(dirname);
- snprintf(filename, sizeof(filename), "%s%s",
+ snprintf(filename, path_max, "%s%s",
dirname, unshield_file_name(unshield, index));
for (p = filename + strlen(dirname); *p != '\0'; p++)
@@ -480,11 +520,8 @@ static bool extract_file(Unshield* unshield, const char* prefix, int index)
fprintf(stderr, "\n\nExtraction failed.\n");
fprintf(stderr, "Possible directory traversal attack for: %s\n", filename);
fprintf(stderr, "To be placed at: %s\n\n", real_filename);
- exit_status = 1;
success = false;
- free(real_filename);
- free(real_output_directory);
- return success;
+ goto exit;
}
printf(" extracting: %s\n", filename);
@@ -512,6 +549,8 @@ exit:
}
free(real_filename);
free(real_output_directory);
+ free(dirname);
+ free(filename);
return success;
}
@@ -629,7 +668,7 @@ static int list_files_helper(Unshield* unshield, const char* prefix, int first,
for (i = first; i <= last; i++)
{
- char dirname[256];
+ char dirname[4096];
if (unshield_file_is_valid(unshield, i) && should_process_file(unshield, i))
{
diff --git a/test/v0/avigomanager.sh b/test/v0/avigomanager.sh
index 4e66a77..de2cff4 100755
--- a/test/v0/avigomanager.sh
+++ b/test/v0/avigomanager.sh
@@ -2,7 +2,7 @@
set -e
cd `dirname $0`
MD5_FILE=`pwd`/`basename $0 .sh`.md5
-UNSHIELD=/var/tmp/unshield/bin/unshield
+UNSHIELD=${UNSHIELD:-/var/tmp/unshield/bin/unshield}
if [ \! -x ${UNSHIELD} ]; then
echo "unshield executable not found at $UNSHIELD" >&2
diff --git a/test/v0/the-feeble-files-spanish.md5 b/test/v0/the-feeble-files-spanish.md5
new file mode 100644
index 0000000..7cd0688
--- /dev/null
+++ b/test/v0/the-feeble-files-spanish.md5
@@ -0,0 +1,319 @@
+f77a2f7632408752c29e0beab0ee3d66 ./Essential_Game_Files/0011.VGA
+d92b95f8b41cadd2daa8fe98b0e66607 ./Essential_Game_Files/0012.VGA
+702b790944582ddbb9755b7228e8f147 ./Essential_Game_Files/0021.VGA
+95e08584433213bbbe7715d03ed057d5 ./Essential_Game_Files/0022.VGA
+de4f46b96872f50ed9a9bc86e3f3b74f ./Essential_Game_Files/0071.VGA
+c9984357a5534e05b9d3f7da36856730 ./Essential_Game_Files/0072.VGA
+a884cd4b8597f40e9557ef4a7ca80031 ./Essential_Game_Files/0081.VGA
+e465c315cbe92ba02821c8e9ff927777 ./Essential_Game_Files/0082.VGA
+a1af4636fe0d3286d17d0aa6ca89fda4 ./Essential_Game_Files/0091.fst
+1f8c398703d331547b1b0c33de176eed ./Essential_Game_Files/0091.slw
+a1af4636fe0d3286d17d0aa6ca89fda4 ./Essential_Game_Files/0091.VGA
+34f3dd6e1b6978a0b05ef8b0c33557f4 ./Essential_Game_Files/0092.VGA
+b089d0826fcd31f4cee07821c421f8b8 ./Essential_Game_Files/0111.VGA
+81a2356eaa10b64e96c1df514c613ad7 ./Essential_Game_Files/0112.VGA
+1127cc5ca705e233c8d5ce16f6661ab3 ./Essential_Game_Files/0121.VGA
+e00a8980b4e908bad7649ded80ac90ad ./Essential_Game_Files/0122.VGA
+dc11c5123a5abf5ec80fd83df3ddf127 ./Essential_Game_Files/0131.VGA
+15ab7ba9d8fb87e2f81ded0948718eba ./Essential_Game_Files/0132.VGA
+424c1aa5ba80d8fff10c297a7b25a311 ./Essential_Game_Files/0141.VGA
+77b7feaee792dd2cb0e0259d0738307d ./Essential_Game_Files/0142.VGA
+4e7c1545d3d9380775f6050793a08cae ./Essential_Game_Files/0151.VGA
+d2591384e041476a671a67a3939ee3ce ./Essential_Game_Files/0152.VGA
+3c8b32725559422b302c4bffe97e8ad4 ./Essential_Game_Files/0161.VGA
+9c9e47ec2a14b345db3f7bfc9b17fddd ./Essential_Game_Files/0162.VGA
+f0b876165c7947fce2e3fde53fdc3ffb ./Essential_Game_Files/0163.vga
+db9f832c74ad1ad8a095de4e5edaf340 ./Essential_Game_Files/0171.VGA
+913766b7aee2242cf48d6cee6f16c7f7 ./Essential_Game_Files/0172.VGA
+a3f245749e396ed70acfcf175b125b45 ./Essential_Game_Files/0181.VGA
+f9be2faebc1be752d9013e1dd8c8a53c ./Essential_Game_Files/0182.VGA
+b6454c471d265ae06ad56dfb20c0eff9 ./Essential_Game_Files/0191.VGA
+06bd665e453690dbd798cf43f0879b63 ./Essential_Game_Files/0192.VGA
+f0b876165c7947fce2e3fde53fdc3ffb ./Essential_Game_Files/0193.vga
+62d294bc4a70ef39e44c82db15e1dc47 ./Essential_Game_Files/1101.VGA
+9e436e2f74476ed57f81bfb46baff8c5 ./Essential_Game_Files/1102.VGA
+8c5e9afbdafff2145195262760d8d51d ./Essential_Game_Files/1111.VGA
+0cd1408697a4454b0690a92723654546 ./Essential_Game_Files/1112.VGA
+d6bc66bbf805cfad874dda37d54caf84 ./Essential_Game_Files/1121.VGA
+b6c6259af57589a6315a516a09dc07a8 ./Essential_Game_Files/1122.VGA
+0d30177c9075d5e2d40de5b1a1281a5b ./Essential_Game_Files/1131.VGA
+d68b6015a7d7bd7c1f755a8af008fc8b ./Essential_Game_Files/1132.VGA
+a1a36bac72c805ad3b247f5dce4e9f6b ./Essential_Game_Files/1141.VGA
+b6fd933333588eb55a2b100af503466e ./Essential_Game_Files/1142.VGA
+cedc3894f34e896da3cd6922412fb60f ./Essential_Game_Files/1151.VGA
+ee4925c01ba2ee625b54388d61097ffa ./Essential_Game_Files/1152.VGA
+ac06944d7925d141c01238f6a0fe8ca0 ./Essential_Game_Files/1161.VGA
+51252981e969ad1d9f92cd9921199eb6 ./Essential_Game_Files/1162.VGA
+b05ab0b03954ff829ff6945059963c2f ./Essential_Game_Files/1171.VGA
+69dd06969d3b64c9b1759fd0b792fedb ./Essential_Game_Files/1172.VGA
+89f7e8e830e63cd91a2741041062c01a ./Essential_Game_Files/1181.VGA
+0fdea1a722181204786346ebfab323c5 ./Essential_Game_Files/1182.VGA
+b3985bfd0448c0876eb3814576e47a86 ./Essential_Game_Files/1191.VGA
+737f977e11c16b3ad8e9d83e3532a27d ./Essential_Game_Files/1192.VGA
+898ebfe7fc3006c286245d6058c09e35 ./Essential_Game_Files/1201.VGA
+2f8b8f89c6779b1239a933e257528db4 ./Essential_Game_Files/1202.VGA
+b3809b1968fcae950682df407003883b ./Essential_Game_Files/1211.VGA
+4024f6a7dae0edb52a378db169e77b32 ./Essential_Game_Files/1212.VGA
+7364747aac14421f05a843fa1136e65b ./Essential_Game_Files/1221.VGA
+8d6daa45a034f77bac1d1c53503d658b ./Essential_Game_Files/1222.VGA
+bb9454789fa0350b079caeeff2991d5b ./Essential_Game_Files/1231.VGA
+ed32aa7e3f3141bbb007706ec3468162 ./Essential_Game_Files/1232.VGA
+34ce97569163bd476d69eb4b073aa107 ./Essential_Game_Files/1241.VGA
+e1d4c78d2628cc925741f0168b4cf50d ./Essential_Game_Files/1242.VGA
+698087f497a600946a00708e89ea6213 ./Essential_Game_Files/1251.VGA
+b1af97c56743e30d61b1bd73d716e2e8 ./Essential_Game_Files/1252.VGA
+5ccaca4a804080c7046fd093ceb3c58c ./Essential_Game_Files/1261.VGA
+e20e77a408fdba0ee805d4b984cb81e1 ./Essential_Game_Files/1262.VGA
+f976644048d7b8ce7067e2f47728981f ./Essential_Game_Files/1271.VGA
+4fd983abc568d148a756a6e0f9e3fccc ./Essential_Game_Files/1272.VGA
+6fb3bd85891960cbd03e5bede83a5164 ./Essential_Game_Files/1281.VGA
+7d6743c36079e05e0b8e742dbc6c6674 ./Essential_Game_Files/1282.VGA
+90a663c8049219064fc225f666eec273 ./Essential_Game_Files/1291.VGA
+ac93dc37767c306db799554f7696adff ./Essential_Game_Files/1292.VGA
+9b6a75c089e2d4b9bef591dab165392c ./Essential_Game_Files/1301.VGA
+6fc4f5bf9e22542492769559b65c3ec0 ./Essential_Game_Files/1302.VGA
+2305d4bb44b3d03cc301d71ea1dd00e4 ./Essential_Game_Files/1311.VGA
+7a9b929200fbfbc57e16773eabd72349 ./Essential_Game_Files/1312.VGA
+3741748a98403c8734a965f0f4ab639e ./Essential_Game_Files/1331.VGA
+ac7d0d37ecdb10e50d14ed612e8cbf79 ./Essential_Game_Files/1332.VGA
+338b8621806b622bf34aa88928591de5 ./Essential_Game_Files/1481.VGA
+8a84e75f9cb6137e21c299cd5aa5823e ./Essential_Game_Files/1482.VGA
+f0f39c94ef7ab9e66cad3b5c360a9717 ./Essential_Game_Files/1491.VGA
+b069ffaeca03749260cc55c65ebfa722 ./Essential_Game_Files/1492.VGA
+e5ff3ada2e94d682a56905beb8382a67 ./Essential_Game_Files/1501.VGA
+3d73e76419585936e141fa6866fd4c21 ./Essential_Game_Files/1502.VGA
+d1e21c85cc5a400638526d1878112091 ./Essential_Game_Files/1511.VGA
+786aa1579ee2dea9771ac0b61eb1d88e ./Essential_Game_Files/1512.VGA
+1efce191b367fd655a7e8e6d586a223a ./Essential_Game_Files/1521.VGA
+121c98babd5afd30e91f6807b2543f7d ./Essential_Game_Files/1522.VGA
+bc2939dd554564a65407b7be01ab0a8c ./Essential_Game_Files/1531.VGA
+11ce4c6499631d2e460607b18a90183d ./Essential_Game_Files/1532.VGA
+8f35ac30a7f0c025ddad8bf32a1e1a73 ./Essential_Game_Files/1541.VGA
+a82c33dae03b5089d5a60a5bd8c0ac09 ./Essential_Game_Files/1542.VGA
+726e491cec0d18880d8b78cdbd50d19b ./Essential_Game_Files/1551.VGA
+32077dd343f45329bc4d3112c56e87ff ./Essential_Game_Files/1552.VGA
+a4cf19056b228a02c2bf32b31082326e ./Essential_Game_Files/1561.VGA
+782da97fb7e703da8fd990c152a78012 ./Essential_Game_Files/1562.VGA
+80885bd0f3734f989653c4782c56e5d4 ./Essential_Game_Files/1571.VGA
+903aebe1ab59863cd5f70344fe3317c9 ./Essential_Game_Files/1572.VGA
+82c306723db9d3389654f78c58b0de23 ./Essential_Game_Files/1581.VGA
+600154f723f0b76a0fb6f341f2941caa ./Essential_Game_Files/1582.VGA
+f45b09c0b1eb3ce58f1f48497b14ba3d ./Essential_Game_Files/1591.VGA
+e7b21fdd3017e4c40696789799ae5a9c ./Essential_Game_Files/1592.VGA
+c8cbc1f3c11db6149275fa318478dee5 ./Essential_Game_Files/1601.VGA
+9faf19c66b4c3da420ee854676f562d0 ./Essential_Game_Files/1602.VGA
+2c279669bf94928727ee218f371b1793 ./Essential_Game_Files/1611.VGA
+038846d32d0819380fca2fa028c17304 ./Essential_Game_Files/1612.VGA
+342c5835e2bb1b1d78769940c83b02a0 ./Essential_Game_Files/1621.VGA
+274fdffadc4f4b8cde034fe849d70b6a ./Essential_Game_Files/1622.VGA
+c30500ebd8262fc184b4fd9563e60bce ./Essential_Game_Files/1631.VGA
+0d8c3c62a2ea4a71a9cdfbc6a4386cd8 ./Essential_Game_Files/1632.VGA
+378b2b079f4ad4dd1fe864521973e0b9 ./Essential_Game_Files/1641.VGA
+7893ef7fdd5299dd703d1a7f18d4e448 ./Essential_Game_Files/1642.VGA
+ddf4c52413f1d42cea807b8bdacaf5e7 ./Essential_Game_Files/1651.VGA
+b3b5f63503b1510eb18ae4d15f787ab9 ./Essential_Game_Files/1652.VGA
+506c6eb8c776e1dd1f5557cf155f5641 ./Essential_Game_Files/1661.VGA
+f2fc995fa47a7b0a6eee94e79c83efc0 ./Essential_Game_Files/1662.VGA
+670310ad34d3dad9c48c622aa3db8fcf ./Essential_Game_Files/1671.VGA
+4e4d504e1c0cc998c365eecfb7e122c7 ./Essential_Game_Files/1672.VGA
+a64dc64018ab021002b2958f7c2b255c ./Essential_Game_Files/1681.VGA
+c88f26d2037af9cc6231a09ed36efbcc ./Essential_Game_Files/1682.VGA
+307006e98381d7707c871e7c6d6402fa ./Essential_Game_Files/1691.VGA
+cfc3f1f01b43d5c7a72451250c57f6f2 ./Essential_Game_Files/1692.VGA
+788dd8e2cd6140a7bd94785fe36930dd ./Essential_Game_Files/1701.VGA
+4ff08bbebe92c6c8592a3fe454b1b095 ./Essential_Game_Files/1702.VGA
+5f11f1d6b9eeb2e7a3957e3faae5a3e3 ./Essential_Game_Files/1711.VGA
+68a729ae1d001d35db99e930db7de219 ./Essential_Game_Files/1712.VGA
+98c044a423bbb7bd7274072960a2e9f6 ./Essential_Game_Files/1731.VGA
+88daa0b4de221496dedf63d9d3367ef2 ./Essential_Game_Files/1732.VGA
+c53745039b6466033b6647462aff4945 ./Essential_Game_Files/1781.VGA
+c836cc779f4a2482a625ffbfca2619dc ./Essential_Game_Files/1782.VGA
+e9a4e093d54136845d584bda2a7f5e38 ./Essential_Game_Files/1791.VGA
+ac820b2784043ef4c352adba4965c1c2 ./Essential_Game_Files/1792.VGA
+a3f9a3a4c8b5943288465f9a4bf66ec1 ./Essential_Game_Files/1801.VGA
+630a8a296ed0943289c5cd52441e9151 ./Essential_Game_Files/1802.VGA
+0bac8878919f5ec3c282f120521bb50b ./Essential_Game_Files/1811.VGA
+87a1da2123cd63d649c64a7bcefafde7 ./Essential_Game_Files/1812.VGA
+05e4381ab638fae633480ffadf73915b ./Essential_Game_Files/1821.VGA
+9fe8aa1a06a82b4ff94b8185ba848dd0 ./Essential_Game_Files/1822.VGA
+456c7e4df8dda20fc4191a2ab451a23a ./Essential_Game_Files/1831.VGA
+197cb37e6920ee2d62094d822d9e29b8 ./Essential_Game_Files/1832.VGA
+4d1e8a2c6c61493c1d531ba17ec46e06 ./Essential_Game_Files/1841.VGA
+9b8bf064d6c967c6ac713dfaa84d9501 ./Essential_Game_Files/1842.VGA
+b24e6f1b5ab2a917c0ab3a1494fd0659 ./Essential_Game_Files/1851.VGA
+8529e139e90d3b76bda87c0b3a0bc427 ./Essential_Game_Files/1852.VGA
+b51e9317ff2fb65971820e306cbf0a73 ./Essential_Game_Files/1861.VGA
+8a385b653e0deb0483967193b11bae4e ./Essential_Game_Files/1862.VGA
+f8d5f44fca5d761d1f00b7713e02988e ./Essential_Game_Files/1871.VGA
+c4f7ec874c7165ad245d4178179669f1 ./Essential_Game_Files/1872.VGA
+7481e4db932e6c1114acc52991183813 ./Essential_Game_Files/1881.VGA
+b1b359f5a913fbac6bbb9b4d19c61f2d ./Essential_Game_Files/1882.VGA
+b2ff7049dcf6b38912a3649120d5cc6c ./Essential_Game_Files/1891.VGA
+56a6d12448b383c9cf4f966131e9fd48 ./Essential_Game_Files/1892.VGA
+91bdbcc4559138f5a21457deb7f70a03 ./Essential_Game_Files/1901.VGA
+a284ac4e9e8a4df4e830a8dbec247739 ./Essential_Game_Files/1902.VGA
+74c17cbafa309194732fb0c00dd95375 ./Essential_Game_Files/1911.VGA
+b6026825655bea901d1e7deea46106cb ./Essential_Game_Files/1912.VGA
+59665be5b0899223b77e70dfaf55ac69 ./Essential_Game_Files/1921.VGA
+4534fa783f9a2f9f2b2d00e28d1df42c ./Essential_Game_Files/1922.VGA
+a0e3de5f40aa459ef10a295f405e16e6 ./Essential_Game_Files/1931.VGA
+edfbcbdb2af8d24c8bfcd39de6b2980e ./Essential_Game_Files/1932.VGA
+3ef8366f6ada98ca4228fa6e9ac5231a ./Essential_Game_Files/1941.VGA
+bafc7bde7289261c822522bc886d7b99 ./Essential_Game_Files/1942.VGA
+72e4fc26559a8a8f385dfc90385c8552 ./Essential_Game_Files/1951.VGA
+4bb17129b4811fc70380e3f4c0b61943 ./Essential_Game_Files/1952.VGA
+37dc35fd7eba04d0df200152e39d88b1 ./Essential_Game_Files/1961.VGA
+0ac6854bac184b9e0869bd7477cf312e ./Essential_Game_Files/1962.VGA
+910a7c58b33d8ef3d125f1fef552c387 ./Essential_Game_Files/1971.VGA
+ffba66f7b272cf0741c038608b075c67 ./Essential_Game_Files/1972.VGA
+4c074f4f6802a87b3b3a40ea48204fba ./Essential_Game_Files/1981.VGA
+599f81669d4985b0539916191b3933f9 ./Essential_Game_Files/1982.VGA
+f8f758023dc5acc97c734efd1dc38289 ./Essential_Game_Files/1991.VGA
+fb2725ca20a497c88e3e906b6b6e11d0 ./Essential_Game_Files/1992.VGA
+76207006986c448e87f4b2b722e27ccd ./Essential_Game_Files/2001.VGA
+8388bc06ce0949dbab302a8dd61aac89 ./Essential_Game_Files/2002.VGA
+c7da916b388d56179dc7f123a80ee100 ./Essential_Game_Files/2011.VGA
+1782f9682ca097688f2cc1817b841788 ./Essential_Game_Files/2012.VGA
+7d858a740d615b45543775716cc5809b ./Essential_Game_Files/2031.VGA
+f5c453b0dd535585504b3a84299d9c73 ./Essential_Game_Files/2032.VGA
+c372995d226110ccd998bc32be528ab7 ./Essential_Game_Files/2081.VGA
+8eb186cb31972c79ef218329e7b41229 ./Essential_Game_Files/2082.VGA
+a002752971d770831970e9dac980d73c ./Essential_Game_Files/2091.VGA
+6ad24fb52539de2f5dae6ba68211811f ./Essential_Game_Files/2092.VGA
+b05ca02618030684246893c84531d4da ./Essential_Game_Files/2101.VGA
+4988325e603c726a35f94ac8216421bd ./Essential_Game_Files/2102.VGA
+6e2af23932f5e31c1d28415686985cba ./Essential_Game_Files/2111.VGA
+6d413abed1e45de7b001d4ee5cafca7c ./Essential_Game_Files/2112.VGA
+3d993e487b20a548d2111d51e93abe96 ./Essential_Game_Files/2121.VGA
+92533aba54fb5dbd8bb3185a26f617f8 ./Essential_Game_Files/2122.VGA
+014b9aa02c536d9c63caeaba00868eba ./Essential_Game_Files/2131.VGA
+1f5a1d19324b5076c6d46240e3b1b41b ./Essential_Game_Files/2132.VGA
+ad288a6147b1961501408a28ad6ec09d ./Essential_Game_Files/2141.VGA
+06bf52a316b0583b4119db39ab99402e ./Essential_Game_Files/2142.VGA
+f03bb4b2b1febd48941392d930b6b628 ./Essential_Game_Files/2151.VGA
+3598ce89ac8683338792bb1f09e23660 ./Essential_Game_Files/2152.VGA
+999bc48efb6ab23533349f51f7f633e1 ./Essential_Game_Files/2161.VGA
+3c0356bfb35f3d1bbff6fa9f1b1f03d7 ./Essential_Game_Files/2162.VGA
+8651a075902cbd628874c05cca5f5ecc ./Essential_Game_Files/2171.VGA
+7f1979d31c9f0434c788d663c63a2619 ./Essential_Game_Files/2172.VGA
+7e2e8b971f297be6f590074cb10aeb85 ./Essential_Game_Files/2181.VGA
+b5f1db3aa2b9d6d11fe646c7f6bd0207 ./Essential_Game_Files/2182.VGA
+44735dcd64a24f528bc0f6661d83acb4 ./Essential_Game_Files/2191.VGA
+36868fca049e24924d372dfbc9c9508a ./Essential_Game_Files/2192.VGA
+8c7787ac2e33cd80cc9c762aa20b9a60 ./Essential_Game_Files/2201.VGA
+36c7e4b15dd6d65b85a3413431d5e572 ./Essential_Game_Files/2202.VGA
+98b38d95e2e84e4a7716fcf929d01845 ./Essential_Game_Files/2211.VGA
+fa5a040398498ed4f9abac267fd6f46c ./Essential_Game_Files/2212.VGA
+954b5e5046713f2e6647dc713c90795a ./Essential_Game_Files/2221.VGA
+acfc543fe2830bad6abc4f5803fd5afb ./Essential_Game_Files/2222.VGA
+b1677301a1c83baddb98f538e1e7e905 ./Essential_Game_Files/2231.VGA
+b00f7c4b9ad4e1b02cced028a1ee1316 ./Essential_Game_Files/2232.VGA
+192418ff6dbe40f847a2c57abda1379f ./Essential_Game_Files/2241.VGA
+f49acbd2a28a1ba3abff4243beb10169 ./Essential_Game_Files/2242.VGA
+b81f4715ed83e27da66c3bd6ae41990d ./Essential_Game_Files/2251.VGA
+11e8d550a5c900b32e6549b7606c6454 ./Essential_Game_Files/2252.VGA
+0cb960a584687ec64da0241c15fe6557 ./Essential_Game_Files/2261.VGA
+395cd6d9d7e10e45929344c1d2171f51 ./Essential_Game_Files/2262.VGA
+53e52e94b0256b968ff87e285c787804 ./Essential_Game_Files/2271.VGA
+4b91a65435425e08e5aec48c124d672f ./Essential_Game_Files/2272.VGA
+82ba12c23bbf34cf69f000a876e1347f ./Essential_Game_Files/2281.VGA
+3c8103092f09ac2da548256143f10c75 ./Essential_Game_Files/2282.VGA
+f85961c60c6a9260dcb9d1b6461d2257 ./Essential_Game_Files/2291.VGA
+11a3c497cda55d1c7ba3ed616d8eb17d ./Essential_Game_Files/2292.VGA
+e889c6dc9e4cead3a2527c0232b50cd4 ./Essential_Game_Files/2301.VGA
+c71ddf8137ea8033dec8ba91746f9c86 ./Essential_Game_Files/2302.VGA
+c9179570006769e13b55faa9f85d062f ./Essential_Game_Files/2311.VGA
+13f73e64b06ff9699f18486be4799a0c ./Essential_Game_Files/2312.VGA
+351f215213ca37127114a8ead93dc143 ./Essential_Game_Files/2331.VGA
+bfd9efa445d5d1d99d0e658cfea040f8 ./Essential_Game_Files/2332.VGA
+641f9bb60ad62328bafda1e61a4a9493 ./Essential_Game_Files/3081.VGA
+586bd630d6d33e2fcec944b7177f0317 ./Essential_Game_Files/3082.VGA
+469d45b820d841cc896fc3496cdd96dc ./Essential_Game_Files/3091.VGA
+a85b8268dc5753c1cd821c266ff6a74f ./Essential_Game_Files/3092.VGA
+854556ee6e2027687c570a7c6afdcbbf ./Essential_Game_Files/3101.VGA
+9ea6b3c7ce56aadcf86f1926e5c9b3e0 ./Essential_Game_Files/3102.VGA
+2548c35a794702194e91405d317bf478 ./Essential_Game_Files/3111.VGA
+51552f158c3bb62ccb9ddfd1f0ff2327 ./Essential_Game_Files/3112.VGA
+f604de01409a18359053aca51778bbd2 ./Essential_Game_Files/3121.VGA
+09c0751817996596d17944c411b2a6b6 ./Essential_Game_Files/3122.VGA
+315ed5cd6409e5ad104831acdce4c870 ./Essential_Game_Files/3131.VGA
+96e9d946dfa3dbc20fc40bf6c8f116a2 ./Essential_Game_Files/3132.VGA
+3a7c86afdf6e76d0cb6e1c90ea056e79 ./Essential_Game_Files/3141.VGA
+09eef60be0f9547424b86f75914fe99a ./Essential_Game_Files/3142.VGA
+fb3a76e829736bfdc5634b102440fe2a ./Essential_Game_Files/3151.VGA
+d9bcf154ec98dea1079390e9cdd0ced4 ./Essential_Game_Files/3152.VGA
+cc6c3fd714b9f507eaba29b463482c0d ./Essential_Game_Files/3161.VGA
+0e3fe912b9fba729c6e70c9b8063afda ./Essential_Game_Files/3162.VGA
+cfc42f8f5a1760eaecd2a8ce518ef605 ./Essential_Game_Files/3171.VGA
+5beb574fbb5e092ccc9778fc00b31733 ./Essential_Game_Files/3172.VGA
+fed6730618a4c98efb99b07d9fdb77df ./Essential_Game_Files/3181.VGA
+0f591dc333891cdfef91737d964c3439 ./Essential_Game_Files/3182.VGA
+5f358183d95b1dae608dd4b8213b46fc ./Essential_Game_Files/3191.VGA
+51f56a4fa58e5b57b626f8a4b6b1eadd ./Essential_Game_Files/3192.VGA
+cc9e195f163eb32bde0bfea8ef99c744 ./Essential_Game_Files/3201.VGA
+9d0f18393479cd6c5907598436fdeeaa ./Essential_Game_Files/3202.VGA
+bd2bc7335e61ed6d5a452430542a871a ./Essential_Game_Files/3211.VGA
+13eff9f493356cd2687facc6172eca95 ./Essential_Game_Files/3212.VGA
+4794ca9a6588dd9effba904e58f06a92 ./Essential_Game_Files/3221.VGA
+33da9dca33f1f894046e26561c8104a6 ./Essential_Game_Files/3222.VGA
+e7d4d01abd11a1a7b6913696aea9fe32 ./Essential_Game_Files/3231.VGA
+d46406bc43e7a96f3d36c5ef6ac76594 ./Essential_Game_Files/3232.VGA
+4d1f25a113f1193d5be94918b0b89d11 ./Essential_Game_Files/3241.VGA
+f8b77a428a76f77368c54a69baec3a93 ./Essential_Game_Files/3242.VGA
+ebedf64ff02c4ee75d5f66af9177c8ac ./Essential_Game_Files/3251.VGA
+8ed0d4ed5ad93e41c730ff786b25e2ca ./Essential_Game_Files/3252.VGA
+bd974efc711841c9e5184ba0cc910973 ./Essential_Game_Files/3261.VGA
+f4104d2e8a88cf79181a7fee1236bc7b ./Essential_Game_Files/3262.VGA
+10a8b55ef89c778b47ae6f8e9b83070d ./Essential_Game_Files/3271.VGA
+c1e07bf55bae6c675bb902f156a1c0a0 ./Essential_Game_Files/3272.VGA
+de77d1f526caedb63b67aa5e58319e4e ./Essential_Game_Files/3281.VGA
+98f3f76926bfadb3d1adcbfdf1387be4 ./Essential_Game_Files/3282.VGA
+40f2cf5e69e017c32e1f3c310559af4c ./Essential_Game_Files/3291.VGA
+4582764bc765be9599f471c29edf1d3d ./Essential_Game_Files/3292.VGA
+7c4cbdb31308305a3c6ceba62fb4e2e2 ./Essential_Game_Files/3301.VGA
+70df5e0ed6f4b182095604c1aaa19df1 ./Essential_Game_Files/3302.VGA
+f1be13ed49dde47d1153a94c28bd8ca5 ./Essential_Game_Files/3311.VGA
+26cfa5b4d84fec889c3c3a12829c3764 ./Essential_Game_Files/3312.VGA
+969521951494ee79bbabd3674747046a ./Essential_Game_Files/3331.VGA
+aeb37c757f102ff4ca3d76db07eec04c ./Essential_Game_Files/3332.VGA
+6aa0544fdfd9cc86ce6e72ca05d1433f ./Essential_Game_Files/Charisma.smk
+31efba0e0f105ecdf77a8fe63db90ed3 ./Essential_Game_Files/Disk1.smk
+ecb26c965ca8b45e3a1856fc17a21b9e ./Essential_Game_Files/Disk2.smk
+b8f09cb0f9d811c32e5bdb07aac08584 ./Essential_Game_Files/Disk3.smk
+f2ce346f8f45c0d362f432ad5fe1b6dd ./Essential_Game_Files/Disk4.smk
+ae84d7898b6282127618069d9c586246 ./Essential_Game_Files/feeinbin.ico
+24fe7ba975369c272088aa3b0c5bf348 ./Essential_Game_Files/GAME22
+c1fa9f0e1726e9a95638b53b1d087468 ./Essential_Game_Files/icklfeeb.ico
+e445a0a7e554ebcb550a52ee6e74023e ./Essential_Game_Files/Nextdoor.smk
+c86a414aa0101d0838b6c5e20dd5e99c ./Essential_Game_Files/Omnitoy.smk
+754e03f61a1186dd47b31ee7798fc704 ./Essential_Game_Files/Qtime.smk
+c4a0b8193335026c5b220257dea2c585 ./Essential_Game_Files/Run95.exe
+71512fc98501a8071a26b683a31dde78 ./Essential_Game_Files/save.999
+7635d1e15ba1704b3cb1525c1eba0d6f ./Essential_Game_Files/SMACKW32.DLL
+e00cead9fb77c8a6b48b9a8fe98af527 ./Essential_Game_Files/startup.wav
+4157c16894c0413ca64e56a52aa46d50 ./Essential_Game_Files/TABLES01
+d71b7918c74a999fa4c539ee8ef63003 ./Essential_Game_Files/TABLES02
+ae33ef52caed416c1f29c2976736ac4f ./Essential_Game_Files/TABLES03
+7edccf6dda9b1007a039a04980d06d88 ./Essential_Game_Files/TABLES04
+5fdf13ec87decd2f48686e0a29cd880f ./Essential_Game_Files/TABLES05
+660915b818d654b09a30d0ca8536e21a ./Essential_Game_Files/TABLES06
+597d9304e3a1f354f39f81b6b538a395 ./Essential_Game_Files/TABLES07
+243c717ab93de8c3064eda96d575f617 ./Essential_Game_Files/TABLES08
+c0284a4c084db9bf4ce02c89f8842153 ./Essential_Game_Files/TABLES09
+743ddf7cdd9488d74a840180fe71d468 ./Essential_Game_Files/TABLES10
+0f1fdab8f4cc2dea3f29058250b82068 ./Essential_Game_Files/TABLES11
+94b6a25599dfaaea64cb3a7a4a1c7589 ./Essential_Game_Files/TABLES12
+773d8084c0b3a98b1c9b556768cbb564 ./Essential_Game_Files/TABLES13
+4d7771240870c4a7e5b0f4b4a2e010f7 ./Essential_Game_Files/TABLES14
+3718ba2c338b75bebe4709b939de7542 ./Essential_Game_Files/TABLES15
+7de9a7487fe332e41041a39b10eac54d ./Essential_Game_Files/TABLES16
+b9e5112e0462b7d69f218e64883193a9 ./Essential_Game_Files/TABLES17
+a3a740286dfbb33f52d7a5cfb1ce51a7 ./Essential_Game_Files/TABLES18
+dc5d78aa8377d0e85381a3768742f834 ./Essential_Game_Files/TABLES19
+a528ec6eed4f050c492a1e89aa03f480 ./Essential_Game_Files/TABLES20
+c521eb8fe621ddb1a1e112fc679ef1b4 ./Essential_Game_Files/TABLES21
+6fc3c61399faee65d26451132ff94b94 ./Essential_Game_Files/TABLES22
+41383b96f63ede313c7f698027a6fb5d ./Essential_Game_Files/TABLES23
+b50f2a67685e05b792afd5edf894ebeb ./Essential_Game_Files/TABLES24
+a7add5ae7548d332982c234a81bfb03f ./Essential_Game_Files/TABLES25
+0bbfee8e69739111eb36b0d138da8ddf ./Essential_Game_Files/TBLLIST
diff --git a/test/v0/the-feeble-files-spanish.sh b/test/v0/the-feeble-files-spanish.sh
new file mode 100755
index 0000000..61ceeb9
--- /dev/null
+++ b/test/v0/the-feeble-files-spanish.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -e
+cd `dirname $0`
+MD5_FILE=`pwd`/`basename $0 .sh`.md5
+UNSHIELD=${UNSHIELD:-/var/tmp/unshield/bin/unshield}
+
+if [ \! -x ${UNSHIELD} ]; then
+ echo "unshield executable not found at $UNSHIELD" >&2
+ exit 1
+fi
+
+DIR=`mktemp -d`
+trap 'rm -rf ${DIR}' TERM INT EXIT
+cd ${DIR}
+
+URL="https://www.dropbox.com/s/1ng0z9kfxc7eb1e/unshield-the-feeble-files-spanish.zip?dl=1"
+curl -fsSL -o test.zip ${URL}
+unzip -q test.zip 'data*'
+
+set +e
+timeout 10 ${UNSHIELD} -O -d extract1 x data1.cab > log2 2>&1
+CODE=$?
+if [ ${CODE} -ne 0 ]; then
+ cat log2 >&2
+ echo "unshield failed with error $CODE" >&2
+ echo "See https://github.com/twogood/unshield/issues/27" >&2
+ exit 2
+fi
+
+cd extract1
+find . -type f | sort | xargs md5sum > ../md5
+if ! diff ${MD5_FILE} ../md5 >&2 ; then
+ echo "MD5 sums diff" >&2
+ echo "See https://github.com/twogood/unshield/issues/27" >&2
+ exit 3
+fi
+
+exit 0
diff --git a/test/v5/CVE-2015-1386/CVE-2015-1386.sh b/test/v5/CVE-2015-1386/CVE-2015-1386.sh
index a04adc2..8fb3b4e 100755
--- a/test/v5/CVE-2015-1386/CVE-2015-1386.sh
+++ b/test/v5/CVE-2015-1386/CVE-2015-1386.sh
@@ -3,7 +3,7 @@ set -e
cd `dirname $0`
MD5_FILE=`pwd`/`basename $0 .sh`.md5
CAB_FILE=`pwd`/data1.cab
-UNSHIELD=/var/tmp/unshield/bin/unshield
+UNSHIELD=${UNSHIELD:-/var/tmp/unshield/bin/unshield}
if [ \! -x ${UNSHIELD} ]; then
echo "unshield executable not found at $UNSHIELD" >&2
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/unshield.git
More information about the Pkg-games-commits
mailing list