InflaterInputStream doesn't reset position of underlying stream to end of deflated data
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne bei InflaterInputStream und seinem Read-Einstiegspunkt und reproduziere dann das Beispiel mit einer Datei mit nachgestellten Daten, um zu beobachten, wie sich die Position des zugrunde liegenden Streams ändert. Als erfüllt gilt die Aufgabe, wenn sich der zugrunde liegende Stream nach der Dekomprimierung am Ende der komprimierten Daten befindet, sodass der anschließende 4-Byte-Lesevorgang die nachgestellten Daten statt gepufferter Bytes zurückgibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Steps to reproduce
- Obtain a file that contains a deflated blob with some other data following it. In my case, I have a binary file where there is a deflated blob, followed by some additional ints/floats/etc. It's important that there is trailing data after the deflated blob. It doesn't matter what the data is, it could be garbage. It just has to exist. The code below assumes there is at least 4 bytes in this trailing data.
- Run this simple program against it, after filling in appropriate values for InFile, InFileCompressedDataStartPos, InFileCompressedLength, and InFileUncompressedLength:
internal class Program
{
private static string InFile = @"";
private static int InFileCompressedDataStart = 0;
private static int InFileCompressedLength = 0;
private static int InFileUncompressedLength = 0;
public static void Main(string[] args)
{
using (var stream = File.OpenRead(InFile))
{
stream.Position = InFileCompressedDataStart;
//Encounter deflated blob in stream, and inflate it
using (var zStream = new InflaterInputStream(stream))
{
zStream.IsStreamOwner = false;
var buffer = new byte[InFileUncompressedLength];
var streamStartPos = stream.Position;
Console.WriteLine($"Stream position before inflate: {streamStartPos}");
var read = zStream.Read(buffer, 0, InFileCompressedLength);
Console.WriteLine($"InflaterInputStream read {read} bytes");
var streamEndPos = stream.Position;
Console.WriteLine($"Stream position after inflate: {streamEndPos}");
Console.WriteLine($"Stream position moved {streamEndPos - streamStartPos} bytes during read");
}
//Continue on with data following deflated blob
var testBuffer = new byte[4];
stream.Read(testBuffer, 0, 4); //This reads from the wrong offset in the file!
}
}
}
- Note the console output
Expected behavior
stream.Position should have progressed by InFileCompressedLength. (to allow the trailing data to be read independently)
Actual behavior
stream.Position progressed by some amount greater than InFileCompressedLength. (this is part way thru completely unrelated data!)
Version of SharpZipLib
1.3.1
Obtained from (only keep the relevant lines)
- Package installed using NuGet
- Vorherrschende Sprache
- C#
- Sterne
- 3.9k
- Forks
- 1k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus icsharpcode/SharpZipLib
-
*no response* bug
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 78/100
icsharpcode/SharpZipLib#905 · 1 Kommentar ·
-
bug bzip2
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
icsharpcode/SharpZipLib#904 ·
-
SetLevel in ZipFileOffenenhancement zip
Schwierigkeit 2/5 1-2 Tage Anfängerfreundlichkeit 55/100
icsharpcode/SharpZipLib#903 ·
-
*no response* bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 32/100
icsharpcode/SharpZipLib#901 · 1 Kommentar ·
-
*no response* bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
icsharpcode/SharpZipLib#894 · 1 Kommentar ·
Alle Issues in icsharpcode/SharpZipLib
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
microsoft/onnxruntime-genai#2633 ·
Maintainer antworten meist innerhalb von 1 Tag
-
python triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
microsoft/semantic-kernel#14491 ·
Maintainer antworten meist innerhalb von 2 Tagen
-
area:jobads-cv FE mvp P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
klasolsson81/jobbliggaren#1878 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
pnp/pnpcore#1878 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
SubtitleEdit/subtitleedit#15331 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag