diff --git a/include/tpax/tpax.h b/include/tpax/tpax.h index 17fe7d8..e12a44b 100644 --- a/include/tpax/tpax.h +++ b/include/tpax/tpax.h @@ -168,10 +168,10 @@ tpax_api int tpax_output_error_vector (const struct tpax_driver_ctx *); tpax_api int tpax_init_ustar_header (const struct tpax_driver_ctx *, const char *, const struct stat *, const char *, struct tpax_ustar_header *); -tpax_api int tpax_file_create_memory_snapshot (const struct tpax_driver_ctx *, const char *, +tpax_api int tpax_file_create_memory_snapshot (const struct tpax_driver_ctx *, int, const char *, const struct stat *, void *); -tpax_api int tpax_file_create_tmpfs_snapshot (const struct tpax_driver_ctx *, const char *, +tpax_api int tpax_file_create_tmpfs_snapshot (const struct tpax_driver_ctx *, int, const char *, const struct stat *); /* package info */ diff --git a/src/logic/tpax_archive_append.c b/src/logic/tpax_archive_append.c index caa2606..be9b2fa 100644 --- a/src/logic/tpax_archive_append.c +++ b/src/logic/tpax_archive_append.c @@ -126,12 +126,12 @@ int tpax_archive_append( /* snapshot */ if (membuf) { if (tpax_file_create_memory_snapshot( - dctx,*uctx->path, + dctx,fdat,*uctx->path, uctx->st,membuf) < 0) return TPAX_NESTED_ERROR(dctx); } else { if ((fdtmp = tpax_file_create_tmpfs_snapshot( - dctx,*uctx->path, + dctx,fdat,*uctx->path, uctx->st)) < 0) return TPAX_NESTED_ERROR(dctx); diff --git a/src/logic/tpax_file_create_memory_snapshot.c b/src/logic/tpax_file_create_memory_snapshot.c index 7db21ea..bbcd1df 100644 --- a/src/logic/tpax_file_create_memory_snapshot.c +++ b/src/logic/tpax_file_create_memory_snapshot.c @@ -25,6 +25,7 @@ int tpax_file_create_memory_snapshot( const struct tpax_driver_ctx * dctx, + int fdat, const char * path, const struct stat * srcst, void * addr) @@ -44,11 +45,7 @@ int tpax_file_create_memory_snapshot( return TPAX_CUSTOM_ERROR(dctx,TPAX_ERR_REGION_SIZE); /* open */ - fd = openat( - tpax_driver_fdcwd(dctx),path, - O_CLOEXEC|O_NOCTTY|O_NOFOLLOW); - - if (fd < 0) + if ((fd = openat(fdat,path,O_CLOEXEC|O_NOCTTY|O_NOFOLLOW,0)) < 0) return TPAX_SYSTEM_ERROR(dctx); /* stat compare */ diff --git a/src/logic/tpax_file_create_tmpfs_snapshot.c b/src/logic/tpax_file_create_tmpfs_snapshot.c index 3bb48b7..bdfa396 100644 --- a/src/logic/tpax_file_create_tmpfs_snapshot.c +++ b/src/logic/tpax_file_create_tmpfs_snapshot.c @@ -26,6 +26,7 @@ int tpax_file_create_tmpfs_snapshot( const struct tpax_driver_ctx * dctx, + int fdat, const char * path, const struct stat * srcst) { @@ -55,11 +56,7 @@ int tpax_file_create_tmpfs_snapshot( } /* open */ - fdsrc = openat( - tpax_driver_fdcwd(dctx),path, - O_CLOEXEC|O_NOCTTY|O_NOFOLLOW); - - if (fdsrc < 0) { + if ((fdsrc = openat(fdat,path,O_CLOEXEC|O_NOCTTY|O_NOFOLLOW,0)) < 0) { close(fdtmp); return TPAX_SYSTEM_ERROR(dctx); }