Adding to .zip archive removes file system access rules
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 45/100
Direção de pesquisa
Comece em src/ICSharpCode.SharpZipLib/Zip/ZipFile.cs, no código de finalização por volta das linhas 3132-3143 e no tratamento da saída temporária e final por volta das linhas 4663-4713. Reproduza o problema com o teste fornecido AddEntryRevertingFilePermissions e adicione cobertura de regressão mostrando que uma regra de acesso no arquivo permanece após CommitUpdate().
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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
- Linguagem predominante
- C#
- Estrelas
- 3.9k
- Forks
- 1k
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de icsharpcode/SharpZipLib
-
*no response* bug
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
icsharpcode/SharpZipLib#905 · 1 comentário ·
-
bug bzip2
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
icsharpcode/SharpZipLib#904 ·
-
SetLevel in ZipFileAbertaenhancement zip
Dificuldade 2/5 1-2 dias Facilidade para iniciantes 55/100
icsharpcode/SharpZipLib#903 ·
-
*no response* bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 32/100
icsharpcode/SharpZipLib#901 · 1 comentário ·
-
*no response* bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
icsharpcode/SharpZipLib#894 · 1 comentário ·
Todas as issues de icsharpcode/SharpZipLib
Issues semelhantes
-
area-ai untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
dotnet/extensions#7790 ·
Mantenedores costumam responder em até 1 dia
-
P2 testing
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100
Mantenedores costumam responder em até 1 dia
-
area-Infrastructure-coreclr os-ios os-maccatalyst os-tvos untriaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
dotnet/runtime#134766 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
0 - Backlog Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
BrighterCommand/Brighter#4444 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia