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 0c2fb0d8..d627c422 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 | { |
