1From d74af6c05b11f5d000f0a4aae3c287b6d4e2829f Mon Sep 17 00:00:00 2001
2From: Michael Forney <mforney@mforney.org>
3Date: Thu, 2 Apr 2026 17:02:47 -0700
4Subject: [PATCH] Explicitly cast arguments to functions expecting char pointer
5 with other sign
6
7---
8 usr.bin/diff/diffreg.c | 10 +++++-----
9 usr.bin/nc/socks.c | 30 +++++++++++++++---------------
10 usr.sbin/acme-client/acctproc.c | 3 ++-
11 3 files changed, 22 insertions(+), 21 deletions(-)
12
13diff --git a/usr.bin/diff/diffreg.c b/usr.bin/diff/diffreg.c
14index 3470f54c337..c36765a44c8 100644
15--- a/usr.bin/diff/diffreg.c
16+++ b/usr.bin/diff/diffreg.c
17@@ -1269,19 +1269,19 @@ match_function(const long *f, int pos, FILE *fp)
18 nc = fread(buf, 1, nc, fp);
19 if (nc > 0) {
20 buf[nc] = '\0';
21- buf[strcspn(buf, "\n")] = '\0';
22+ buf[strcspn((char *)buf, "\n")] = '\0';
23 if (isalpha(buf[0]) || buf[0] == '_' || buf[0] == '$') {
24- if (begins_with(buf, "private:")) {
25+ if (begins_with((char *)buf, "private:")) {
26 if (!state)
27 state = " (private)";
28- } else if (begins_with(buf, "protected:")) {
29+ } else if (begins_with((char *)buf, "protected:")) {
30 if (!state)
31 state = " (protected)";
32- } else if (begins_with(buf, "public:")) {
33+ } else if (begins_with((char *)buf, "public:")) {
34 if (!state)
35 state = " (public)";
36 } else {
37- strlcpy(lastbuf, buf, sizeof lastbuf);
38+ strlcpy(lastbuf, (char *)buf, sizeof lastbuf);
39 if (state)
40 strlcat(lastbuf, state,
41 sizeof lastbuf);
42diff --git a/usr.bin/nc/socks.c b/usr.bin/nc/socks.c
43index 1f1fb96e2af..37a18f191f2 100644
44--- a/usr.bin/nc/socks.c
45+++ b/usr.bin/nc/socks.c
46@@ -88,7 +88,7 @@ decode_addrport(const char *h, const char *p, struct sockaddr *addr,
47 }
48
49 static int
50-proxy_read_line(int fd, char *buf, size_t bufsz)
51+proxy_read_line(int fd, unsigned char *buf, size_t bufsz)
52 {
53 size_t off;
54
55@@ -315,7 +315,7 @@ socks_connect(const char *host, const char *port,
56 wlen = 9;
57 if (socksv == 44) {
58 /* SOCKS4A has nul-terminated hostname after user */
59- if (strlcpy(buf + 9, host,
60+ if (strlcpy((char *)buf + 9, host,
61 sizeof(buf) - 9) >= sizeof(buf) - 9)
62 errx(1, "hostname too big");
63 wlen = 9 + strlen(host) + 1;
64@@ -340,17 +340,17 @@ socks_connect(const char *host, const char *port,
65
66 /* Try to be sane about numeric IPv6 addresses */
67 if (strchr(host, ':') != NULL) {
68- r = snprintf(buf, sizeof(buf),
69+ r = snprintf((char *)buf, sizeof(buf),
70 "CONNECT [%s]:%d HTTP/1.0\r\n",
71 host, ntohs(serverport));
72 } else {
73- r = snprintf(buf, sizeof(buf),
74+ r = snprintf((char *)buf, sizeof(buf),
75 "CONNECT %s:%d HTTP/1.0\r\n",
76 host, ntohs(serverport));
77 }
78 if (r < 0 || (size_t)r >= sizeof(buf))
79 errx(1, "hostname too long");
80- r = strlen(buf);
81+ r = strlen((char *)buf);
82
83 cnt = atomicio(vwrite, proxyfd, buf, r);
84 if (cnt != r)
85@@ -362,18 +362,18 @@ socks_connect(const char *host, const char *port,
86
87 getproxypass(proxyuser, proxyhost,
88 proxypass, sizeof proxypass);
89- r = snprintf(buf, sizeof(buf), "%s:%s",
90+ r = snprintf((char *)buf, sizeof(buf), "%s:%s",
91 proxyuser, proxypass);
92 explicit_bzero(proxypass, sizeof proxypass);
93 if (r == -1 || (size_t)r >= sizeof(buf) ||
94- b64_ntop(buf, strlen(buf), resp,
95+ b64_ntop(buf, strlen((char *)buf), resp,
96 sizeof(resp)) == -1)
97 errx(1, "Proxy username/password too long");
98- r = snprintf(buf, sizeof(buf), "Proxy-Authorization: "
99- "Basic %s\r\n", resp);
100+ r = snprintf((char *)buf, sizeof(buf),
101+ "Proxy-Authorization: Basic %s\r\n", resp);
102 if (r < 0 || (size_t)r >= sizeof(buf))
103 errx(1, "Proxy auth response too long");
104- r = strlen(buf);
105+ r = strlen((char *)buf);
106 if ((cnt = atomicio(vwrite, proxyfd, buf, r)) != r)
107 err(1, "write failed (%zu/%d)", cnt, r);
108 explicit_bzero(proxypass, sizeof proxypass);
109@@ -387,17 +387,17 @@ socks_connect(const char *host, const char *port,
110 /* Read status reply */
111 proxy_read_line(proxyfd, buf, sizeof(buf));
112 if (proxyuser != NULL &&
113- (strncmp(buf, "HTTP/1.0 407 ", 13) == 0 ||
114- strncmp(buf, "HTTP/1.1 407 ", 13) == 0)) {
115+ (strncmp((char *)buf, "HTTP/1.0 407 ", 13) == 0 ||
116+ strncmp((char *)buf, "HTTP/1.1 407 ", 13) == 0)) {
117 if (authretry > 1) {
118 fprintf(stderr, "Proxy authentication "
119 "failed\n");
120 }
121 close(proxyfd);
122 goto again;
123- } else if (strncmp(buf, "HTTP/1.0 200 ", 13) != 0 &&
124- strncmp(buf, "HTTP/1.1 200 ", 13) != 0)
125- errx(1, "Proxy error: \"%s\"", buf);
126+ } else if (strncmp((char *)buf, "HTTP/1.0 200 ", 13) != 0 &&
127+ strncmp((char *)buf, "HTTP/1.1 200 ", 13) != 0)
128+ errx(1, "Proxy error: \"%s\"", (char *)buf);
129
130 /* Headers continue until we hit an empty line */
131 for (r = 0; r < HTTP_MAXHDRS; r++) {
132diff --git a/usr.sbin/acme-client/acctproc.c b/usr.sbin/acme-client/acctproc.c
133index 8d66dac49d9..6bc647c6009 100644
134--- a/usr.sbin/acme-client/acctproc.c
135+++ b/usr.sbin/acme-client/acctproc.c
136@@ -215,7 +215,8 @@ op_sign(int fd, struct key *key, enum acctop op)
137
138 /* Base64-encode the payload. */
139
140- if ((pay64 = base64buf_url(pay, strlen(pay))) == NULL) {
141+ if ((pay64 = base64buf_url((unsigned char *)pay,
142+ strlen(pay))) == NULL) {
143 warnx("base64buf_url");
144 goto out;
145 }
146--
1472.49.0
148