Must pass count of TCHARs to _LogData2Hex so we don't overflow the buffer in unicode stubs
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6468 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
d2f4cf6c2a
commit
a03795783a
3 changed files with 10 additions and 17 deletions
|
@ -367,7 +367,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
mystrcpy(state_output_directory,buf1);
|
mystrcpy(state_output_directory,buf1);
|
||||||
if (!SetCurrentDirectory(buf1))
|
if (!SetCurrentDirectory(buf1))
|
||||||
{
|
{
|
||||||
log_printf3("SetCurrentDirectory(%s) failed (%d)",buf1,GetLastError());
|
log_printf3(_T("SetCurrentDirectory(%s) failed (%d)"),buf1,GetLastError());
|
||||||
exec_error++;
|
exec_error++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1259,7 +1259,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
#endif
|
#endif
|
||||||
// use buf2, buf3 and buf4
|
// use buf2, buf3 and buf4
|
||||||
size = GetCompressedDataFromDataBlockToMemory(parm3, data, (3 * NSIS_MAX_STRLEN)*sizeof(TCHAR));
|
size = GetCompressedDataFromDataBlockToMemory(parm3, data, (3 * NSIS_MAX_STRLEN)*sizeof(TCHAR));
|
||||||
LogData2Hex(binbuf, sizeof(binbuf), data, size);
|
LogData2Hex(binbuf, COUNTOF(binbuf), data, size);
|
||||||
log_printf5(_T("WriteRegBin: \"%s\\%s\" \"%s\"=\"%s\""),rkn,buf1,buf0,binbuf);
|
log_printf5(_T("WriteRegBin: \"%s\\%s\" \"%s\"=\"%s\""),rkn,buf1,buf0,binbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -947,22 +947,16 @@ const TCHAR * _RegKeyHandleToName(HKEY hKey)
|
||||||
return _T("invalid registry key");
|
return _T("invalid registry key");
|
||||||
}
|
}
|
||||||
|
|
||||||
void _LogData2Hex(TCHAR *buf, size_t buflen, BYTE *data, size_t datalen)
|
void _LogData2Hex(TCHAR *buf, size_t cchbuf, BYTE *data, size_t cbdata)
|
||||||
{
|
{
|
||||||
TCHAR *p = buf;
|
TCHAR *p = buf;
|
||||||
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
int dots = 0;
|
int dots = 0;
|
||||||
size_t bufbytes = buflen / 3; // 2 hex digits, one space/null
|
size_t i, bufbytes = cchbuf / 3; // 2 hex digits, one space/null
|
||||||
|
|
||||||
if (datalen > bufbytes)
|
if (cbdata > bufbytes)
|
||||||
{
|
bufbytes--, dots++;
|
||||||
bufbytes--;
|
|
||||||
dots = 1;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
bufbytes = datalen;
|
bufbytes = cbdata;
|
||||||
|
|
||||||
for (i = 0; i < bufbytes; i++)
|
for (i = 0; i < bufbytes; i++)
|
||||||
{
|
{
|
||||||
|
@ -970,8 +964,7 @@ void _LogData2Hex(TCHAR *buf, size_t buflen, BYTE *data, size_t datalen)
|
||||||
p += 3;
|
p += 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dots)
|
if (dots) mystrcat(buf, _T("..."));
|
||||||
mystrcat(buf, _T("..."));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_LOG_TIMESTAMP
|
#ifdef NSIS_CONFIG_LOG_TIMESTAMP
|
||||||
|
|
|
@ -55,10 +55,10 @@ int NSISCALL my_GetDialogItemText(UINT idx, TCHAR *val);
|
||||||
//#define my_GetDialogItemText GetDlgItemText
|
//#define my_GetDialogItemText GetDlgItemText
|
||||||
|
|
||||||
#ifdef NSIS_CONFIG_LOG
|
#ifdef NSIS_CONFIG_LOG
|
||||||
extern TCHAR log_text[2048];
|
extern TCHAR log_text[2048]; // BUGBUG: Should this be 2*NSIS_MAX_STRLEN? ...and a little larger when NSIS_CONFIG_LOG_TIMESTAMP is defined!
|
||||||
void NSISCALL log_write(int close);
|
void NSISCALL log_write(int close);
|
||||||
const TCHAR * _RegKeyHandleToName(HKEY hKey);
|
const TCHAR * _RegKeyHandleToName(HKEY hKey);
|
||||||
void _LogData2Hex(TCHAR *buf, size_t buflen, BYTE *data, size_t datalen);
|
void _LogData2Hex(TCHAR *buf, size_t cchbuf, BYTE *data, size_t cbdata);
|
||||||
void log_printf(TCHAR *format, ...);
|
void log_printf(TCHAR *format, ...);
|
||||||
#define log_printf2(x1,x2) log_printf(x1,x2);
|
#define log_printf2(x1,x2) log_printf(x1,x2);
|
||||||
#define log_printf3(x1,x2,x3) log_printf(x1,x2,x3);
|
#define log_printf3(x1,x2,x3) log_printf(x1,x2,x3);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue