Skip to content

Commit f4dc563

Browse files
committed
Fixes execute permissions for files inside a dir added to tar using copyArchiveToContainerCmdIml.
Files added to tar are stored with 644 permission mode. As a result, execute permissions are discarded. This fix retains permissions for files inside directories copied with copyArchiveToContainerCmdIml.
1 parent d2b2a2d commit f4dc563

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/main/java/com/github/dockerjava/core/util/TarDirWalker.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,11 @@ public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) th
3333

3434
@Override
3535
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
36-
CompressArchiveUtil.putTarEntry(tarArchiveOutputStream,
37-
new TarArchiveEntry(FilePathUtil.relativize(basePath, file)), file);
36+
TarArchiveEntry tarEntry = new TarArchiveEntry(FilePathUtil.relativize(basePath, file));
37+
if (filePath.toFile().canExecute()) {
38+
tarEntry.setMode(tarEntry.getMode() | 0755);
39+
}
40+
CompressArchiveUtil.putTarEntry(tarArchiveOutputStream, tarEntry, file);
3841
return FileVisitResult.CONTINUE;
3942
}
4043

0 commit comments

Comments
 (0)