Commit 1767989b authored by Mike McCormack's avatar Mike McCormack Committed by Alexandre Julliard

msi: Fail if we can't write out a temporary file.

parent 2a46821b
...@@ -528,11 +528,13 @@ static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source, ...@@ -528,11 +528,13 @@ static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source,
LPCWSTR target, const INT type, LPCWSTR action) LPCWSTR target, const INT type, LPCWSTR action)
{ {
WCHAR tmp_file[MAX_PATH]; WCHAR tmp_file[MAX_PATH];
UINT rc = ERROR_SUCCESS; UINT r = ERROR_SUCCESS;
BOOL finished = FALSE; BOOL finished = FALSE;
HANDLE ThreadHandle; HANDLE ThreadHandle;
store_binary_to_temp(package, source, tmp_file); r = store_binary_to_temp(package, source, tmp_file);
if (r != ERROR_SUCCESS)
return r;
TRACE("Calling function %s from %s\n",debugstr_w(target), TRACE("Calling function %s from %s\n",debugstr_w(target),
debugstr_w(tmp_file)); debugstr_w(tmp_file));
...@@ -541,18 +543,18 @@ static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source, ...@@ -541,18 +543,18 @@ static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source,
{ {
static const WCHAR dot[]={'.',0}; static const WCHAR dot[]={'.',0};
strcatW(tmp_file,dot); strcatW(tmp_file,dot);
} }
ThreadHandle = do_msidbCustomActionTypeDll( package, tmp_file, target ); ThreadHandle = do_msidbCustomActionTypeDll( package, tmp_file, target );
rc = process_handle(package, type, ThreadHandle, NULL, action, &finished ); r = process_handle(package, type, ThreadHandle, NULL, action, &finished );
if (!finished) if (!finished)
track_tempfile(package, tmp_file, tmp_file); track_tempfile(package, tmp_file, tmp_file);
else else
DeleteFileW(tmp_file); DeleteFileW(tmp_file);
return rc; return r;
} }
static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source, static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source,
...@@ -566,12 +568,14 @@ static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source, ...@@ -566,12 +568,14 @@ static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source,
WCHAR *deformated; WCHAR *deformated;
WCHAR *cmd; WCHAR *cmd;
static const WCHAR spc[] = {' ',0}; static const WCHAR spc[] = {' ',0};
UINT prc = ERROR_SUCCESS; UINT r = ERROR_SUCCESS;
BOOL finished = FALSE; BOOL finished = FALSE;
memset(&si,0,sizeof(STARTUPINFOW)); memset(&si,0,sizeof(STARTUPINFOW));
store_binary_to_temp(package, source, tmp_file); r = store_binary_to_temp(package, source, tmp_file);
if (r != ERROR_SUCCESS)
return r;
deformat_string(package,target,&deformated); deformat_string(package,target,&deformated);
...@@ -579,7 +583,7 @@ static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source, ...@@ -579,7 +583,7 @@ static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source,
if (deformated) if (deformated)
len += strlenW(deformated); len += strlenW(deformated);
cmd = msi_alloc(sizeof(WCHAR)*len); cmd = msi_alloc(sizeof(WCHAR)*len);
strcpyW(cmd,tmp_file); strcpyW(cmd,tmp_file);
...@@ -605,15 +609,15 @@ static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source, ...@@ -605,15 +609,15 @@ static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source,
} }
msi_free(cmd); msi_free(cmd);
prc = process_handle(package, type, info.hThread, info.hProcess, action, r = process_handle(package, type, info.hThread, info.hProcess, action,
&finished); &finished);
if (!finished) if (!finished)
track_tempfile(package, tmp_file, tmp_file); track_tempfile(package, tmp_file, tmp_file);
else else
DeleteFileW(tmp_file); DeleteFileW(tmp_file);
return prc; return r;
} }
static UINT HANDLE_CustomType17(MSIPACKAGE *package, LPCWSTR source, static UINT HANDLE_CustomType17(MSIPACKAGE *package, LPCWSTR source,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment