RtlUnicodeStringValidateSrcWorker

NTSTATUS __stdcall RtlUnicodeStringValidateSrcWorker(
        PCUNICODE_STRING SourceString,
        WCHAR **ppszSrc,
        size_t *pcchSrcLength,
        size_t cchMax,
        ULONG dwFlags){
  unsigned __int64 Length; 
  NTSTATUS v6; 
  unsigned __int16 MaximumLength; 
  wchar_t *Buffer; 

  Length = SourceString->Length;
  v6 = 0;
  *ppszSrc = 0i64;
  *(_QWORD *)pcchSrcLength = 0i64;
  if( (Length & 1) != 0 )
    return -1073741811;
  MaximumLength = SourceString->MaximumLength;
  if( (MaximumLength & 1) != 0 )
    return -1073741811;
  if( (unsigned __int16)Length > MaximumLength )
    return -1073741811;
  if( MaximumLength == 0xFFFF )
    return -1073741811;
  Buffer = SourceString->Buffer;
  if( !Buffer && ((_WORD)Length || MaximumLength) )
    return -1073741811;
  *ppszSrc = Buffer;
  *(_QWORD *)pcchSrcLength = Length >> 1;
  return v6;
}

Referenced by:

RtlStringCbCopyUnicodeString