Hi,

the attached patch fixes all warnings that occurred on my unstable
system. This also includes a fix for the setgroups() flaw in chpst.

Regards,
Tino
diff -ru runit-1.3.3/admin/runit-1.3.3/src/chkshsgr.c 
src/runit-1.3.3/admin/runit-1.3.3/src/chkshsgr.c
--- runit-1.3.3/admin/runit-1.3.3/src/chkshsgr.c        2006-01-02 
21:39:50.000000000 +0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/chkshsgr.c    2006-03-12 
22:41:00.000000000 +0100
@@ -1,10 +1,12 @@
 /* Public domain. */
 
+#include <sys/types.h>
 #include <unistd.h>
+#include <grp.h>
 
 int main()
 {
-  short x[4];
+  gid_t x[4];
 
   x[0] = x[1] = 0;
   if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1);
diff -ru runit-1.3.3/admin/runit-1.3.3/src/chpst.c 
src/runit-1.3.3/admin/runit-1.3.3/src/chpst.c
--- runit-1.3.3/admin/runit-1.3.3/src/chpst.c   2006-01-02 21:39:50.000000000 
+0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/chpst.c       2006-03-12 
22:41:00.000000000 +0100
@@ -3,6 +3,7 @@
 #include <sys/time.h>
 #include <sys/resource.h>
 #include <unistd.h>
+#include <grp.h>
 #include "sgetopt.h"
 #include "error.h"
 #include "strerr.h"
diff -ru runit-1.3.3/admin/runit-1.3.3/src/pathexec_run.c 
src/runit-1.3.3/admin/runit-1.3.3/src/pathexec_run.c
--- runit-1.3.3/admin/runit-1.3.3/src/pathexec_run.c    2006-01-02 
21:39:50.000000000 +0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/pathexec_run.c        2006-03-12 
22:41:00.000000000 +0100
@@ -1,5 +1,6 @@
 /* Public domain. */
 
+#include <unistd.h>
 #include "error.h"
 #include "stralloc.h"
 #include "str.h"
@@ -15,7 +16,7 @@
   int savederrno;
 
   if (file[str_chr(file,'/')]) {
-    execve(file,argv,envp);
+    execve(file,(char * const *)argv,(char * const *)envp);
     return;
   }
 
@@ -32,7 +33,7 @@
     if (!stralloc_cats(&tmp,file)) return;
     if (!stralloc_0(&tmp)) return;
 
-    execve(tmp.s,argv,envp);
+    execve(tmp.s,(char * const *)argv,(char * const *)envp);
     if (errno != error_noent) {
       savederrno = errno;
       if ((errno != error_acces) && (errno != error_perm) && (errno != 
error_isdir)) return;
diff -ru runit-1.3.3/admin/runit-1.3.3/src/prot.c 
src/runit-1.3.3/admin/runit-1.3.3/src/prot.c
--- runit-1.3.3/admin/runit-1.3.3/src/prot.c    2006-01-02 21:39:50.000000000 
+0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/prot.c        2006-03-12 
22:41:00.000000000 +0100
@@ -1,12 +1,15 @@
 /* Public domain. */
 
+#include <sys/types.h>
+#include <unistd.h>
+#include <grp.h>
 #include "hasshsgr.h"
 #include "prot.h"
 
-int prot_gid(int gid)
+int prot_gid(gid_t gid)
 {
 #ifdef HASSHORTSETGROUPS
-  short x[2];
+  gid_t x[2];
   x[0] = gid; x[1] = 73; /* catch errors */
   if (setgroups(1,x) == -1) return -1;
 #else
@@ -15,7 +18,7 @@
   return setgid(gid); /* _should_ be redundant, but on some systems it isn't */
 }
 
-int prot_uid(int uid)
+int prot_uid(uid_t uid)
 {
   return setuid(uid);
 }
diff -ru runit-1.3.3/admin/runit-1.3.3/src/prot.h 
src/runit-1.3.3/admin/runit-1.3.3/src/prot.h
--- runit-1.3.3/admin/runit-1.3.3/src/prot.h    2006-01-02 21:39:50.000000000 
+0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/prot.h        2006-03-12 
22:41:00.000000000 +0100
@@ -3,7 +3,7 @@
 #ifndef PROT_H
 #define PROT_H
 
-extern int prot_gid(int);
-extern int prot_uid(int);
+extern int prot_gid(gid_t);
+extern int prot_uid(uid_t);
 
 #endif
diff -ru runit-1.3.3/admin/runit-1.3.3/src/seek_set.c 
src/runit-1.3.3/admin/runit-1.3.3/src/seek_set.c
--- runit-1.3.3/admin/runit-1.3.3/src/seek_set.c        2006-01-02 
21:39:50.000000000 +0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/seek_set.c    2006-03-12 
22:41:00.000000000 +0100
@@ -1,6 +1,7 @@
 /* Public domain. */
 
 #include <sys/types.h>
+#include <unistd.h>
 #include "seek.h"
 
 #define SET 0 /* sigh */
diff -ru runit-1.3.3/admin/runit-1.3.3/src/uidgid.h 
src/runit-1.3.3/admin/runit-1.3.3/src/uidgid.h
--- runit-1.3.3/admin/runit-1.3.3/src/uidgid.h  2006-01-02 21:39:51.000000000 
+0100
+++ src/runit-1.3.3/admin/runit-1.3.3/src/uidgid.h      2006-03-12 
22:42:34.000000000 +0100
@@ -1,10 +1,12 @@
 #ifndef UIDGID_H
 #define UIDGID_H
 
+#include <sys/types.h>
+
 struct uidgid {
-  int uid;
-  int gid[61];
-  int gids;
+  uid_t uid;
+  gid_t gid[61];
+  size_t gids;
 };
 
 extern unsigned int uidgid_get(struct uidgid *, char *, unsigned int);

Reply via email to