← Commit list

fdbc5beed3

Daniel Stenberg
Daniel Stenberg
2026-06-26
SUCCESS Duration: 172s

Subject

urlapi: make two #defines instead of magic values/strings in code

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/urlapi.c+7 -3
@@ -53,6 +53,10 @@
/* scheme is not URL encoded, the longest libcurl supported ones are... */
#define MAX_SCHEME_LEN 40
+#define MAX_ZONEID_LEN 16
+
+/* characters not allowed in hostnames */
+#define HOSTNAME_INVALID_CHARS " \r\n\t/:#?!@{}[]\\$\'\"^`*<>=;,+&()%|"
/*
* If USE_IPV6 is disabled, we still want to parse IPv6 addresses, so make
@@ -425,13 +429,13 @@ UNITTEST CURLUcode ipv6_parse(struct Curl_URL *u, char *hostname,
hlen = len;
if(hostname[len] == '%') {
/* this could now be '%[zone id]' */
- char zoneid[16];
+ char zoneid[MAX_ZONEID_LEN];
int i = 0;
char *h = &hostname[len + 1];
/* pass '25' if present and is a URL encoded percent sign */
if(!strncmp(h, "25", 2) && h[2] && (h[2] != ']'))
h += 2;
- while(*h && (*h != ']') && (i < 15))
+ while(*h && (*h != ']') && (i < (MAX_ZONEID_LEN - 1)))
zoneid[i++] = *h++;
if(!i || (']' != *h))
return CURLUE_BAD_IPV6;
@@ -474,7 +478,7 @@ static CURLUcode hostname_check(struct Curl_URL *u, char *hostname,
return ipv6_parse(u, hostname, hlen);
else {
/* letters from the second string are not ok */
- len = strcspn(hostname, " \r\n\t/:#?!@{}[]\\$\'\"^`*<>=;,+&()%|");
+ len = strcspn(hostname, HOSTNAME_INVALID_CHARS);
if(hlen != len)
/* hostname with bad content */
return CURLUE_BAD_HOSTNAME;