[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