aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2026-01-28 20:01:54 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2026-01-28 20:01:54 +0000
commit8cb06096ab2a72fad7b05d380d3848e8535c539e (patch)
tree8d4dd01ab6a4f1c7d57b9f9e8dbccd26b54b57ec
parentcf105de131e560d90ef5b2b7a1f201c6c6c600dd (diff)
downloads6-rc-8cb06096ab2a72fad7b05d380d3848e8535c539e.tar.gz
s6-rc-repo-init: check validity of stores before creating links
-rw-r--r--src/repo/s6-rc-repo-init.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/repo/s6-rc-repo-init.c b/src/repo/s6-rc-repo-init.c
index fd3b916..c190bee 100644
--- a/src/repo/s6-rc-repo-init.c
+++ b/src/repo/s6-rc-repo-init.c
@@ -88,6 +88,17 @@ int main (int argc, char const *const *argv)
if (strchr(argv[i], '\n'))
strerr_dief1x(100, "stores cannot contain newlines in their path") ;
}
+ for (uint16_t i = 0 ; i < argc ; i++)
+ {
+ struct stat st ;
+ if (stat(argv[i], &st) == -1)
+ strerr_diefu2sys(111, "stat ", argv[i]) ;
+ if (!S_ISDIR(st.st_mode))
+ strerr_dief2x(111, argv[i], " is not a directory") ;
+ if (access(argv[i], X_OK) == -1)
+ strerr_diefu2sys(111, "access ", argv[i]) ;
+ }
+
repolen = strlen(wgola[GOLA_REPODIR]) ;
tain_now_g() ;