chiark / gitweb /
@@ -8,6 +8,7 @@
[userv.git] / servexec.c
index fa8b8ac033d4d6e65a179e1e893184469e2af571..a71b64f1e78bac9663f3c4f26c54ab357709b657 100644 (file)
@@ -35,6 +35,7 @@
 #include "common.h"
 #include "daemon.h"
 #include "lib.h"
+#include "both.h"
 #include "version.h"
 
 static void NONRETURNING serv_syscallfail(const char *msg) {
@@ -70,7 +71,7 @@ void bisexec_version(const char *const *argv) {
   const unsigned char *p;
   int i;
   
-  printf("uservd version " VERSION VEREXT "; copyright (C)1996-1997 Ian Jackson.\n"
+  printf("uservd version " VERSION VEREXT "; copyright (C)1996-2000 Ian Jackson.\n"
 #ifdef DEBUG
         "DEBUGGING VERSION"
 #else
@@ -190,7 +191,7 @@ static const char *see_c_group(void) {
 static const char *seei_gid(int i) {
   static char buf[CHAR_BIT*sizeof(gid_t)/3+4];
   
-  snyprintf(buf,sizeof(buf),"%d",calling_gids[i]);
+  snyprintf(buf,sizeof(buf),"%ld",(long)calling_gids[i]);
   return buf;
 }
 static const char *see_c_gid(void) {
@@ -265,7 +266,8 @@ void execservice(const int synchsocket[], int clientfd) {
     fdarray[fd].holdfd= -1;
   }
   for (fd=0; fd<fdarrayused; fd++) {
-    if (fdarray[fd].realfd < fdarrayused) fdarray[fdarray[fd].realfd].holdfd= fd;
+    if (fdarray[fd].realfd < fdarrayused && fdarray[fd].realfd >= 0)
+      fdarray[fdarray[fd].realfd].holdfd= fd;
   }
   for (fd=0; fd<fdarrayused; fd++) {
     realfd= fdarray[fd].realfd;