chiark / gitweb /
Bugfix for "permits nothing"; ATXTLEN buffer overflow fixed.
[userv-utils.git] / ipif / service.c
index 0050dd2020078a7f189506ce11283143b5175e3b..d2591ba9e1f648148f0edaa770fe690cdddf9659 100644 (file)
@@ -49,7 +49,7 @@
 
 #define NARGS 4
 #define MAXEXROUTES 5
-#define ATXTLEN 12
+#define ATXTLEN 16
 
 static const unsigned long gidmaxval= (unsigned long)((gid_t)-2);
 static const char *const protos_ok[]= { "slip", "cslip", "adaptive", 0 };
@@ -276,6 +276,7 @@ static void permit(unsigned long pprefix, unsigned long pmask) {
   int i, any;
   
   assert(!(pprefix & ~pmask));
+  any= 0;
 
   if (!proto) fputs("permits",stdout);
   if (addrnet_isin(localaddr,~0UL, pprefix,pmask)) {
@@ -293,7 +294,7 @@ static void permit(unsigned long pprefix, unsigned long pmask) {
     }
   }
   if (!proto) {
-    if (!any) fputs(" nothing!",stderr);
+    if (!any) fputs(" nothing",stdout);
     putchar('\n');
   }
 }
@@ -679,7 +680,7 @@ static void startslattach(void) {
   }
   setsigmask(&fullset);
   l= strlen(ifnbuf);
-  if (l<0 || ifnbuf[l-1] != '\n') fatal("slattach gave strange output `%s'",ifnbuf);
+  if (l<=0 || ifnbuf[l-1] != '\n') fatal("slattach gave strange output `%s'",ifnbuf);
   ifnbuf[l-1]= 0;
   for (k=l; k>0 && ifnbuf[k-1]!=' '; k--);
   ifname= ifnbuf+k;