FastZip.CreateZip crashes when used with certain buggy Directory enumeration on .NET 5
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 25/100
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
Not really a bug, more like a feature suggestion.
Steps to reproduce
- 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;
- This causes crashes when calling
FastZip.CreateZipas the GetDirectories/GetFiles return invalid data; - 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();
}
- SharpZipLib nicely wraps the
Directory.GetDirectoriescall into theFileSystemScannerclass. However it is not possible to supply customFileSystemScanners toFastZip.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 aroundFileSystemScannerand to change topublicthe method
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
- 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
-
[Simple] NavigationBar primary commands do not render AppBarButton.Content when it is a UIElementOffencontrol/navigationbar kind/bug triage/untriaged
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 90/100
unoplatform/uno.toolkit.ui#1652 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
microsoft/copilot-camp#1053 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug effort:S P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
nightscout/nocturne#1861 ·
Maintainer antworten meist innerhalb von 1 Tag
-
agentic-workflows area/Docs partner/agentic-workflows
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
microsoft/fluentui-blazor#5364 ·
Maintainer antworten meist innerhalb von 1 Tag