Adding to .zip archive removes file system access rules
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginnen Sie in src/ICSharpCode.SharpZipLib/Zip/ZipFile.cs beim Abschlusscode um die Zeilen 3132-3143 sowie bei der Behandlung der temporären und endgültigen Ausgabe um die Zeilen 4663-4713. Reproduzieren Sie das Problem mit dem bereitgestellten AddEntryRevertingFilePermissions-Test und fügen Sie eine Regressionstestabdeckung hinzu, die zeigt, dass eine Zugriffsregel für das Archiv nach CommitUpdate() erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
When adding to a .zip archive on disk, the update does not happen in place. Instead, a temporary .zip file with the updated contents is created in a temporary directory first, which replaces the original archive after a successful write. As a result, any file system access rules set on the .zip archive that is updated are lost.
Steps to reproduce
- Run the snippet below in a debugger
[Test]
[Category("Zip")]
[Category("CreatesTempFile")]
public void AddEntryRevertingFilePermissions()
{
const string TestValue = "0001000";
string tempFile = "c:/temp/";
Assert.IsNotNull(tempFile, "No permission to execute this test?");
tempFile = Path.Combine(tempFile, "SharpZipTest.Zip");
// create empty zip file
using (ZipFile f = ZipFile.Create(tempFile))
{
f.BeginUpdate();
f.CommitUpdate();
}
Console.WriteLine("break here and manually amend permissions for c:/temp/SharpZipTest.Zip by adding a rule");
using (ZipFile f = new ZipFile(tempFile))
{
var m = new StringMemoryDataSource(TestValue);
f.BeginUpdate();
f.Add(m, "a.dat");
f.CommitUpdate();
}
Console.WriteLine("permissions for c:/temp/SharpZipTest.Zip are reverted");
}
- Break in the middle and amend permissions to the file by adding an access rule.
- Run to completion and verify that the file permission has reverted.
Expected behavior
File permissions should be retained
Actual behavior
File permissions inherited from temporary directory (e.g. C:\Users\username\AppData\Local\Temp\) are set
Version of SharpZipLib
Obtained from (only keep the relevant lines)
- Compiled from source, commit: https://github.com/icsharpcode/SharpZipLib/commit/cd5310f5b7eed595110b76a2f7ae5ee013cc50f1
Further detail
The update is finalised: (directUpdate is false)
https://github.com/icsharpcode/SharpZipLib/blob/cd5310f5b7eed595110b76a2f7ae5ee013cc50f1/src/ICSharpCode.SharpZipLib/Zip/ZipFile.cs#L3132-L3143
The temporary output (pointing to a temporary directory ) is created at https://github.com/icsharpcode/SharpZipLib/blob/cd5310f5b7eed595110b76a2f7ae5ee013cc50f1/src/ICSharpCode.SharpZipLib/Zip/ZipFile.cs#L4663-L4669
The final output is created at
https://github.com/icsharpcode/SharpZipLib/blob/cd5310f5b7eed595110b76a2f7ae5ee013cc50f1/src/ICSharpCode.SharpZipLib/Zip/ZipFile.cs#L4676-L4713
- 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
-
0 - Backlog Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
BrighterCommand/Brighter#4444 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
Maintainer antworten meist innerhalb von 1 Tag
-
area:frontend bug FE P3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
klasolsson81/jobbliggaren#1915 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
microsoft/vscode-copilotstudio#431 ·
Maintainer antworten meist innerhalb von 2 Tagen