X-Git-Url: https://git.jankratochvil.net/?p=nethome.git;a=blobdiff_plain;f=src%2Fndc-reload-short.c;h=7c36597b9f0bc5562525600fe19607e1935393ea;hp=f495927d8a062d51fba7dc331eb3ef2464494fd9;hb=8bea06d29fc431ffa0c97d7e0870956c39ac675b;hpb=d0488478b9591d38a2921874f62b52a6d70d31d2 diff --git a/src/ndc-reload-short.c b/src/ndc-reload-short.c index f495927..7c36597 100644 --- a/src/ndc-reload-short.c +++ b/src/ndc-reload-short.c @@ -7,13 +7,13 @@ extern const char **environ; -#define ZONE "kratochvil.vellum.cz" +#define ZONES "jankratochvil.net","dyn.jankratochvil.net" #define SETUID 0 /* user UID */ #define SETGID 0 /* group GID */ #define PERMITTED_ENV_LIST "PWD" -#define EXEC_PATHNAME "/usr/sbin/ndc" -#define EXEC_ARGV "/usr/sbin/ndc","reload",ZONE,NULL +#define EXEC_PATHNAME "/usr/sbin/rndc" +#define EXEC_ARGV(zone) "/usr/sbin/rndc","reload",(zone),NULL #ifndef G_GNUC_NORETURN @@ -25,7 +25,7 @@ extern const char **environ; #endif /* !G_GNUC_NORETURN */ #define EXITLOG(msg...) do {\ - openlog("pserverchroot",LOG_PID,LOG_DAEMON); \ + openlog("ndc-reload-short",LOG_PID,LOG_DAEMON); \ syslog(LOG_CRIT,msg); \ closelog(); \ exit(EXIT_FAILURE); \ @@ -35,13 +35,13 @@ extern const char **environ; #define FUNCCHK(funcname,args...) do { \ if (errno=0,funcname(args)) \ - funcfail( #funcname ); \ + funcfail( #funcname "()" ); \ } while (0) static void funcfail(const char *funcname) G_GNUC_NORETURN; static void funcfail(const char *funcname) { - EXITLOG("Unable to %s(2): %s",funcname,strerror(errno)); + EXITLOG("Unable to %s: %s",funcname,strerror(errno)); } int main(int argc,char **argv) @@ -50,6 +50,16 @@ int total=0; const char *allowed[]={ PERMITTED_ENV_LIST }; const char **allp,**envp; char *dup=NULL,*s; +const char *zones_allowed[]={ ZONES }; + + errno=0; + if (argc!=2) + funcfail("argc!=2"); + for (allp=zones_allowed;allp=zones_allowed+LENGTH(zones_allowed)) + funcfail("zone rejected"); retry: for (envp=environ;*envp;envp++) { @@ -68,6 +78,6 @@ ok:; FUNCCHK(chdir,"/"); FUNCCHK(setgid,SETGID); FUNCCHK(setuid,SETUID); - errno=0,execl(EXEC_PATHNAME,EXEC_ARGV); - funcfail("execl"); + errno=0,execl(EXEC_PATHNAME,EXEC_ARGV(argv[1])); + funcfail("execl()"); }