summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--contrib/minizip/miniunz.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/contrib/minizip/miniunz.c b/contrib/minizip/miniunz.c
index 0c2fb0d..d627c42 100644
--- a/contrib/minizip/miniunz.c
+++ b/contrib/minizip/miniunz.c
@@ -356,6 +356,20 @@ static int do_extract_currentfile(unzFile uf, const int* popt_extract_without_pa
356 else 356 else
357 write_filename = filename_withoutpath; 357 write_filename = filename_withoutpath;
358 358
359 if (write_filename[0]!='\0')
360 {
361 const char* relative_check = write_filename;
362 while (relative_check[1]!='\0')
363 {
364 if (relative_check[0]=='.' && relative_check[1]=='.')
365 write_filename = relative_check;
366 relative_check++;
367 }
368 }
369
370 while (write_filename[0]=='/' || write_filename[0]=='.')
371 write_filename++;
372
359 err = unzOpenCurrentFilePassword(uf,password); 373 err = unzOpenCurrentFilePassword(uf,password);
360 if (err!=UNZ_OK) 374 if (err!=UNZ_OK)
361 { 375 {