Date: Sun, 11 Aug 2019 15:36:18 +0000 (UTC) From: Alan Somers <asomers@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r350859 - head/sbin/ping6 Message-ID: <201908111536.x7BFaItn079556@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: asomers Date: Sun Aug 11 15:36:18 2019 New Revision: 350859 URL: https://svnweb.freebsd.org/changeset/base/350859 Log: ping6: Remove unnecessary level of indirection from dnsdecode() parameter The `sp' pointer doesn't need to be modified in the caller of dnsdecode(). This fixes -Wcast-qual error (`must have all intermediate pointers const qualified to be safe') when compiled with WARNS=6. Submitted by: Ján Sučan <sucanjan@gmail.com> MFC after: 2 weeks Sponsored by: Google, inc. (Google Summer of Code 2019) Differential Revision: https://reviews.freebsd.org/D21215 Modified: head/sbin/ping6/ping6.c Modified: head/sbin/ping6/ping6.c ============================================================================== --- head/sbin/ping6/ping6.c Sun Aug 11 15:27:34 2019 (r350858) +++ head/sbin/ping6/ping6.c Sun Aug 11 15:36:18 2019 (r350859) @@ -279,7 +279,7 @@ static void pr_suptypes(struct icmp6_nodeinfo *, size static void pr_nodeaddr(struct icmp6_nodeinfo *, int); static int myechoreply(const struct icmp6_hdr *); static int mynireply(const struct icmp6_nodeinfo *); -static char *dnsdecode(const u_char **, const u_char *, const u_char *, +static char *dnsdecode(const u_char *, const u_char *, const u_char *, char *, size_t); static void pr_pack(u_char *, int, struct msghdr *); static void pr_exthdrs(struct msghdr *); @@ -1431,7 +1431,7 @@ mynireply(const struct icmp6_nodeinfo *nip) } static char * -dnsdecode(const u_char **sp, const u_char *ep, const u_char *base, char *buf, +dnsdecode(const u_char *sp, const u_char *ep, const u_char *base, char *buf, size_t bufsiz) /*base for compressed name*/ { @@ -1441,14 +1441,14 @@ dnsdecode(const u_char **sp, const u_char *ep, const u const u_char *comp; int l; - cp = *sp; + cp = sp; *buf = '\0'; if (cp >= ep) return NULL; while (cp < ep) { i = *cp; - if (i == 0 || cp != *sp) { + if (i == 0 || cp != sp) { if (strlcat((char *)buf, ".", bufsiz) >= bufsiz) return NULL; /*result overrun*/ } @@ -1462,7 +1462,7 @@ dnsdecode(const u_char **sp, const u_char *ep, const u return NULL; comp = base + (i & 0x3f); - if (dnsdecode(&comp, cp, base, cresult, + if (dnsdecode(comp, cp, base, cresult, sizeof(cresult)) == NULL) return NULL; if (strlcat(buf, cresult, bufsiz) >= bufsiz) @@ -1486,7 +1486,7 @@ dnsdecode(const u_char **sp, const u_char *ep, const u if (i != 0) return NULL; /*not terminated*/ cp++; - *sp = cp; + sp = cp; return buf; } @@ -1679,7 +1679,7 @@ pr_pack(u_char *buf, int cc, struct msghdr *mhdr) } else { i = 0; while (cp < end) { - if (dnsdecode((const u_char **)&cp, end, + if (dnsdecode((const u_char *)cp, end, (const u_char *)(ni + 1), dnsname, sizeof(dnsname)) == NULL) { printf("???"); @@ -2461,7 +2461,7 @@ pr_icmph(struct icmp6_hdr *icp, u_char *end) } printf(", subject=%s", niqcode[ni->ni_code]); cp = (const u_char *)(ni + 1); - if (dnsdecode(&cp, end, NULL, dnsname, + if (dnsdecode(cp, end, NULL, dnsname, sizeof(dnsname)) != NULL) printf("(%s)", dnsname); else
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908111536.x7BFaItn079556>