Delen via


CA2022: Vermijd inexact-lezen met Stream.Read

Eigenschappen Weergegeven als
Regel-id CA2022
Titel Vermijd inexact-lezen met Stream.Read
Categorie Betrouwbaarheid
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 9 Als waarschuwing

Oorzaak

Een aanroep naar Stream.Read of Stream.ReadAsync wordt uitgevoerd en de retourwaarde wordt niet gecontroleerd.

Beschrijving van regel

Stream.Read en Stream.ReadAsync kan minder bytes retourneren dan aangevraagd, wat resulteert in onbetrouwbare code als de retourwaarde niet wordt gecontroleerd.

Schendingen oplossen

Als u een schending wilt oplossen, controleert u de retourwaarde (het totale aantal bytes dat in de buffer is gelezen) of roept Stream.ReadExactly u aan of Stream.ReadExactlyAsync in plaats daarvan.

Opmerking

In het volgende codefragment ziet u een schending van CA2022 en de oplossing voor de schending.

void M1(Stream stream, byte[] buffer)
{
    // CA2022 violation.
    stream.Read(buffer, 0, buffer.Length);

    // Fix for the violation.
    stream.ReadExactly(buffer);
}
Shared Sub M(stream As Stream, buffer As Byte())
    ' CA2022 violation.
    stream.Read(buffer, 0, buffer.Length)

    ' Fix for the violation.
    stream.ReadExactly(buffer)
End Sub

Wanneer waarschuwingen onderdrukken

U moet waarschuwingen van deze regel niet onderdrukken, omdat uw app vastloopt als u de schendingen niet oplost.

Zie ook