- Simplify string handling, add a few asserts

svn path=/trunk/; revision=66923
This commit is contained in:
Thomas Faber 2015-03-27 18:09:51 +00:00
parent ddad8b0bd4
commit 3f7fa82ae7
2 changed files with 12 additions and 18 deletions

View file

@ -564,16 +564,16 @@ CdfsDirFindFile(PDEVICE_EXTENSION DeviceExt,
DPRINT ("Offset %lu\n", Offset); DPRINT ("Offset %lu\n", Offset);
RtlInitUnicodeString(&LongName, Name); RtlInitUnicodeString(&LongName, Name);
ShortName.Length = 0; RtlInitEmptyUnicodeString(&ShortName, ShortNameBuffer, sizeof(ShortNameBuffer));
ShortName.MaximumLength = 26; RtlZeroMemory(ShortNameBuffer, sizeof(ShortNameBuffer));
ShortName.Buffer = ShortNameBuffer;
memset(ShortNameBuffer, 0, 26);
OffsetOfEntry.QuadPart = StreamOffset.QuadPart + Offset; OffsetOfEntry.QuadPart = StreamOffset.QuadPart + Offset;
CdfsShortNameCacheGet(DirectoryFcb, &OffsetOfEntry, &LongName, &ShortName); CdfsShortNameCacheGet(DirectoryFcb, &OffsetOfEntry, &LongName, &ShortName);
DPRINT("ShortName '%wZ'\n", &ShortName); DPRINT("ShortName '%wZ'\n", &ShortName);
ASSERT(LongName.Length >= sizeof(WCHAR));
ASSERT(ShortName.Length >= sizeof(WCHAR));
if (FsRtlIsNameInExpression(&FileToFindUpcase, &LongName, TRUE, NULL) || if (FsRtlIsNameInExpression(&FileToFindUpcase, &LongName, TRUE, NULL) ||
FsRtlIsNameInExpression(&FileToFindUpcase, &ShortName, TRUE, NULL)) FsRtlIsNameInExpression(&FileToFindUpcase, &ShortName, TRUE, NULL))
{ {

View file

@ -108,6 +108,7 @@ CdfsIsNameLegalDOS8Dot3(IN UNICODE_STRING FileName
return FALSE; return FALSE;
} }
ASSERT(FileName.Length >= sizeof(WCHAR));
for (i = 0; i < FileName.Length / sizeof(WCHAR) ; i++) for (i = 0; i < FileName.Length / sizeof(WCHAR) ; i++)
{ {
/* Don't allow spaces in FileName */ /* Don't allow spaces in FileName */
@ -122,11 +123,10 @@ CdfsIsNameLegalDOS8Dot3(IN UNICODE_STRING FileName
} }
/* Finally, convert the string to call the FsRtl function */ /* Finally, convert the string to call the FsRtl function */
DbcsName.MaximumLength = 12; RtlInitEmptyAnsiString(&DbcsName, DbcsNameBuffer, sizeof(DbcsNameBuffer));
DbcsName.Buffer = DbcsNameBuffer;
if (!NT_SUCCESS(RtlUnicodeStringToCountedOemString(&DbcsName, if (!NT_SUCCESS(RtlUnicodeStringToCountedOemString(&DbcsName,
&FileName, &FileName,
FALSE ))) FALSE)))
{ {
return FALSE; return FALSE;
@ -159,10 +159,7 @@ CdfsShortNameCacheGet
if (ShortNameEntry->StreamOffset.QuadPart == StreamOffset->QuadPart) if (ShortNameEntry->StreamOffset.QuadPart == StreamOffset->QuadPart)
{ {
/* Cache hit */ /* Cache hit */
RtlCopyMemory RtlCopyUnicodeString(ShortName, &ShortNameEntry->Name);
(ShortName->Buffer, ShortNameEntry->Name.Buffer,
ShortNameEntry->Name.Length);
ShortName->Length = ShortNameEntry->Name.Length;
ExReleaseResourceLite(&DirectoryFcb->NameListResource); ExReleaseResourceLite(&DirectoryFcb->NameListResource);
DPRINT("Yield short name %wZ from cache\n", ShortName); DPRINT("Yield short name %wZ from cache\n", ShortName);
return; return;
@ -218,13 +215,10 @@ CdfsShortNameCacheGet
} }
ShortNameEntry->StreamOffset = *StreamOffset; ShortNameEntry->StreamOffset = *StreamOffset;
ShortNameEntry->Name.Buffer = ShortNameEntry->NameBuffer; RtlInitEmptyUnicodeString(&ShortNameEntry->Name,
ShortNameEntry->Name.Length = ShortName->Length; ShortNameEntry->NameBuffer,
ShortNameEntry->Name.MaximumLength = sizeof(ShortNameEntry->NameBuffer); sizeof(ShortNameEntry->NameBuffer));
RtlCopyMemory RtlCopyUnicodeString(&ShortNameEntry->Name, ShortName);
(ShortNameEntry->NameBuffer,
ShortName->Buffer,
ShortName->Length);
InsertTailList(&DirectoryFcb->ShortNameList, &ShortNameEntry->Entry); InsertTailList(&DirectoryFcb->ShortNameList, &ShortNameEntry->Entry);
ExReleaseResourceLite(&DirectoryFcb->NameListResource); ExReleaseResourceLite(&DirectoryFcb->NameListResource);