From 2b3da85bae12c36197b6449415202ee6fe329847 Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 12 Mar 2004 10:28:49 +0000 Subject: [PATCH] always create a valid standard input handle git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3512 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/nsExec/nsexec.c | 16 ++++++++++++---- Plugins/nsExec.dll | Bin 6144 -> 6144 bytes 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Contrib/nsExec/nsexec.c b/Contrib/nsExec/nsexec.c index dfa16fad..c69eba2b 100644 --- a/Contrib/nsExec/nsexec.c +++ b/Contrib/nsExec/nsexec.c @@ -158,6 +158,7 @@ void ExecScript(int log) { PROCESS_INFORMATION pi={0,}; OSVERSIONINFO osv={sizeof(osv)}; HANDLE newstdout=0,read_stdout=0; + HANDLE newstdin=0,read_stdin=0; DWORD dwRead = 1; DWORD dwExit = !STILL_ACTIVE; DWORD dwLastOutput; @@ -187,11 +188,15 @@ void ExecScript(int log) { lstrcpy(szRet, "error"); goto done; } + if (!CreatePipe(&read_stdin,&newstdin,&sa,0)) { + lstrcpy(szRet, "error"); + goto done; + } GetStartupInfo(&si); si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; - si.hStdInput = GetStdHandle(STD_INPUT_HANDLE); + si.hStdInput = newstdin; si.hStdOutput = newstdout; si.hStdError = newstdout; if (!CreateProcess(NULL,g_exec,NULL,NULL,TRUE,CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi)) { @@ -294,6 +299,8 @@ done: CloseHandle(pi.hProcess); CloseHandle(newstdout); CloseHandle(read_stdout); + CloseHandle(newstdin); + CloseHandle(read_stdin); *(pExec-1) = '\0'; DeleteFile(g_exec); GlobalFree(g_exec); @@ -382,7 +389,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine char *cmdline; si.cb = sizeof(si); - // Make child process use this app's standard files. Not needed !?? + // Make child process use this app's standard files. Not needed because the handles + // we created when executing this process were inheritable. //si.dwFlags = STARTF_USESTDHANDLES; //si.hStdInput = GetStdHandle (STD_INPUT_HANDLE); //si.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE); @@ -401,8 +409,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine NULL, NULL, &si, &pi ); - - if ( Ret ) + + if (Ret) { do { diff --git a/Plugins/nsExec.dll b/Plugins/nsExec.dll index b1e458444e14c77f36cc7722e89ba4cc7cb8c0e4..f179c646a166e9891ce04b7b5cd56084bf0a9664 100644 GIT binary patch delta 1797 zcmc(fZERCj7{|})I=YUrHMrvB#dR={fRefU);Sgy!-WDf+*zcQtjUxKwHXPR7Ku7r zT^m+PN#~t75Dc(MqSX&F%oYN%I z+UK0}+y*KF6|v6)w4#|OVt=PeX9S$-=`zwXai478y%j~wor1CF(;RZp1p(3SbS^zn`p@P4`XgU zB}8FDBRrXThlQ9T>0=6n=*kKjJtM4!kK(Ci=4P0>+%N=IGj`NqWr7x%HQ3#@3SvT_8-ex#L&MWXsGFb;CA{11c2ADo?#3At zSr2Az)FPnQ+m*1KV&;a79GS3tbPi_T1gW~;yC`B?ep)S259ZFDwE-$eq(;HQt}|bX zUAISS4yzY)YyIa_-=Q>jIcjmFqPc`PLkXwX99?ZxQdcyws~IIbQhVTaOsn2nQWWgU zA;e?i63*z^CdSxcs1fr@lsG6~D!?)pkG2f8xw_+V+;q!VaSU9vwm%bg^?Ax6a}P4F zU{UZ4tEyaigP}U?IuIOojf};^uFcfEE0`}DKB9H%+PvVR8+&P+ZtWWO+6~{hyI8w7S&t9??D9Tb;3?gC==MQ(A3Po= z^>*Q$|ND5)|M&6KgGKjx4w;VAD*SoZYL#y-Cxl|nnZgEn184-qM952EGuR1v7YOvU z%xtA3yj3|`Nw^tY8P~w==RV`QxE}6TZkS7R54l|4%$M`a z_!WFTzlCq+{rn#O0Dpu(!T-Sb^W*#@-XPQqKA}Zu6+Rb^3ttO8LP8i8{uIWArDCOM z6W5E|#QkE2ct|`delPwg-VleyKg7R9om3>5=SvHvB@!pSAvH>Sr7xwE(r?m;G+@1I U9kb4>dbz5qYMn}-WjaFs1!y>Kb^rhX delta 1782 zcmc(gZERCj7{|})I@+?a)wz<2=sFlLiHLLerJZAOL@o?7!VO&*!!?2IC8Zg$cST zjo8k7XND{hQbEn6-8#4P>{eS@0U?cqki+_NI^Sfb`eqYnc0upVf6%s6so$=^`IP<{ zT||5J>vSz`I8kisr>~j!wH`MS(o@3|`}(RtUO1GPVyv2rX{WAZb1T{qJ*tJ|zZmnI zDIqcwHX)KZ6c@2aZXA%IXe$b-c2Zc27&%bJ98GW?^uy8iWQ{T>m0Tq=$9^MaGNqSH zzHr5x+O~2RN+z>Aj+hAv=P|)ZOgX&%@v$)Ps#^xhheMr~^j#9%puk znnp;#&c&*=Q;m$V!H^%%6=-o#8p?#Y71dgX!@k~V6er#CZWId#ZS3Q!FBT|(&P^oW z!ki6w4J(U%*1=FEc3ntTeWSOcs&8CBI>Xg!oOa1+Rl*V8#*4(c$grr=9W5CTy#jjs zsX8Q^f-X(!T@M?9&Fh_3a8K;ms?zXSn(7`YNuyv~R)go6qZ|RDSawG@K0r&3 zf)X7t1||vyr7nt#(V+VFGDjI~s?-yaMpfyMDjn9On2ZE{hh;HM=tnJ2;Ca>ZGL`i@ zYsbRNJ89VT^lG-|a`1P5u5rH1k&6oLgVr+^m*15<@!fisP0Sj@N35)lOpV#rGe?)c z&gOO`(!MVFd|O_Cv0#ij?8wtX3H>cw9*yar*dA#$?y=vTxfROR|XaVb+d_ukh zzk=If#ymoDz&ua{%0LCE0e-L@>;xwf+Y31Wz69sNH82URsQoZl0z9AsYy?f9c|NHn z$B_I60(&5hH3Y|Duph)hA261A+HdT4!HVN*o#TbsbI`e1$-($}E z?=khx?3-Ed(^d6~SE(!C{A^ug{fRdFA-eqTF!W2jUT!K+KgfCgggp1 zf==kKgPs$6(MZv?qT59lZZTKN$(+Ky#Hn02_aPVOMz|li zG44-pCZEeM;NARcejQ)WZ{?f$c77MXk3Yg+;D6+Q;oZVBLanexXc5A~t3tQ%ju01y zg$u%cqElQd3gQ|uAU28H#AZYm}wc0cZ3=5BDm=-%yq a&mD8W?K$rG%JYY3R