diff options
Diffstat (limited to 'usr/src/cmd')
| -rw-r--r-- | usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c | 97 | ||||
| -rw-r--r-- | usr/src/cmd/fm/eversholt/eftinfo/common/eftinfo.c | 3 | ||||
| -rw-r--r-- | usr/src/cmd/fm/eversholt/esc/common/escmain.c | 3 | ||||
| -rw-r--r-- | usr/src/cmd/fm/modules/common/eversholt/eval.c | 1 | ||||
| -rw-r--r-- | usr/src/cmd/policykit/polkit-is-privileged.c | 1 | ||||
| -rw-r--r-- | usr/src/cmd/pools/poolstat/poolstat.c | 2 | ||||
| -rw-r--r-- | usr/src/cmd/refer/refer2.c | 4 | ||||
| -rw-r--r-- | usr/src/cmd/tbl/t4.c | 6 | ||||
| -rw-r--r-- | usr/src/cmd/tbl/t6.c | 4 | ||||
| -rw-r--r-- | usr/src/cmd/tbl/t7.c | 1 | ||||
| -rw-r--r-- | usr/src/cmd/tbl/t8.c | 3 | ||||
| -rw-r--r-- | usr/src/cmd/tcpd/safe_finger.c | 10 | ||||
| -rw-r--r-- | usr/src/cmd/tr/tr.c | 2 | ||||
| -rw-r--r-- | usr/src/cmd/tsol/updatehome/updatehome.c | 1 |
14 files changed, 106 insertions, 32 deletions
diff --git a/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c b/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c index 2607c5cde6..475e915b2e 100644 --- a/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c +++ b/usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c @@ -23,7 +23,7 @@ * Copyright (c) 1990 Mentat Inc. * netstat.c 2.2, last change 9/9/91 * MROUTING Revision 3.5 - * Copyright (c) 2017, Joyent, Inc. + * Copyright 2018, Joyent, Inc. */ /* @@ -236,6 +236,7 @@ static void fatal(int errcode, char *str1, ...); static boolean_t Aflag = B_FALSE; /* All sockets/ifs/rtng-tbls */ +static boolean_t CIDRflag = B_FALSE; /* CIDR for IPv4 -i/-r addrs */ static boolean_t Dflag = B_FALSE; /* DCE info */ static boolean_t Iflag = B_FALSE; /* IP Traffic Interfaces */ static boolean_t Mflag = B_FALSE; /* STREAMS Memory Statistics */ @@ -446,12 +447,16 @@ main(int argc, char **argv) (void) setlocale(LC_ALL, ""); (void) textdomain(TEXT_DOMAIN); - while ((c = getopt(argc, argv, "adimnrspMgvxf:P:I:DRT:")) != -1) { + while ((c = getopt(argc, argv, "acdimnrspMgvxf:P:I:DRT:")) != -1) { switch ((char)c) { case 'a': /* all connections */ Aflag = B_TRUE; break; + case 'c': + CIDRflag = B_TRUE; + break; + case 'd': /* DCE info */ Dflag = B_TRUE; IFLAGMOD(Iflag_only, 1, 0); /* see macro def'n */ @@ -3340,7 +3345,7 @@ if_report_ip4(mib2_ipAddrEntry_t *ap, boolean_t ksp_not_null) { - char abuf[MAXHOSTNAMELEN + 1]; + char abuf[MAXHOSTNAMELEN + 4]; /* Include /<num> for CIDR-printing. */ char dstbuf[MAXHOSTNAMELEN + 1]; if (ksp_not_null) { @@ -4439,7 +4444,7 @@ static boolean_t ire_report_item_v4(const mib2_ipRouteEntry_t *rp, boolean_t first, const sec_attr_list_t *attrs) { - char dstbuf[MAXHOSTNAMELEN + 1]; + char dstbuf[MAXHOSTNAMELEN + 4]; /* + "/<num>" */ char maskbuf[MAXHOSTNAMELEN + 1]; char gwbuf[MAXHOSTNAMELEN + 1]; char ifname[LIFNAMSIZ + 1]; @@ -5557,7 +5562,7 @@ mrt_report(mib_item_t *item) struct mfcctl *mfccp; int numvifs = 0; int nmfc = 0; - char abuf[MAXHOSTNAMELEN + 1]; + char abuf[MAXHOSTNAMELEN + 4]; /* Include CIDR /<num>. */ if (!(family_selected(AF_INET))) return; @@ -5976,6 +5981,57 @@ pr_ap6(const in6_addr_t *addr, uint_t port, char *proto, } /* + * Returns -2 to indicate a discontiguous mask. Otherwise returns between + * 0 and 32. + */ +static int +v4_cidr_len(uint_t mask) +{ + int rc = 0; + int i; + + for (i = 0; i < 32; i++) { + if (mask & 0x1) + rc++; + else if (rc > 0) + return (-2); /* Discontiguous IPv4 netmask. */ + + mask >>= 1; + } + + return (rc); +} + +static void +append_v4_cidr_len(char *dst, uint_t dstlen, int prefixlen) +{ + char *prefixptr; + + /* 4 bytes leaves room for '/' 'N' 'N' '\0' */ + if (strlen(dst) <= dstlen - 4) { + prefixptr = dst + strlen(dst); + } else { + /* + * Cut off last 3 chars of very-long DNS name. All callers + * should give us enough room, but name services COULD give us + * a way-too-big name (see above). + */ + prefixptr = dst + strlen(dst) - 3; + } + /* At this point "prefixptr" is guaranteed to point to 4 bytes. */ + + if (prefixlen >= 0) { + if (prefixlen > 32) /* Shouldn't happen, but... */ + prefixlen = 32; + (void) snprintf(prefixptr, 4, "/%d", prefixlen); + } else if (prefixlen == -2) { + /* "/NM" == Noncontiguous Mask. */ + (void) strcat(prefixptr, "/NM"); + } + /* Else print nothing extra. */ +} + +/* * Return the name of the network whose address is given. The address is * assumed to be that of a net or subnet, not a host. */ @@ -5988,13 +6044,17 @@ pr_net(uint_t addr, uint_t mask, char *dst, uint_t dstlen) uint_t net; int subnetshift; int error_num; + int prefixlen = -1; /* -1 == Don't print prefix! */ + /* -2 == Noncontiguous mask... */ if (addr == INADDR_ANY && mask == INADDR_ANY) { - (void) strncpy(dst, "default", dstlen); - dst[dstlen - 1] = 0; + (void) strlcpy(dst, "default", dstlen); return (dst); } + if (CIDRflag) + prefixlen = v4_cidr_len(ntohl(mask)); + if (!Nflag && addr) { if (mask == 0) { if (IN_CLASSA(addr)) { @@ -6016,6 +6076,8 @@ pr_net(uint_t addr, uint_t mask, char *dst, uint_t dstlen) while (addr & ~mask) /* compiler doesn't sign extend! */ mask = (mask | ((int)mask >> subnetshift)); + if (CIDRflag) + prefixlen = v4_cidr_len(mask); } net = addr & mask; while ((mask & 1) == 0) @@ -6038,11 +6100,13 @@ pr_net(uint_t addr, uint_t mask, char *dst, uint_t dstlen) } } if (cp != NULL) { - (void) strncpy(dst, cp, dstlen); - dst[dstlen - 1] = 0; + (void) strlcpy(dst, cp, dstlen); } else { (void) inet_ntop(AF_INET, (char *)&addr, dst, dstlen); } + + append_v4_cidr_len(dst, dstlen, prefixlen); + if (hp != NULL) freehostent(hp); return (dst); @@ -6064,15 +6128,19 @@ pr_netaddr(uint_t addr, uint_t mask, char *dst, uint_t dstlen) struct in_addr in; int error_num; uint_t nbo_addr = addr; /* network byte order */ + int prefixlen = -1; /* -1 == Don't print prefix! */ + /* -2 == Noncontiguous mask... */ addr = ntohl(addr); mask = ntohl(mask); if (addr == INADDR_ANY && mask == INADDR_ANY) { - (void) strncpy(dst, "default", dstlen); - dst[dstlen - 1] = 0; + (void) strlcpy(dst, "default", dstlen); return (dst); } + if (CIDRflag) + prefixlen = v4_cidr_len(mask); + /* Figure out network portion of address (with host portion = 0) */ if (addr) { /* Try figuring out mask if unknown (all 0s). */ @@ -6096,6 +6164,8 @@ pr_netaddr(uint_t addr, uint_t mask, char *dst, uint_t dstlen) while (addr & ~mask) /* compiler doesn't sign extend! */ mask = (mask | ((int)mask >> subnetshift)); + if (CIDRflag) + prefixlen = v4_cidr_len(mask); } net = netshifted = addr & mask; while ((mask & 1) == 0) @@ -6124,8 +6194,8 @@ pr_netaddr(uint_t addr, uint_t mask, char *dst, uint_t dstlen) } if (cp != NULL) { - (void) strncpy(dst, cp, dstlen); - dst[dstlen - 1] = 0; + (void) strlcpy(dst, cp, dstlen); + append_v4_cidr_len(dst, dstlen, prefixlen); if (hp != NULL) freehostent(hp); return (dst); @@ -6138,6 +6208,7 @@ pr_netaddr(uint_t addr, uint_t mask, char *dst, uint_t dstlen) in.s_addr = htonl(net); (void) inet_ntop(AF_INET, (char *)&in, dst, dstlen); + append_v4_cidr_len(dst, dstlen, prefixlen); if (hp != NULL) freehostent(hp); return (dst); diff --git a/usr/src/cmd/fm/eversholt/eftinfo/common/eftinfo.c b/usr/src/cmd/fm/eversholt/eftinfo/common/eftinfo.c index 68332725d6..03f06dfae7 100644 --- a/usr/src/cmd/fm/eversholt/eftinfo/common/eftinfo.c +++ b/usr/src/cmd/fm/eversholt/eftinfo/common/eftinfo.c @@ -29,8 +29,6 @@ * modules is driven by this file. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <stdio.h> #include <string.h> #ifdef sun @@ -161,6 +159,7 @@ main(int argc, char *argv[]) VERSION_MAJOR, VERSION_MINOR); out(O_DIE|O_USAGE, "%s\n%s", Usage, Help); /*NOTREACHED*/ + break; case 'p': pflag++; diff --git a/usr/src/cmd/fm/eversholt/esc/common/escmain.c b/usr/src/cmd/fm/eversholt/esc/common/escmain.c index eec47214ba..8b68098fc5 100644 --- a/usr/src/cmd/fm/eversholt/esc/common/escmain.c +++ b/usr/src/cmd/fm/eversholt/esc/common/escmain.c @@ -29,8 +29,6 @@ * modules is driven by this file. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include <stdio.h> #include <string.h> #ifdef sun @@ -165,6 +163,7 @@ main(int argc, char *argv[]) VERSION_MAJOR, VERSION_MINOR); out(O_DIE|O_USAGE, "%s\n%s", Usage, Help); /*NOTREACHED*/ + break; case 'o': outfile = optarg; diff --git a/usr/src/cmd/fm/modules/common/eversholt/eval.c b/usr/src/cmd/fm/modules/common/eversholt/eval.c index 8e05ae0bc1..a3c47f91dc 100644 --- a/usr/src/cmd/fm/modules/common/eversholt/eval.c +++ b/usr/src/cmd/fm/modules/common/eversholt/eval.c @@ -1698,6 +1698,7 @@ eval_expr(struct node *np, struct lut *ex, struct node *events[], out(O_ALTFP|O_DIE, "eval_expr: wrong context for operation %s", ptree_nodetype2str(np->t)); /*NOTREACHED*/ + break; case T_NE: if (!eval_expr(np->u.expr.left, ex, events, globals, croot, diff --git a/usr/src/cmd/policykit/polkit-is-privileged.c b/usr/src/cmd/policykit/polkit-is-privileged.c index 85116cf3d0..b1a2006a95 100644 --- a/usr/src/cmd/policykit/polkit-is-privileged.c +++ b/usr/src/cmd/policykit/polkit-is-privileged.c @@ -181,6 +181,7 @@ main (int argc, char *argv[]) case LIBPOLKIT_RESULT_NOT_PRIVILEGED: g_print ("Not privileged.\n"); + goto out; case LIBPOLKIT_RESULT_NO_SUCH_PRIVILEGE: g_print ("No such privilege '%s'.\n", privilege); diff --git a/usr/src/cmd/pools/poolstat/poolstat.c b/usr/src/cmd/pools/poolstat/poolstat.c index b52b68427f..a809a7fd45 100644 --- a/usr/src/cmd/pools/poolstat/poolstat.c +++ b/usr/src/cmd/pools/poolstat/poolstat.c @@ -160,6 +160,8 @@ static void sa_update(statistic_bag_t *, int); /* statistics printing function */ static void prt_pool_stats(poolstat_list_element_t *); +static void usage(void) __NORETURN; + static void usage(void) { diff --git a/usr/src/cmd/refer/refer2.c b/usr/src/cmd/refer/refer2.c index f6fe088d3c..f8605e227b 100644 --- a/usr/src/cmd/refer/refer2.c +++ b/usr/src/cmd/refer/refer2.c @@ -12,8 +12,6 @@ * specifies the terms and conditions for redistribution. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include "refer..c" #include <locale.h> #define NFLD 30 @@ -137,6 +135,8 @@ again: while (*p != '\n') p++; *++p = 0; + /* FALLTHROUGH */ + case 1: if (endpush) if (nr = chkdup(answer)) { diff --git a/usr/src/cmd/tbl/t4.c b/usr/src/cmd/tbl/t4.c index 262ff12ca2..e2cec8e533 100644 --- a/usr/src/cmd/tbl/t4.c +++ b/usr/src/cmd/tbl/t4.c @@ -13,8 +13,6 @@ * specifies the terms and conditions for redistribution. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* t4.c: read table specification */ # include "t..c" int oncol; @@ -62,10 +60,12 @@ while (c=get1char()) default: if (c != tab) error(gettext("bad table specification character")); + /* FALLTHROUGH */ case ' ': /* note this is also case tab */ continue; case '\n': if(sawchar==0) continue; + /* FALLTHROUGH */ case ',': case '.': /* end of table specification */ ncol = max(ncol, icol); @@ -96,7 +96,9 @@ while (c=get1char()) continue; case 'C': case 'S': case 'R': case 'N': case 'L': case 'A': c += ('a'-'A'); + /* FALLTHROUGH */ case '_': if (c=='_') c= '-'; + /* FALLTHROUGH */ case '=': case '-': case '^': case 'c': case 's': case 'n': case 'r': case 'l': case 'a': diff --git a/usr/src/cmd/tbl/t6.c b/usr/src/cmd/tbl/t6.c index e862b71de1..db4d2ae3b3 100644 --- a/usr/src/cmd/tbl/t6.c +++ b/usr/src/cmd/tbl/t6.c @@ -13,8 +13,6 @@ * specifies the terms and conditions for redistribution. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* t6.c: compute tab stops */ # define tx(a) (a>(char *)0 && a<(char *)128) # include "t..c" @@ -58,6 +56,7 @@ for(icol=0; icol <ncol; icol++) doubled[icol]=1; fprintf(tabout, ".if \\n(%c->\\n(%d .nr %d \\n(%c-\n",s,S2,S2,s); } + /* FALLTHROUGH */ case 'n': if (table[ilin][icol].rcol!=0) { @@ -78,6 +77,7 @@ for(icol=0; icol <ncol; icol++) } continue; } + /* FALLTHROUGH */ case 'r': case 'c': case 'l': diff --git a/usr/src/cmd/tbl/t7.c b/usr/src/cmd/tbl/t7.c index 5cdd9fc316..d1327eb89f 100644 --- a/usr/src/cmd/tbl/t7.c +++ b/usr/src/cmd/tbl/t7.c @@ -62,6 +62,7 @@ for(c=0; c<ncol; c++) if (table[ldata][c].rcol) if (lused[c]) /*Zero field width*/ fprintf(tabout, "\\n(%du ",c+CMID); + /* FALLTHROUGH */ case 'c': case 'l': case 'r': diff --git a/usr/src/cmd/tbl/t8.c b/usr/src/cmd/tbl/t8.c index 0b05b43b4f..8d859622e2 100644 --- a/usr/src/cmd/tbl/t8.c +++ b/usr/src/cmd/tbl/t8.c @@ -12,8 +12,6 @@ * specifies the terms and conditions for redistribution. */ -#pragma ident "%Z%%M% %I% %E% SMI" - /* t8.c: write out one line of output table */ # include "t..c" # include <locale.h> @@ -173,6 +171,7 @@ for(c=0; c<ncol; c++) form=1; break; } + /* FALLTHROUGH */ case 'c': form=3; break; case 'r': diff --git a/usr/src/cmd/tcpd/safe_finger.c b/usr/src/cmd/tcpd/safe_finger.c index be41d9bc0f..fcf4a22084 100644 --- a/usr/src/cmd/tcpd/safe_finger.c +++ b/usr/src/cmd/tcpd/safe_finger.c @@ -14,16 +14,13 @@ * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. */ -#ifndef lint -static char sccsid[] = "@(#) safe_finger.c 1.4 94/12/28 17:42:41"; -#endif - /* System libraries */ #include <sys/types.h> #include <sys/stat.h> #include <signal.h> #include <stdio.h> +#include <stdlib.h> #include <ctype.h> #include <pwd.h> @@ -40,6 +37,7 @@ char path[] = "PATH=/bin:/usr/bin:/usr/ucb:/usr/bsd:/etc:/usr/etc:/usr/sbin"; #define UNPRIV_NAME "nobody" /* Preferred privilege level */ #define UNPRIV_UGID 32767 /* Default uid and gid */ +void perror_exit(char *text) __NORETURN; int finger_pid; void cleanup(sig) @@ -136,8 +134,8 @@ char **argv; /* perror_exit - report system error text and terminate */ -void perror_exit(text) -char *text; +void +perror_exit(char *text) { perror(text); exit(1); diff --git a/usr/src/cmd/tr/tr.c b/usr/src/cmd/tr/tr.c index 4627e590a6..49a8ccb1a8 100644 --- a/usr/src/cmd/tr/tr.c +++ b/usr/src/cmd/tr/tr.c @@ -52,7 +52,7 @@ STR s1 = { STRING1, NORMAL, 0, OOBCH, 0, { 0, OOBCH }, NULL, NULL }; STR s2 = { STRING2, NORMAL, 0, OOBCH, 0, { 0, OOBCH }, NULL, NULL }; static struct cset *setup(char *, STR *, int, int); -static void usage(void); +static void usage(void) __NORETURN; static wint_t cmap_lookup(struct cmap *cm, wint_t from) diff --git a/usr/src/cmd/tsol/updatehome/updatehome.c b/usr/src/cmd/tsol/updatehome/updatehome.c index 45225fc7e8..9cb43dce04 100644 --- a/usr/src/cmd/tsol/updatehome/updatehome.c +++ b/usr/src/cmd/tsol/updatehome/updatehome.c @@ -139,6 +139,7 @@ main(int argc, char **argv) case '?': /* switch error */ (void) fprintf(stderr, gettext("Bad option -%c.\n"), (char)optopt); + /* FALLTHROUGH */ default: (void) fprintf(stderr, gettext("usage: %s [-cirs].\n"), |
