From c4b021b4f6a1f0afe85b921d84f3f8d795ed4271 Mon Sep 17 00:00:00 2001 From: Michael Spang Date: Wed, 29 Jul 2009 14:02:51 -0400 Subject: [PATCH] Fix arguments mismatch insanity My reverting some of dtbartle's zfs-related stuff left us with a hybrid zfsaddhomedir that was insane. This became a simpleaddhomedir that was almost as insane. --- src/addhomedir.c | 2 +- src/simpleaddhomedir.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/addhomedir.c b/src/addhomedir.c index a5cd27339..aa4e7b49a 100644 --- a/src/addhomedir.c +++ b/src/addhomedir.c @@ -16,7 +16,7 @@ int ceo_create_home(char *homedir, char *refquota, uid_t uid, gid_t gid, char *mode, char *acl) { char uid_str[16], gid_str[16]; char *zfs_argv[] = { "ssh", "ceo@ginseng", "/usr/sbin/simpleaddhomedir", \ - homedir, refquota, skeleton_dir, uid_str, gid_str, mode, acl, NULL }; + homedir, skeleton_dir, uid_str, gid_str, mode, NULL }; int ret = 0; assert(homedir[0]); diff --git a/src/simpleaddhomedir.c b/src/simpleaddhomedir.c index f4089a6a9..2e3086755 100644 --- a/src/simpleaddhomedir.c +++ b/src/simpleaddhomedir.c @@ -16,13 +16,12 @@ int main(int argc, char *argv[]) { char *homedir = argv[1]; char *skeldir = argv[2]; - char *mode = argv[5]; uid_t uid, gid; char *mkdir_bin = "/bin/mkdir"; char *chmod_bin = "/bin/chmod"; char *dataset = homedir; char *create_argv[] = { "mkdir", dataset, NULL }; - char *mode_argv[] = { "chmod", mode, homedir, NULL }; + char *mode_argv[] = { "chmod", "0755", homedir, NULL }; DIR *skel; struct dirent *skelent; @@ -30,6 +29,9 @@ int main(int argc, char *argv[]) { uid = atol(argv[3]); gid = atol(argv[4]); + if (setreuid(0, 0)) + fatalpe("ogawd"); + if(spawnv(mkdir_bin, create_argv)) return 1; //Quotas are ignored now, or so I'm told.