chiark / gitweb /
server/admin: Brown-paper-bag fix.
[tripe] / server / admin.c
index 382baca97b7ea6e85c2705a477b72fbd127845ad..1a4d2a45c92b80f474441c4676d6ca325d382163 100644 (file)
@@ -1062,7 +1062,7 @@ static void a_resolve(admin *a, admin_resop *r, const char *tag,
   r->sa.sin.sin_family = AF_INET;
   r->sasz = sizeof(r->sa.sin);
   r->addr = xstrdup(av[i]);
-  if (!av[i + i])
+  if (!av[i + 1])
     pt = TRIPE_PORT;
   else {
     pt = strtoul(av[i + 1], &p, 0);
@@ -2025,7 +2025,7 @@ static void a_line(char *p, size_t len, void *vp)
 {
   admin *a = vp;
   const acmd *c;
-  char *av[16];
+  char *av[16 + 1];
   size_t ac;
 
   TIMER;
@@ -2040,9 +2040,10 @@ static void a_line(char *p, size_t len, void *vp)
     }
     return;
   }
-  ac = str_qsplit(p, av, 16, 0, STRF_QUOTE);
+  ac = str_qsplit(p, av, N(av) - 1, 0, STRF_QUOTE);
   if (!ac)
     return;
+  av[ac] = 0;
   for (c = acmdtab; c->name; c++) {
     if (mystrieq(av[0], c->name)) {
       ac--;