mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 14:53:40 +00:00
[PSDK]
Fix NULL-termination bugs in ntstrunsafe.h svn path=/trunk/; revision=66637
This commit is contained in:
parent
4beaf120e7
commit
1e9299af24
1 changed files with 167 additions and 24 deletions
|
@ -117,7 +117,14 @@ RtlStringCchCopyA(
|
||||||
_In_ size_t cchDest,
|
_In_ size_t cchDest,
|
||||||
_In_ NTSTRSAFE_PCSTR pszSrc)
|
_In_ NTSTRSAFE_PCSTR pszSrc)
|
||||||
{
|
{
|
||||||
return (cchDest > NTSTRSAFE_MAX_CCH ? STATUS_INVALID_PARAMETER : RtlStringCopyWorkerA(pszDest,cchDest,pszSrc));
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RtlStringCopyWorkerA(pszDest, cchDest, pszSrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTRSAFEAPI
|
NTSTRSAFEAPI
|
||||||
|
@ -127,7 +134,12 @@ RtlStringCchCopyW(
|
||||||
_In_ NTSTRSAFE_PCWSTR pszSrc)
|
_In_ NTSTRSAFE_PCWSTR pszSrc)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringCopyWorkerW(pszDest,cchDest,pszSrc);
|
return RtlStringCopyWorkerW(pszDest,cchDest,pszSrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,8 +161,13 @@ RtlStringCbCopyA(
|
||||||
_In_ size_t cbDest,
|
_In_ size_t cbDest,
|
||||||
_In_ NTSTRSAFE_PCSTR pszSrc)
|
_In_ NTSTRSAFE_PCSTR pszSrc)
|
||||||
{
|
{
|
||||||
if (cbDest > NTSTRSAFE_MAX_CCH)
|
size_t cchDest = cbDest / sizeof(char);
|
||||||
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
return RtlStringCopyWorkerA(pszDest,cbDest,pszSrc);
|
return RtlStringCopyWorkerA(pszDest,cbDest,pszSrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +179,11 @@ RtlStringCbCopyW(
|
||||||
{
|
{
|
||||||
size_t cchDest = cbDest / sizeof(wchar_t);
|
size_t cchDest = cbDest / sizeof(wchar_t);
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
return RtlStringCopyWorkerW(pszDest,cchDest,pszSrc);
|
return RtlStringCopyWorkerW(pszDest,cchDest,pszSrc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,7 +215,11 @@ RtlStringCchCopyExA(
|
||||||
_In_ STRSAFE_DWORD dwFlags)
|
_In_ STRSAFE_DWORD dwFlags)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
return RtlStringCopyExWorkerA(pszDest,cchDest,cchDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags);
|
return RtlStringCopyExWorkerA(pszDest,cchDest,cchDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,10 +232,15 @@ RtlStringCchCopyExW(
|
||||||
_Out_opt_ size_t *pcchRemaining,
|
_Out_opt_ size_t *pcchRemaining,
|
||||||
_In_ STRSAFE_DWORD dwFlags)
|
_In_ STRSAFE_DWORD dwFlags)
|
||||||
{
|
{
|
||||||
size_t cbDest;
|
size_t cbDest = cchDest * sizeof(wchar_t);
|
||||||
|
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
cbDest = cchDest * sizeof(wchar_t);
|
}
|
||||||
|
|
||||||
return RtlStringCopyExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags);
|
return RtlStringCopyExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,pcchRemaining,dwFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,9 +272,16 @@ RtlStringCbCopyExA(
|
||||||
_In_ STRSAFE_DWORD dwFlags)
|
_In_ STRSAFE_DWORD dwFlags)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
size_t cchDest = cbDest / sizeof(char);
|
||||||
size_t cchRemaining = 0;
|
size_t cchRemaining = 0;
|
||||||
if (cbDest > NTSTRSAFE_MAX_CCH)
|
|
||||||
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
Status = RtlStringCopyExWorkerA(pszDest,cbDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags);
|
Status = RtlStringCopyExWorkerA(pszDest,cbDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags);
|
||||||
if (NT_SUCCESS(Status) || Status == STATUS_BUFFER_OVERFLOW)
|
if (NT_SUCCESS(Status) || Status == STATUS_BUFFER_OVERFLOW)
|
||||||
{
|
{
|
||||||
|
@ -268,7 +305,12 @@ RtlStringCbCopyExW(
|
||||||
size_t cchRemaining = 0;
|
size_t cchRemaining = 0;
|
||||||
|
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
Status = RtlStringCopyExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags);
|
Status = RtlStringCopyExWorkerW(pszDest,cchDest,cbDest,pszSrc,ppszDestEnd,&cchRemaining,dwFlags);
|
||||||
if (NT_SUCCESS(Status) || (Status==STATUS_BUFFER_OVERFLOW))
|
if (NT_SUCCESS(Status) || (Status==STATUS_BUFFER_OVERFLOW))
|
||||||
{
|
{
|
||||||
|
@ -301,7 +343,12 @@ RtlStringCchCopyNA(
|
||||||
_In_ size_t cchToCopy)
|
_In_ size_t cchToCopy)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringCopyNWorkerA(pszDest,cchDest,pszSrc,cchToCopy);
|
return RtlStringCopyNWorkerA(pszDest,cchDest,pszSrc,cchToCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,7 +360,12 @@ RtlStringCchCopyNW(
|
||||||
_In_ size_t cchToCopy)
|
_In_ size_t cchToCopy)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringCopyNWorkerW(pszDest,cchDest,pszSrc,cchToCopy);
|
return RtlStringCopyNWorkerW(pszDest,cchDest,pszSrc,cchToCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -338,9 +390,17 @@ RtlStringCbCopyNA(
|
||||||
_In_reads_bytes_(cbToCopy) STRSAFE_LPCSTR pszSrc,
|
_In_reads_bytes_(cbToCopy) STRSAFE_LPCSTR pszSrc,
|
||||||
_In_ size_t cbToCopy)
|
_In_ size_t cbToCopy)
|
||||||
{
|
{
|
||||||
if (cbDest > NTSTRSAFE_MAX_CCH || cbToCopy > NTSTRSAFE_MAX_CCH)
|
size_t cchDest = cbDest / sizeof(char);
|
||||||
|
size_t cchToCopy = cbToCopy / sizeof(char);
|
||||||
|
|
||||||
|
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
return RtlStringCopyNWorkerA(pszDest,cbDest,pszSrc,cbToCopy);
|
}
|
||||||
|
|
||||||
|
return RtlStringCopyNWorkerA(pszDest, cchDest, pszSrc, cchToCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTRSAFEAPI
|
NTSTRSAFEAPI
|
||||||
|
@ -352,8 +412,14 @@ RtlStringCbCopyNW(
|
||||||
{
|
{
|
||||||
size_t cchDest = cbDest / sizeof(wchar_t);
|
size_t cchDest = cbDest / sizeof(wchar_t);
|
||||||
size_t cchToCopy = cbToCopy / sizeof(wchar_t);
|
size_t cchToCopy = cbToCopy / sizeof(wchar_t);
|
||||||
|
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH || cchToCopy > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringCopyNWorkerW(pszDest, cchDest, pszSrc, cchToCopy);
|
return RtlStringCopyNWorkerW(pszDest, cchDest, pszSrc, cchToCopy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -388,7 +454,12 @@ RtlStringCchCopyNExA(
|
||||||
_In_ STRSAFE_DWORD dwFlags)
|
_In_ STRSAFE_DWORD dwFlags)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringCopyNExWorkerA(pszDest, cchDest, cchDest, pszSrc, cchToCopy, ppszDestEnd, pcchRemaining, dwFlags);
|
return RtlStringCopyNExWorkerA(pszDest, cchDest, cchDest, pszSrc, cchToCopy, ppszDestEnd, pcchRemaining, dwFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,7 +474,12 @@ RtlStringCchCopyNExW(
|
||||||
_In_ STRSAFE_DWORD dwFlags)
|
_In_ STRSAFE_DWORD dwFlags)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringCopyNExWorkerW(pszDest,cchDest,cchDest * sizeof(wchar_t), pszSrc, cchToCopy, ppszDestEnd, pcchRemaining, dwFlags);
|
return RtlStringCopyNExWorkerW(pszDest,cchDest,cchDest * sizeof(wchar_t), pszSrc, cchToCopy, ppszDestEnd, pcchRemaining, dwFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,9 +515,14 @@ RtlStringCbCopyNExA(
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
size_t cchRemaining = 0;
|
size_t cchRemaining = 0;
|
||||||
|
|
||||||
if (cbDest > NTSTRSAFE_MAX_CCH)
|
if (cbDest > NTSTRSAFE_MAX_CCH)
|
||||||
Status = STATUS_INVALID_PARAMETER;
|
{
|
||||||
else
|
if ((pszDest != NULL) && (cbDest > 0))
|
||||||
|
*pszDest = L'\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
Status = RtlStringCopyNExWorkerA(pszDest,cbDest,cbDest,pszSrc,cbToCopy,ppszDestEnd,&cchRemaining,dwFlags);
|
Status = RtlStringCopyNExWorkerA(pszDest,cbDest,cbDest,pszSrc,cbToCopy,ppszDestEnd,&cchRemaining,dwFlags);
|
||||||
if ((NT_SUCCESS(Status) || Status == STATUS_BUFFER_OVERFLOW) && pcbRemaining)
|
if ((NT_SUCCESS(Status) || Status == STATUS_BUFFER_OVERFLOW) && pcbRemaining)
|
||||||
*pcbRemaining = cchRemaining;
|
*pcbRemaining = cchRemaining;
|
||||||
|
@ -465,8 +546,12 @@ RtlStringCbCopyNExW(
|
||||||
cchDest = cbDest / sizeof(wchar_t);
|
cchDest = cbDest / sizeof(wchar_t);
|
||||||
cchToCopy = cbToCopy / sizeof(wchar_t);
|
cchToCopy = cbToCopy / sizeof(wchar_t);
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
Status = STATUS_INVALID_PARAMETER;
|
{
|
||||||
else
|
if ((pszDest != NULL) && (cbDest > 0))
|
||||||
|
*pszDest = L'\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
Status = RtlStringCopyNExWorkerW(pszDest,cchDest,cbDest,pszSrc,cchToCopy,ppszDestEnd,&cchRemaining,dwFlags);
|
Status = RtlStringCopyNExWorkerW(pszDest,cchDest,cbDest,pszSrc,cchToCopy,ppszDestEnd,&cchRemaining,dwFlags);
|
||||||
if ((NT_SUCCESS(Status) || Status == STATUS_BUFFER_OVERFLOW) && pcbRemaining)
|
if ((NT_SUCCESS(Status) || Status == STATUS_BUFFER_OVERFLOW) && pcbRemaining)
|
||||||
*pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
|
*pcbRemaining = (cchRemaining*sizeof(wchar_t)) + (cbDest % sizeof(wchar_t));
|
||||||
|
@ -864,7 +949,12 @@ RtlStringCchVPrintfA(
|
||||||
_In_ va_list argList)
|
_In_ va_list argList)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
return RtlStringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList);
|
return RtlStringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -876,7 +966,11 @@ RtlStringCchVPrintfW(
|
||||||
_In_ va_list argList)
|
_In_ va_list argList)
|
||||||
{
|
{
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
return RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
return RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -902,7 +996,11 @@ RtlStringCbVPrintfA(
|
||||||
_In_ va_list argList)
|
_In_ va_list argList)
|
||||||
{
|
{
|
||||||
if (cbDest > NTSTRSAFE_MAX_CCH)
|
if (cbDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cbDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
return RtlStringVPrintfWorkerA(pszDest,cbDest,pszFormat,argList);
|
return RtlStringVPrintfWorkerA(pszDest,cbDest,pszFormat,argList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -915,7 +1013,11 @@ RtlStringCbVPrintfW(
|
||||||
{
|
{
|
||||||
size_t cchDest = cbDest / sizeof(wchar_t);
|
size_t cchDest = cbDest / sizeof(wchar_t);
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
return RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
return RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -943,7 +1045,11 @@ RtlStringCchPrintfA(
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
va_list argList;
|
va_list argList;
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
Status = RtlStringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList);
|
Status = RtlStringVPrintfWorkerA(pszDest,cchDest,pszFormat,argList);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
@ -960,7 +1066,11 @@ RtlStringCchPrintfW(
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
va_list argList;
|
va_list argList;
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
Status = RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
Status = RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
@ -991,7 +1101,11 @@ RtlStringCbPrintfA(
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
va_list argList;
|
va_list argList;
|
||||||
if (cbDest > NTSTRSAFE_MAX_CCH)
|
if (cbDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cbDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
Status = RtlStringVPrintfWorkerA(pszDest,cbDest,pszFormat,argList);
|
Status = RtlStringVPrintfWorkerA(pszDest,cbDest,pszFormat,argList);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
@ -1009,7 +1123,11 @@ RtlStringCbPrintfW(
|
||||||
va_list argList;
|
va_list argList;
|
||||||
size_t cchDest = cbDest / sizeof(wchar_t);
|
size_t cchDest = cbDest / sizeof(wchar_t);
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
Status = RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
Status = RtlStringVPrintfWorkerW(pszDest,cchDest,pszFormat,argList);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
@ -1049,7 +1167,11 @@ RtlStringCchPrintfExA(
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
va_list argList;
|
va_list argList;
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
Status = RtlStringVPrintfExWorkerA(pszDest,cchDest,cchDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList);
|
Status = RtlStringVPrintfExWorkerA(pszDest,cchDest,cchDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
@ -1070,7 +1192,11 @@ RtlStringCchPrintfExW(
|
||||||
size_t cbDest = cchDest * sizeof(wchar_t);
|
size_t cbDest = cchDest * sizeof(wchar_t);
|
||||||
va_list argList;
|
va_list argList;
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
|
{
|
||||||
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
return STATUS_INVALID_PARAMETER;
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
Status = RtlStringVPrintfExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList);
|
Status = RtlStringVPrintfExWorkerW(pszDest,cchDest,cbDest,ppszDestEnd,pcchRemaining,dwFlags,pszFormat,argList);
|
||||||
va_end(argList);
|
va_end(argList);
|
||||||
|
@ -1110,10 +1236,15 @@ RtlStringCbPrintfExA(
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
size_t cchDest;
|
size_t cchDest;
|
||||||
size_t cchRemaining = 0;
|
size_t cchRemaining = 0;
|
||||||
|
|
||||||
cchDest = cbDest / sizeof(char);
|
cchDest = cbDest / sizeof(char);
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
Status = STATUS_INVALID_PARAMETER;
|
{
|
||||||
else
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
va_list argList;
|
va_list argList;
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
|
@ -1145,8 +1276,12 @@ RtlStringCbPrintfExW(
|
||||||
size_t cchRemaining = 0;
|
size_t cchRemaining = 0;
|
||||||
cchDest = cbDest / sizeof(wchar_t);
|
cchDest = cbDest / sizeof(wchar_t);
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
Status = STATUS_INVALID_PARAMETER;
|
{
|
||||||
else
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
va_list argList;
|
va_list argList;
|
||||||
va_start(argList,pszFormat);
|
va_start(argList,pszFormat);
|
||||||
|
@ -1195,8 +1330,12 @@ RtlStringCchVPrintfExA(
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
Status = STATUS_INVALID_PARAMETER;
|
{
|
||||||
else
|
if (cchDest > 0)
|
||||||
|
*pszDest = '\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
size_t cbDest;
|
size_t cbDest;
|
||||||
cbDest = cchDest*sizeof(char);
|
cbDest = cchDest*sizeof(char);
|
||||||
|
@ -1217,8 +1356,12 @@ RtlStringCchVPrintfExW(
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
if (cchDest > NTSTRSAFE_MAX_CCH)
|
if (cchDest > NTSTRSAFE_MAX_CCH)
|
||||||
Status = STATUS_INVALID_PARAMETER;
|
{
|
||||||
else
|
if (cchDest > 0)
|
||||||
|
*pszDest = L'\0';
|
||||||
|
return STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
size_t cbDest;
|
size_t cbDest;
|
||||||
cbDest = cchDest*sizeof(wchar_t);
|
cbDest = cchDest*sizeof(wchar_t);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue