"/usr/sbin/ndc" -> "/usr/sbin/rndc"
authorshort <>
Sat, 16 Feb 2002 21:56:04 +0000 (21:56 +0000)
committershort <>
Sat, 16 Feb 2002 21:56:04 +0000 (21:56 +0000)
Permitted zones change:
  kratochvil.vellum.cz ->
    -> jan.kratochvil.name,kratochvil.jan.name,dyn.jan.kratochvil.name
Cosmetic fixes

src/ndc-reload-short.c

index f495927..dc28769 100644 (file)
@@ -7,13 +7,13 @@
 extern const char **environ;
 
 
-#define ZONE "kratochvil.vellum.cz"
+#define ZONES "jan.kratochvil.name","kratochvil.jan.name","dyn.jan.kratochvil.name"
 
 #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);allp++)
+               if (!strcmp(*allp,argv[1]))
+                       break;
+       if (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()");
 }