From f44565234a719600bbd8dc66308bc7be2683a8a6 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Sat, 30 Sep 2017 10:17:07 +0000 Subject: Use mkdtemp() for the new livedir in s6-rc-update --- src/s6-rc/s6-rc-update.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/s6-rc/s6-rc-update.c b/src/s6-rc/s6-rc-update.c index a6e7cfe..5dfd0d7 100644 --- a/src/s6-rc/s6-rc-update.c +++ b/src/s6-rc/s6-rc-update.c @@ -2,10 +2,12 @@ #include #include +#include #include #include #include #include +#include #include #include #include @@ -19,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -30,6 +31,7 @@ #define USAGE "s6-rc-update [ -n ] [ -v verbosity ] [ -t timeout ] [ -l live ] [ -f conversion_file ] [ -b ] newdb" #define dieusage() strerr_dieusage(100, USAGE) #define dienomem() strerr_diefu1sys(111, "build string") ; +#define SUFFIX ":update:XXXXXX" static char const *live = S6RC_LIVE_BASE ; static size_t livelen = sizeof(S6RC_LIVE_BASE) - 1 ; @@ -333,9 +335,10 @@ static inline void make_new_livedir (unsigned char const *oldstate, s6rc_db_t co if (sareadlink(&satmp, live) < 0) strerr_diefu2sys(111, "readlink ", live) ; if (!s6rc_sanitize_dir(sa, live, &dirlen)) dienomem() ; llen = sa->len ; - if (!random_sauniquename(sa, 8) || !stralloc_0(sa)) dienomem() ; + if (!stralloc_catb(sa, SUFFIX, sizeof(SUFFIX))) dienomem() ; newlen = --sa->len ; - if (mkdir(sa->s + sabase, 0755) < 0) strerr_diefu2sys(111, "mkdir ", sa->s + sabase) ; + if (!mkdtemp(sa->s + sabase)) strerr_diefu2sys(111, "mkdtemp ", sa->s + sabase) ; + if (chmod(sa->s + sabase, 0755) < 0) { e = errno ; goto err ; } { size_t tmplen = satmp.len ; char fn[llen - sabase + 9] ; @@ -642,9 +645,6 @@ int main (int argc, char const *const *argv, char const *const *envp) strerr_dief2x(100, live, " is not an absolute path") ; livelen = strlen(live) ; - if (!random_init()) - strerr_diefu1sys(111, "init random generator") ; - { int livelock, oldlock, newlock ; int fdoldc, fdnewc ; -- cgit v1.2.3