diff options
-rw-r--r-- | contrib/minizip/miniunz.c | 14 |
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 | { |