From a798cabcffd01238626edcb6d42eafefab2723ad Mon Sep 17 00:00:00 2001 From: kichik Date: Sat, 7 Jun 2003 10:59:11 +0000 Subject: [PATCH] Safer "bug" report 750338 git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2618 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/InstallOptions/InstallerOptions.cpp | 14 +++++++++++++- Plugins/InstallOptions.dll | Bin 12800 -> 12800 bytes Source/exehead/Ui.c | 7 +++---- Source/exehead/util.c | 4 +++- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/Contrib/InstallOptions/InstallerOptions.cpp b/Contrib/InstallOptions/InstallerOptions.cpp index 26abfdd1..bd32b129 100644 --- a/Contrib/InstallOptions/InstallerOptions.cpp +++ b/Contrib/InstallOptions/InstallerOptions.cpp @@ -15,7 +15,20 @@ #include #include "resource.h" +#define popstring dontuseme #include "../exdll/exdll.h" +#undef popstring + +static int popstring(char *str) +{ + stack_t *th; + if (!g_stacktop || !*g_stacktop) return 1; + th=(*g_stacktop); + if (str) lstrcpy(str,th->text); + *g_stacktop = th->next; + GlobalFree((HGLOBAL)th); + return 0; +} #define strcpy(x,y) lstrcpy(x,y) #define strncpy(x,y,z) lstrcpyn(x,y,z) @@ -32,7 +45,6 @@ char *STRDUP(const char *c) return lstrcpy(t,c); } - #define FIELD_LABEL (1) #define FIELD_ICON (2) #define FIELD_BITMAP (3) diff --git a/Plugins/InstallOptions.dll b/Plugins/InstallOptions.dll index ccf44f4ff3e14f5a26047576cf4726727b0f40dc..dcace2c071c70a53ca30a7ee074cf59d8298137c 100644 GIT binary patch delta 614 zcmYk2Ur1AN6vyvxn>L-!i?!5M!fa|&hQ{yw&eAl6h8g*=lms_hB7==GC|W@r|4Zqh; z&3}w7>>$S2pLb+JdQIwbh>aTzRb-u`p_=6KUc(Y8mk#7P2^p0x<n^7tuH<*f-v279Di^3s6J5>6yhl9)$(yS2z9MJi z$R3X%c7_wdnn-Op6|@b8ta>51`ErZSr39^cipg0kh?${?v2#eTm|9h*3Gbv@&HO>p zQxfIJi|6bwzAB2sdb-t3;~Dg&QOaN-jiVXtOXDr>FR7?Irv@V-)sE(TVx}<>+t~FPxz1rMV_-sv4x+djEzZ4~$IGb|GKY7U9P%xZt2ow2ijYUh1c(=y`gb-lk)8 zoF?fkeM>)4nSQ4!x=wYF3nG+)4eH?#xSp8*mryLmVE%1Wds!%)=sl zfp72|)*zQ{VcVF6*%)PeSqnSNx|yGyW*6BtcCUp!WY5_gTVl)XFVmtCw_+*o#46m6 r2eBPJ=))5j!>f1)$1sjha2h}0BFgv!S24>`?5K3u9WH5i%`446Vg>Gd delta 633 zcmYk3Ur1AN6vyw+);62wMHuQ#LT6fvq@43ROGq?Y8vP;36x6aMi-Jre7Cj_r*&b|# ztslNfVCF+Th>#bgfz)845XOuiN)|#^bj^n%L=4hj_pTQo4tze}@5AA6di}lrhab1a zI}+hU9Qf3kDj<0ODR+r{w?5TD?eU_yx+C*c<06VFD z%W&Fyx)ep}n^qyZvZp~WF=Wi~o>Pa^G2F;dB!HCPtEY*~IZAc9=LSuI3a~b{oM+x8X8iwdkE& zEKT=qF;zdk#q7FQ%;g+pHj(NoX4Rs?Rh=vUO4%IKr&gs5MsKXu>yu`%T)H8psB%H( zi)25$U1?ENX57E*7xS(%c3s#zwH+=1EXM#Lj{23xQlJMk9wVLuMwAP(a* z9K#8W;A@=0Ib6Wc_#J=Z8d~^H?&P`L&C59FHT*bl;urW8euqEePipx%pW<)$BLBiy z`3AR>O4*c0g;Yg{=>#=W8(pLjg=vUJX^b?A(tBEname_ptr); - tv.item.pszText=ps_tmpbuf; + tv.item.pszText=process_string_fromtab(0,sec->name_ptr); tv.item.stateMask=TVIS_STATEIMAGEMASK|TVIS_EXPANDED; { @@ -1098,8 +1097,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar if (tv.hItem=hTreeItems[x]) { tv.mask=TVIF_TEXT; - process_string_fromtab(0,ns); - tv.pszText=ps_tmpbuf; + tv.pszText=process_string_fromtab(0,ns); TreeView_SetItem(hwndTree1,&tv); } } @@ -1421,6 +1419,7 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa if (!(inst_flags&CH_FLAGS_DETAILS_NEVERSHOW)) ShowWindow(insthwnd,SW_SHOWNA); else insthwndbutton=NULL; } + progress_bar_pos=0; progress_bar_len=num; g_progresswnd=GetUIItem(IDC_PROGRESS); diff --git a/Source/exehead/util.c b/Source/exehead/util.c index d2f7efdb..00c976be 100644 --- a/Source/exehead/util.c +++ b/Source/exehead/util.c @@ -329,7 +329,9 @@ char ps_tmpbuf[NSIS_MAX_STRLEN*2]; char * NSISCALL process_string_fromtab(char *out, int offs) { - return lstrcpyn(out,process_string(GetStringFromStringTab(offs)),NSIS_MAX_STRLEN); + char *p=process_string(GetStringFromStringTab(offs)); + if (!out) return p; + return lstrcpyn(out,p,NSIS_MAX_STRLEN); } void NSISCALL myitoa(char *s, int d) { wsprintf(s,"%d",d); }