003 File Manager
Current Path:
/usr/src/lib/libc/net
usr
/
src
/
lib
/
libc
/
net
/
📁
..
📄
Makefile.inc
(5.08 KB)
📄
Symbol.map
(2.8 KB)
📄
base64.c
(10.39 KB)
📄
byteorder.3
(2.74 KB)
📄
ether_addr.c
(5.68 KB)
📄
ethers.3
(5.85 KB)
📄
eui64.3
(6.37 KB)
📄
eui64.c
(8.3 KB)
📄
gai_strerror.3
(2.49 KB)
📄
gai_strerror.c
(3.98 KB)
📄
getaddrinfo.3
(12.12 KB)
📄
getaddrinfo.c
(70.2 KB)
📄
gethostbydns.c
(19.1 KB)
📄
gethostbyht.c
(9.04 KB)
📄
gethostbyname.3
(8.74 KB)
📄
gethostbynis.c
(6.94 KB)
📄
gethostnamadr.c
(17.01 KB)
📄
getifaddrs.3
(4.24 KB)
📄
getifaddrs.c
(8.57 KB)
📄
getifmaddrs.3
(3 KB)
📄
getifmaddrs.c
(4.79 KB)
📄
getipnodebyname.3
(10.04 KB)
📄
getnameinfo.3
(7.6 KB)
📄
getnameinfo.c
(13.68 KB)
📄
getnetbydns.c
(12 KB)
📄
getnetbyht.c
(7.18 KB)
📄
getnetbynis.c
(6.09 KB)
📄
getnetent.3
(4.36 KB)
📄
getnetnamadr.c
(10.46 KB)
📄
getproto.c
(3.87 KB)
📄
getprotoent.3
(3.78 KB)
📄
getprotoent.c
(12.22 KB)
📄
getprotoname.c
(4.25 KB)
📄
getservent.3
(4.13 KB)
📄
getservent.c
(29.69 KB)
📄
hesiod.3
(4.19 KB)
📄
hesiod.c
(12.17 KB)
📄
hosts
(1.01 KB)
📄
hosts.equiv
(53 B)
📄
if_indextoname.3
(3.94 KB)
📄
if_indextoname.c
(2.94 KB)
📄
if_nameindex.c
(4.21 KB)
📄
if_nametoindex.c
(2.84 KB)
📄
inet.3
(7.76 KB)
📄
inet6_opt_init.3
(9.07 KB)
📄
inet6_option_space.3
(2.18 KB)
📄
inet6_rth_space.3
(6.86 KB)
📄
inet6_rthdr_space.3
(2.22 KB)
📄
inet_net.3
(5.01 KB)
📄
ip6opt.c
(15.36 KB)
📄
linkaddr.3
(3.94 KB)
📄
linkaddr.c
(4.44 KB)
📄
map_v4v6.c
(3.93 KB)
📄
name6.c
(28.18 KB)
📄
netdb_private.h
(5.2 KB)
📄
networks
(310 B)
📄
nscache.c
(10.91 KB)
📄
nscachedcli.c
(14.18 KB)
📄
nsdispatch.3
(6.25 KB)
📄
nsdispatch.c
(20.3 KB)
📄
nslexer.l
(3.01 KB)
📄
nsparser.y
(3.91 KB)
📄
nss_backends.h
(2.04 KB)
📄
nss_compat.c
(7.93 KB)
📄
nsswitch.conf
(272 B)
📄
ntoh.c
(1.75 KB)
📄
protocols
(6.24 KB)
📄
rcmd.3
(8.14 KB)
📄
rcmd.c
(18.57 KB)
📄
rcmdsh.3
(3.23 KB)
📄
rcmdsh.c
(4.95 KB)
📄
recv.c
(2.22 KB)
📄
res_config.h
(299 B)
📄
resolver.3
(11.43 KB)
📄
rthdr.c
(9.7 KB)
📄
sctp_bindx.3
(3.47 KB)
📄
sctp_connectx.3
(3.44 KB)
📄
sctp_freepaddrs.3
(2.26 KB)
📄
sctp_getaddrlen.3
(2.82 KB)
📄
sctp_getassocid.3
(2.44 KB)
📄
sctp_getpaddrs.3
(3.11 KB)
📄
sctp_opt_info.3
(3.55 KB)
📄
sctp_recvmsg.3
(8.43 KB)
📄
sctp_send.3
(11.12 KB)
📄
sctp_sendmsg.3
(10.45 KB)
📄
sctp_sys_calls.c
(30.35 KB)
📄
send.c
(2.23 KB)
📄
sockatmark.3
(3.26 KB)
📄
sockatmark.c
(1.59 KB)
📄
sourcefilter.3
(6.38 KB)
📄
sourcefilter.c
(9.71 KB)
📄
vars.c
(2.07 KB)
Editing: rcmdsh.c
/* $OpenBSD: rcmdsh.c,v 1.7 2002/03/12 00:05:44 millert Exp $ */ /*- * SPDX-License-Identifier: BSD-3-Clause * * Copyright (c) 2001, MagniComp * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the distribution. * 3. Neither the name of the MagniComp nor the names of its contributors may * be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This is an rcmd() replacement originally by * Chris Siebenmann <cks@utcc.utoronto.ca>. */ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); #include "namespace.h" #include <sys/types.h> #include <sys/socket.h> #include <sys/wait.h> #include <arpa/inet.h> #include <errno.h> #include <netdb.h> #include <paths.h> #include <pwd.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include "un-namespace.h" /* * This is a replacement rcmd() function that uses the rsh(1) * program in place of a direct rcmd(3) function call so as to * avoid having to be root. Note that rport is ignored. */ int rcmdsh(char **ahost, int rport, const char *locuser, const char *remuser, const char *cmd, const char *rshprog) { struct addrinfo hints, *res; int sp[2], error; pid_t cpid; char *p; struct passwd *pw; char num[8]; static char hbuf[NI_MAXHOST]; /* What rsh/shell to use. */ if (rshprog == NULL) rshprog = _PATH_RSH; /* locuser must exist on this host. */ if ((pw = getpwnam(locuser)) == NULL) { (void)fprintf(stderr, "rcmdsh: unknown user: %s\n", locuser); return (-1); } /* Validate remote hostname. */ if (strcmp(*ahost, "localhost") != 0) { memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_CANONNAME; hints.ai_family = PF_UNSPEC; hints.ai_socktype = SOCK_STREAM; (void)snprintf(num, sizeof(num), "%u", (unsigned int)ntohs(rport)); error = getaddrinfo(*ahost, num, &hints, &res); if (error) { fprintf(stderr, "rcmdsh: getaddrinfo: %s\n", gai_strerror(error)); return (-1); } if (res->ai_canonname) { strncpy(hbuf, res->ai_canonname, sizeof(hbuf) - 1); hbuf[sizeof(hbuf) - 1] = '\0'; *ahost = hbuf; } freeaddrinfo(res); } /* Get a socketpair we'll use for stdin and stdout. */ if (_socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, sp) == -1) { perror("rcmdsh: socketpair"); return (-1); } cpid = fork(); if (cpid == -1) { perror("rcmdsh: fork failed"); return (-1); } else if (cpid == 0) { /* * Child. We use sp[1] to be stdin/stdout, and close sp[0]. */ (void)_close(sp[0]); if (_dup2(sp[1], 0) == -1 || _dup2(0, 1) == -1) { perror("rcmdsh: dup2 failed"); _exit(255); } /* Fork again to lose parent. */ cpid = fork(); if (cpid == -1) { perror("rcmdsh: fork to lose parent failed"); _exit(255); } if (cpid > 0) _exit(0); /* In grandchild here. Become local user for rshprog. */ if (setuid(pw->pw_uid) == -1) { (void)fprintf(stderr, "rcmdsh: setuid(%u): %s\n", pw->pw_uid, strerror(errno)); _exit(255); } /* * If remote host is "localhost" and local and remote users * are the same, avoid running remote shell for efficiency. */ if (strcmp(*ahost, "localhost") == 0 && strcmp(locuser, remuser) == 0) { if (pw->pw_shell[0] == '\0') rshprog = _PATH_BSHELL; else rshprog = pw->pw_shell; p = strrchr(rshprog, '/'); execlp(rshprog, p ? p + 1 : rshprog, "-c", cmd, (char *)NULL); } else { p = strrchr(rshprog, '/'); execlp(rshprog, p ? p + 1 : rshprog, *ahost, "-l", remuser, cmd, (char *)NULL); } (void)fprintf(stderr, "rcmdsh: execlp %s failed: %s\n", rshprog, strerror(errno)); _exit(255); } else { /* Parent. close sp[1], return sp[0]. */ (void)_close(sp[1]); /* Reap child. */ (void)_waitpid(cpid, NULL, 0); return (sp[0]); } /* NOTREACHED */ }
Upload File
Create Folder