Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

FastZip.CreateZip crashes when used with certain buggy Directory enumeration on .NET 5

Offen
#676 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
25/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
csharp
Bereich
tooling

Rechercherichtung

Beginne in FastZip.cs bei der referenzierten Zeile und untersuche, wie CreateZip FileSystemScanner verwendet. Überprüfe den angeforderten Erweiterungspunkt und die bereitgestellte Umgehungslösung für die Enumeration. Bestätige anschließend, dass ein Aufrufer für den beschriebenen .NET 5-Fall einen benutzerdefinierten Scanner bereitstellen kann, ohne dass FastZip.CreateZip fehlschlägt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

enhancement zip

Not really a bug, more like a feature suggestion.

Steps to reproduce
  1. In .net 5, directory enumeration has bugs with WebDav (https://github.com/dotnet/runtime/issues/46723#issuecomment-928090089), not fixed in .net 6 and with no other immediate official solution in sight;
  2. This causes crashes when calling FastZip.CreateZip as the GetDirectories/GetFiles return invalid data;
  3. A workaround is available - use something like this on the GetDirectories-returned data:
public static string[] FixupNet5Enumeration(string[] items)
{
    return items
        .Select(t => t.TrimEnd('\0'))
        .Where(t => {
            var itemName = Path.GetFileName(t);
            return itemName != "." && itemName != "..";
        })
        .ToArray();
}
  1. SharpZipLib nicely wraps the Directory.GetDirectories call into the FileSystemScanner class. However it is not possible to supply custom FileSystemScanners to FastZip.CreateZip. It would be helpful in this case as I could just copy that class and insert the required fixup calls. It would be necessary to create an interface around FileSystemScanner and to change to public the method

https://github.com/icsharpcode/SharpZipLib/blob/612969e574fd9d922314f24923792e343871f102/src/ICSharpCode.SharpZipLib/Zip/FastZip.cs#L477

What do you think?

Expected behavior

FastZip.CreateZip should offer an override to specify custom FileSystemScanners.

Actual behavior

FastZip.CreateZip throws exception as the paths returned by Directory.GetDirectories are not valid paths.

Version of SharpZipLib

1.3.3

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

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus icsharpcode/SharpZipLib

Alle Issues in icsharpcode/SharpZipLib

Ähnliche Issues

Weitere Issues zu C#

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.