diff options
Diffstat (limited to 'src/logic')
-rw-r--r-- | src/logic/slbt_exec_compile.c | 7 | ||||
-rw-r--r-- | src/logic/slbt_exec_link.c | 7 | ||||
-rw-r--r-- | src/logic/slbt_exec_uninstall.c | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/src/logic/slbt_exec_compile.c b/src/logic/slbt_exec_compile.c index 7a934ab..2a407da 100644 --- a/src/logic/slbt_exec_compile.c +++ b/src/logic/slbt_exec_compile.c @@ -21,10 +21,15 @@ static int slbt_exec_compile_remove_file( struct slbt_exec_ctx * ectx, const char * target) { + int fdcwd; + (void)ectx; + /* fdcwd */ + fdcwd = slbt_driver_fdcwd(dctx); + /* remove target (if any) */ - if (!(unlink(target)) || (errno == ENOENT)) + if (!unlinkat(fdcwd,target,0) || (errno == ENOENT)) return 0; return SLBT_SYSTEM_ERROR(dctx,0); diff --git a/src/logic/slbt_exec_link.c b/src/logic/slbt_exec_link.c index d83935c..0bc474d 100644 --- a/src/logic/slbt_exec_link.c +++ b/src/logic/slbt_exec_link.c @@ -867,10 +867,15 @@ static int slbt_exec_link_remove_file( struct slbt_exec_ctx * ectx, const char * target) { + int fdcwd; + (void)ectx; + /* fdcwd */ + fdcwd = slbt_driver_fdcwd(dctx); + /* remove target (if any) */ - if (!(unlink(target)) || (errno == ENOENT)) + if (!unlinkat(fdcwd,target,0) || (errno == ENOENT)) return 0; return SLBT_SYSTEM_ERROR(dctx,0); diff --git a/src/logic/slbt_exec_uninstall.c b/src/logic/slbt_exec_uninstall.c index b904ef7..7e1d37a 100644 --- a/src/logic/slbt_exec_uninstall.c +++ b/src/logic/slbt_exec_uninstall.c @@ -101,7 +101,7 @@ static int slbt_exec_uninstall_fs_entry( } /* remove file or symlink entry */ - if (unlink(path)) + if (unlinkat(fdcwd,path,0)) return SLBT_SYSTEM_ERROR(dctx,path); /* remove empty containing directory? */ |