diff options
Diffstat (limited to 'sbin/sysctl')
-rw-r--r-- | sbin/sysctl/sysctl.c | 107 |
1 files changed, 7 insertions, 100 deletions
diff --git a/sbin/sysctl/sysctl.c b/sbin/sysctl/sysctl.c index 39588ee6516..4c78bf1e0fe 100644 --- a/sbin/sysctl/sysctl.c +++ b/sbin/sysctl/sysctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sysctl.c,v 1.227 2017/07/17 06:32:53 dlg Exp $ */ +/* $OpenBSD: sysctl.c,v 1.228 2017/07/19 06:30:54 florian Exp $ */ /* $NetBSD: sysctl.c,v 1.9 1995/09/30 07:12:50 thorpej Exp $ */ /* @@ -182,8 +182,6 @@ int Aflag, aflag, nflag, qflag; /* prototypes */ void debuginit(void); void listall(char *, struct list *); -int parse_hex_char(char); -ssize_t parse_hex_string(unsigned char *, size_t, const char *); void parse(char *, int); void parse_baddynamic(int *, size_t, char *, void **, size_t *, int, int); void usage(void); @@ -288,53 +286,6 @@ listall(char *prefix, struct list *lp) } } -int -parse_hex_char(char ch) -{ - if (ch >= '0' && ch <= '9') - return (ch - '0'); - - ch = tolower(ch); - if (ch >= 'a' && ch <= 'f') - return (ch - 'a' + 10); - - return (-1); -} - -ssize_t -parse_hex_string(unsigned char *dst, size_t dstlen, const char *src) -{ - ssize_t len = 0; - int digit; - - while (len < dstlen) { - if (*src == '\0') - return (len); - - digit = parse_hex_char(*src++); - if (digit == -1) - return (-1); - dst[len] = digit << 4; - - digit = parse_hex_char(*src++); - if (digit == -1) - return (-1); - - dst[len] |= digit; - len++; - } - - while (*src != '\0') { - if (parse_hex_char(*src++) == -1 || - parse_hex_char(*src++) == -1) - return (-1); - - len++; - } - - return (len); -} - /* * Parse a name into a MIB entry. * Lookup and print out the MIB entry if it exists. @@ -351,7 +302,6 @@ parse(char *string, int flags) struct list *lp; int mib[CTL_MAXNAME]; char *cp, *bufp, buf[SYSCTL_BUFSIZ]; - unsigned char hex[SYSCTL_BUFSIZ]; (void)strlcpy(buf, string, sizeof(buf)); bufp = buf; @@ -616,11 +566,6 @@ parse(char *string, int flags) len = sysctl_inet6(string, &bufp, mib, flags, &type); if (len < 0) return; -#ifdef IPV6CTL_SOIIKEY - if (mib[2] == IPPROTO_IPV6 && - mib[3] == IPV6CTL_SOIIKEY) - special |= HEX; -#endif if ((mib[2] == IPPROTO_IPV6 && mib[3] == IPV6CTL_MRTMFC) || (mib[2] == IPPROTO_IPV6 && mib[3] == IPV6CTL_MRTMIF) || @@ -772,27 +717,6 @@ parse(char *string, int flags) newval = &quadval; newsize = sizeof(quadval); break; - case CTLTYPE_STRING: - if (special & HEX) { - ssize_t len; - - len = parse_hex_string(hex, sizeof(hex), - newval); - if (len == -1) { - warnx("%s: hex string %s: invalid", - string, newval); - return; - } - if (len > sizeof(hex)) { - warnx("%s: hex string %s: too long", - string, newval); - return; - } - - newval = hex; - newsize = len; - } - break; } } size = (special & SMALLBUF) ? 512 : SYSCTL_BUFSIZ; @@ -1012,30 +936,13 @@ parse(char *string, int flags) if (newval == NULL) { if (!nflag) (void)printf("%s%s", string, equ); - if (special & HEX) { - size_t i; - for (i = 0; i < size; i++) { - (void)printf("%02x", - (unsigned char)buf[i]); - } - (void)printf("\n"); - } else - (void)puts(buf); - } else if (!qflag) { - if (!nflag) { - (void)printf("%s: ", string); - if (special & HEX) { - size_t i; - for (i = 0; i < size; i++) { - (void)printf("%02x", - (unsigned char)buf[i]); - } - } else - (void)printf("%s", cp); - - (void)printf(" -> "); + (void)puts(buf); + } else { + if (!qflag) { + if (!nflag) + (void)printf("%s: %s -> ", string, buf); + (void)puts((char *)newval); } - (void)puts(cp); } return; |