mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Fix bug 54322
This commit is contained in:
@ -216,6 +216,15 @@ HRESULT COfficeUtils::GetFilesSize(const std::wstring& _zipFile, const std::wstr
|
||||
}
|
||||
}
|
||||
|
||||
int COfficeUtils::GetAddonFlag()
|
||||
{
|
||||
return zlip_get_addition_flag();
|
||||
}
|
||||
void COfficeUtils::SetAddonFlag(int flag)
|
||||
{
|
||||
zlip_set_addition_flag(flag);
|
||||
}
|
||||
|
||||
class CDeflate_private
|
||||
{
|
||||
public:
|
||||
|
||||
@ -35,6 +35,10 @@
|
||||
#include "OfficeUtilsCommon.h"
|
||||
#include "../../Common/kernel_config.h"
|
||||
|
||||
#define ZLIB_ADDON_FLAG_ZERO 0
|
||||
#define ZLIB_ADDON_FLAG_READ_ONLY 1
|
||||
#define ZLIB_ADDON_FLAG_WINDOWS_SHARED_WRITE 2
|
||||
|
||||
#ifndef Z_DEFLATED
|
||||
#define Z_DEFLATED 8
|
||||
#endif
|
||||
@ -59,6 +63,8 @@ public:
|
||||
HRESULT CompressFilesFromMemory (const std::wstring& zipFile, const RequestFileCallback& data_source, void* pParam, short compression_level, bool* result);
|
||||
HRESULT GetFilesSize (const std::wstring& zipFile, const std::wstring& searchPattern, ULONG64& nCommpressed, ULONG64& nUncommpressed);
|
||||
|
||||
static int GetAddonFlag();
|
||||
static void SetAddonFlag(int flag);
|
||||
};
|
||||
|
||||
#define DEFLATE_NO_FLUSH 0
|
||||
|
||||
@ -846,9 +846,10 @@ int ZipDir( const WCHAR* dir, const WCHAR* outputFile, const OnProgressCallback*
|
||||
|
||||
if ( ( zipFile != NULL ) && ( unzipDir != NULL ) )
|
||||
{
|
||||
zlip_set_addition_flag(ZLIB_ADDON_FLAG_READ_ONLY);
|
||||
int old = zlip_get_addition_flag();
|
||||
zlip_set_addition_flag(old | ZLIB_ADDON_FLAG_READ_ONLY);
|
||||
uf = unzOpenHelp (zipFile);
|
||||
zlip_set_addition_flag(ZLIB_ADDON_FLAG_ZERO);
|
||||
zlip_set_addition_flag(old);
|
||||
}
|
||||
|
||||
if ( uf != NULL )
|
||||
|
||||
@ -61,6 +61,9 @@ static void win32_translate_open_mode(int mode,
|
||||
*lpdwDesiredAccess = GENERIC_READ;
|
||||
*lpdwCreationDisposition = OPEN_EXISTING;
|
||||
*lpdwShareMode = FILE_SHARE_READ;
|
||||
|
||||
if (zlip_get_addition_flag() & ZLIB_ADDON_FLAG_WINDOWS_SHARED_WRITE)
|
||||
*lpdwShareMode |= FILE_SHARE_WRITE;
|
||||
}
|
||||
else if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
|
||||
{
|
||||
|
||||
@ -31,8 +31,11 @@
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define ZLIB_ADDON_FLAG_ZERO 0
|
||||
#define ZLIB_ADDON_FLAG_READ_ONLY 1
|
||||
#ifndef ZLIB_ADDON_FLAG_ZERO
|
||||
#define ZLIB_ADDON_FLAG_ZERO 0
|
||||
#define ZLIB_ADDON_FLAG_READ_ONLY 1
|
||||
#define ZLIB_ADDON_FLAG_WINDOWS_SHARED_WRITE 2
|
||||
#endif
|
||||
|
||||
void zlip_set_addition_flag(int flag);
|
||||
int zlip_get_addition_flag();
|
||||
|
||||
Reference in New Issue
Block a user