Subject: bin/1182: rpc programs use illegal constructs
To: None <gnats-admin@sun-lamp.pc.cs.cmu.edu>
From: Arne Henrik Juul <arnej@imf.unit.no>
List: netbsd-bugs
Date: 07/01/1995 16:20:03
>Number:         1182
>Category:       bin
>Synopsis:       rpc programs use illegal constructs
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    bin-bug-people (Utility Bug People)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Jul  1 16:20:01 1995
>Originator:     Arne H. Juul
>Organization:
	University of Trondheim, Norway
>Release:        NetBSD-current, Jul  1 1995
>Environment:
	
System: NetBSD rtfm.imf.unit.no 1.0A NetBSD 1.0A (RTFM) #1: Sun Jun 11 18:53:58 MET DST 1995 root@rtfm.imf.unit.no:/usr/src/sys/arch/i386/compile/RTFM i386


>Description:
	The recent 'ansification' of various rpc programs went a
bit too far, by declaring pointers to function with only (...)
parameters. This isn't legal, as gcc 2.7.0 shows:

 : ===> rpc.rstatd
 : /store/bin/gcc -O   -c /usr/src/libexec/rpc.rstatd/rstat_proc.c
 : /usr/src/libexec/rpc.rstatd/rstat_proc.c: In function `rstat_service':
 : /usr/src/libexec/rpc.rstatd/rstat_proc.c:387: ANSI C requires a named argument before `...'
 : /usr/src/libexec/rpc.rstatd/rstat_proc.c:387: ANSI C requires a named argument before `...'
 : *** Error code 1 (continuing)
 : `all' not remade because of errors.
 : ===> rpc.rusersd
 : /store/bin/gcc -O   -c /usr/src/libexec/rpc.rusersd/rusers_proc.c
 : /usr/src/libexec/rpc.rusersd/rusers_proc.c:160: warning: #warning i386 console hack here
 : /usr/src/libexec/rpc.rusersd/rusers_proc.c: In function `rusers_service':
 : /usr/src/libexec/rpc.rusersd/rusers_proc.c:346: ANSI C requires a named argument before `...'
 : /usr/src/libexec/rpc.rusersd/rusers_proc.c:346: ANSI C requires a named argument before `...'
 : *** Error code 1 (continuing)
 : `all' not remade because of errors.
 : ===> rpc.rwalld
 : /store/bin/gcc -O   -c /usr/src/libexec/rpc.rwalld/rwalld.c
 : /usr/src/libexec/rpc.rwalld/rwalld.c: In function `wallprog_1':
 : /usr/src/libexec/rpc.rwalld/rwalld.c:145: ANSI C requires a named argument before `...'
 : /usr/src/libexec/rpc.rwalld/rwalld.c:145: ANSI C requires a named argument before `...'
 : *** Error code 1 (continuing)
 : `all' not remade because of errors.

>How-To-Repeat:
	Install gcc 2.7.0 or another picky ansi compiler. Recompile.
>Fix:
	Apply this patch:

diff -ru /usr/src/libexec/rpc.rstatd/rstat_proc.c.pre /usr/src/libexec/rpc.rstatd/rstat_proc.c
--- /usr/src/libexec/rpc.rstatd/rstat_proc.c.pre	Sat Jul  1 19:49:18 1995
+++ /usr/src/libexec/rpc.rstatd/rstat_proc.c	Sat Jul  1 19:50:00 1995
@@ -384,7 +384,7 @@
 		int fill;
 	} argument;
 	char *result;
-	bool_t (*xdr_argument) __P((...)), (*xdr_result) __P((...));
+	bool_t (*xdr_argument) (), (*xdr_result) ();
 	char *(*local) __P((void *, struct svc_req *));
 
 	switch (rqstp->rq_proc) {
diff -ru /usr/src/libexec/rpc.rusersd/rusers_proc.c.pre /usr/src/libexec/rpc.rusersd/rusers_proc.c
--- /usr/src/libexec/rpc.rusersd/rusers_proc.c.pre	Sat Jul  1 19:49:23 1995
+++ /usr/src/libexec/rpc.rusersd/rusers_proc.c	Sat Jul  1 19:50:21 1995
@@ -343,7 +343,7 @@
 		int fill;
 	} argument;
 	char *result;
-	bool_t (*xdr_argument) __P((...)), (*xdr_result) __P((...));
+	bool_t (*xdr_argument) (), (*xdr_result) ();
 	char *(*local) __P((void *, struct svc_req *));
 
 	switch (rqstp->rq_proc) {
diff -ru /usr/src/libexec/rpc.rwalld/rwalld.c.pre /usr/src/libexec/rpc.rwalld/rwalld.c
--- /usr/src/libexec/rpc.rwalld/rwalld.c.pre	Sat Jul  1 19:49:28 1995
+++ /usr/src/libexec/rpc.rwalld/rwalld.c	Sat Jul  1 19:50:30 1995
@@ -142,7 +142,7 @@
 		char *wallproc_wall_1_arg;
 	} argument;
 	char *result;
-	bool_t (*xdr_argument) __P((...)), (*xdr_result) __P((...));
+	bool_t (*xdr_argument) (), (*xdr_result) ();
 	char *(*local) __P((char **, struct svc_req *));
 
 	switch (rqstp->rq_proc) {
>Audit-Trail:
>Unformatted: