From: Lou Woods <lou.wo...@oarcorp.com>

rcmdsh() and innetgr() are referenced by rcmd, but aren’t available
in libbsd and are unresolvable external symbols when libbsd.a is
processed by the RTL.

innetgr() is part of netgroup and could be ported in at some point
in the future.

rcmdsh() uses fork() and exec() so uses of rcmdsh function have been
removed.
---
 freebsd/lib/libc/net/rcmd.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/freebsd/lib/libc/net/rcmd.c b/freebsd/lib/libc/net/rcmd.c
index bc6a583..a35faa7 100644
--- a/freebsd/lib/libc/net/rcmd.c
+++ b/freebsd/lib/libc/net/rcmd.c
@@ -64,7 +64,9 @@ __FBSDID("$FreeBSD$");
 #include "un-namespace.h"
 #include "libc_private.h"
 
+#ifndef __rtems__ /* netgroup/innetgr not supported in RTEMS */
 extern int innetgr( const char *, const char *, const char *, const char * );
+#endif /* __rtems__ */
 
 #define max(a, b)      ((a > b) ? a : b)
 
@@ -98,6 +100,7 @@ rcmd_af(char **ahost, int rport, const char *locuser, const 
char *remuser,
        char num[8];
        static char canonnamebuf[MAXDNAME];     /* is it proper here? */
 
+#ifndef __rtems__ /* rcmdsh not supported in RTEMS */
        /* call rcmdsh() with specified remote shell if appropriate. */
        if (!issetugid() && (p = getenv("RSH"))) {
                struct servent *sp = getservbyname("shell", "tcp");
@@ -115,6 +118,7 @@ rcmd_af(char **ahost, int rport, const char *locuser, const 
char *remuser,
                        return (rcmdsh(ahost, rport, locuser, remuser,
                            cmd, NULL));
        }
+#endif /* __rtems__ */
 
        pid = getpid();
 
@@ -624,17 +628,25 @@ __ivaliduser_sa(FILE *hostf, const struct sockaddr 
*raddr, socklen_t salen,
                                break;
                        }
                        if (buf[1] == '@')  /* match a host by netgroup */
+#ifndef __rtems__
                                hostok = hname[0] != '\0' &&
                                    innetgr(&buf[2], hname, NULL, ypdomain);
+#else /* __rtems__ */
+                           return(-1);
+#endif /* __rtems__ */
                        else            /* match a host by addr */
                                hostok = __icheckhost(raddr, salen,
                                                      (char *)&buf[1]);
                        break;
                case '-':     /* reject '-' hosts and all their users */
                        if (buf[1] == '@') {
+#ifndef __rtems__
                                if (hname[0] == '\0' ||
                                    innetgr(&buf[2], hname, NULL, ypdomain))
                                        return(-1);
+#else /* __rtems__ */
+                               return(-1);
+#endif /* __rtems__ */
                        } else {
                                if (__icheckhost(raddr, salen,
                                                 (char *)&buf[1]))
@@ -652,7 +664,11 @@ __ivaliduser_sa(FILE *hostf, const struct sockaddr *raddr, 
socklen_t salen,
                                break;
                        }
                        if (*(user+1) == '@')  /* match a user by netgroup */
+#ifndef __rtems__
                                userok = innetgr(user+2, NULL, ruser, ypdomain);
+#else /* __rtems__ */
+                           return(-1);
+#endif /* __rtems__ */
                        else       /* match a user by direct specification */
                                userok = !(strcmp(ruser, user+1));
                        break;
@@ -661,9 +677,13 @@ __ivaliduser_sa(FILE *hostf, const struct sockaddr *raddr, 
socklen_t salen,
                                if (!*(user+1))
                                        return(-1);
                                if (*(user+1) == '@') {
+#ifndef __rtems__
                                        if (innetgr(user+2, NULL,
                                                        ruser, ypdomain))
                                                return(-1);
+#else /* __rtems__ */
+                                       return(-1);
+#endif /* __rtems__ */
                                } else {
                                        if (!strcmp(ruser, user+1))
                                                return(-1);
-- 
1.8.3.1

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to