summaryrefslogtreecommitdiff
path: root/usr/src/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd')
-rw-r--r--usr/src/cmd/cmd-inet/usr.bin/netstat/netstat.c97
-rw-r--r--usr/src/cmd/fm/eversholt/eftinfo/common/eftinfo.c3
-rw-r--r--usr/src/cmd/fm/eversholt/esc/common/escmain.c3
-rw-r--r--usr/src/cmd/fm/modules/common/eversholt/eval.c1
-rw-r--r--usr/src/cmd/policykit/polkit-is-privileged.c1
-rw-r--r--usr/src/cmd/pools/poolstat/poolstat.c2
-rw-r--r--usr/src/cmd/refer/refer2.c4
-rw-r--r--usr/src/cmd/tbl/t4.c6
-rw-r--r--usr/src/cmd/tbl/t6.c4
-rw-r--r--usr/src/cmd/tbl/t7.c1
-rw-r--r--usr/src/cmd/tbl/t8.c3
-rw-r--r--usr/src/cmd/tcpd/safe_finger.c10
-rw-r--r--usr/src/cmd/tr/tr.c2
-rw-r--r--usr/src/cmd/tsol/updatehome/updatehome.c1
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"),