]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
strparse: switch the API to work on 'const char *'
authorDaniel Stenberg <daniel@haxx.se>
Thu, 13 Feb 2025 08:00:08 +0000 (09:00 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 13 Feb 2025 10:16:04 +0000 (11:16 +0100)
The functions are not meant to touch the input anyway.

Closes #16316

lib/altsvc.c
lib/connect.c
lib/connect.h
lib/hsts.c
lib/http_aws_sigv4.c
lib/strparse.c
lib/strparse.h
tests/unit/unit1664.c

index 095b3c168a0e0507cd590fddd179cf6b4fee0fe3..e269079388b2193eb575b1b4ec2befe5f76beebe 100644 (file)
@@ -149,7 +149,7 @@ static struct altsvc *altsvc_create(struct Curl_str *srchost,
 }
 
 /* only returns SERIOUS errors */
-static CURLcode altsvc_add(struct altsvcinfo *asi, char *line)
+static CURLcode altsvc_add(struct altsvcinfo *asi, const char *line)
 {
   /* Example line:
      h2 example.com 443 h3 shiny.example.com 8443 "20191231 10:00:00" 1
index 67cdb54d313eff78687de994c648b199cd3c5626..7b7fa785fed192bf0b12f3aa7a37005918688561 100644 (file)
@@ -87,7 +87,7 @@
 
 #if !defined(CURL_DISABLE_ALTSVC) || defined(USE_HTTPSRR)
 
-enum alpnid Curl_alpn2alpnid(char *name, size_t len)
+enum alpnid Curl_alpn2alpnid(const char *name, size_t len)
 {
   if(len == 2) {
     if(strncasecompare(name, "h1", 2))
index b59c38d7ceb9465de5c60ef0dc6c5e4d25cbe8ef..cbfe294c92722ab1099014cf2f4c48e533badd0a 100644 (file)
@@ -32,7 +32,7 @@
 struct Curl_dns_entry;
 struct ip_quadruple;
 
-enum alpnid Curl_alpn2alpnid(char *name, size_t len);
+enum alpnid Curl_alpn2alpnid(const char *name, size_t len);
 
 /* generic function that returns how much time there is left to run, according
    to the timeouts set */
index 99452b61a6ab0ac989c6e8b82dbc93733d02d25e..1dcaf026ac920f4df7d9f83937ef7aa0464f08fd 100644 (file)
@@ -416,7 +416,7 @@ skipsave:
 }
 
 /* only returns SERIOUS errors */
-static CURLcode hsts_add(struct hsts *h, char *line)
+static CURLcode hsts_add(struct hsts *h, const char *line)
 {
   /* Example lines:
      example.com "20191231 10:00:00"
index c217d0d8e6e7e99c844c03b841bb6b686897dadb..2fbb8de13ae236f6ab520c5ca551204522320ce2 100644 (file)
@@ -390,7 +390,8 @@ static CURLcode calc_payload_hash(struct Curl_easy *data,
 #define S3_UNSIGNED_PAYLOAD "UNSIGNED-PAYLOAD"
 
 static CURLcode calc_s3_payload_hash(struct Curl_easy *data,
-                                     Curl_HttpReq httpreq, char *provider1,
+                                     Curl_HttpReq httpreq,
+                                     const char *provider1,
                                      size_t plen,
                                      unsigned char *sha_hash,
                                      char *sha_hex, char *header)
@@ -576,7 +577,7 @@ CURLcode Curl_output_aws_sigv4(struct Curl_easy *data, bool proxy)
   CURLcode result = CURLE_OUT_OF_MEMORY;
   struct connectdata *conn = data->conn;
   size_t len;
-  char *line;
+  const char *line;
   struct Curl_str provider0;
   struct Curl_str provider1;
   struct Curl_str region = { NULL, 0};
index dce08251f81fb570753a89f5fe1d3a9b94c5bb61..b43b5415af35d7867c06b4e8df417d002bd4d8d1 100644 (file)
 
 /* Get a word until the first DELIM or end of string. At least one byte long.
    return non-zero on error */
-int Curl_str_until(char **linep, struct Curl_str *out,
+int Curl_str_until(const char **linep, struct Curl_str *out,
                    const size_t max, char delim)
 {
-  char *s = *linep;
+  const char *s = *linep;
   size_t len = 0;
   DEBUGASSERT(linep && *linep && out && max && delim);
 
@@ -51,7 +51,7 @@ int Curl_str_until(char **linep, struct Curl_str *out,
 
 /* Get a word until the first space or end of string. At least one byte long.
    return non-zero on error */
-int Curl_str_word(char **linep, struct Curl_str *out,
+int Curl_str_word(const char **linep, struct Curl_str *out,
                   const size_t max)
 {
   return Curl_str_until(linep, out, max, ' ');
@@ -60,10 +60,10 @@ int Curl_str_word(char **linep, struct Curl_str *out,
 
 /* Get a "quoted" word. No escaping possible.
    return non-zero on error */
-int Curl_str_quotedword(char **linep, struct Curl_str *out,
+int Curl_str_quotedword(const char **linep, struct Curl_str *out,
                         const size_t max)
 {
-  char *s = *linep;
+  const char *s = *linep;
   size_t len = 0;
   DEBUGASSERT(linep && *linep && out && max);
 
@@ -87,7 +87,7 @@ int Curl_str_quotedword(char **linep, struct Curl_str *out,
 
 /* Advance over a single character.
    return non-zero on error */
-int Curl_str_single(char **linep, char byte)
+int Curl_str_single(const char **linep, char byte)
 {
   DEBUGASSERT(linep && *linep);
   if(**linep != byte)
@@ -98,14 +98,14 @@ int Curl_str_single(char **linep, char byte)
 
 /* Advance over a single space.
    return non-zero on error */
-int Curl_str_singlespace(char **linep)
+int Curl_str_singlespace(const char **linep)
 {
   return Curl_str_single(linep, ' ');
 }
 
 /* Get an unsigned number. Leading zeroes are accepted.
    return non-zero on error */
-int Curl_str_number(char **linep, size_t *nump, size_t max)
+int Curl_str_number(const char **linep, size_t *nump, size_t max)
 {
   size_t num = 0;
   DEBUGASSERT(linep && *linep && nump);
@@ -125,7 +125,7 @@ int Curl_str_number(char **linep, size_t *nump, size_t max)
 
 /* CR or LF
    return non-zero on error */
-int Curl_str_newline(char **linep)
+int Curl_str_newline(const char **linep)
 {
   DEBUGASSERT(linep && *linep);
   if(ISNEWLINE(**linep)) {
index 189927b05992a439d698d413c51ad1a208b1fc56..dfae898f5b5dcfda9c855c14416ba9334edf4344 100644 (file)
 #define STRE_OVERFLOW 7
 
 struct Curl_str {
-  char *str;
+  const char *str;
   size_t len;
 };
 
 /* Get a word until the first space
    return non-zero on error */
-int Curl_str_word(char **linep, struct Curl_str *out, const size_t max);
+int Curl_str_word(const char **linep, struct Curl_str *out, const size_t max);
 
 /* Get a word until the first DELIM or end of string
    return non-zero on error */
-int Curl_str_until(char **linep, struct Curl_str *out, const size_t max,
+int Curl_str_until(const char **linep, struct Curl_str *out, const size_t max,
                    char delim);
 
 /* Get a "quoted" word. No escaping possible.
    return non-zero on error */
-int Curl_str_quotedword(char **linep, struct Curl_str *out, const size_t max);
+int Curl_str_quotedword(const char **linep, struct Curl_str *out,
+                        const size_t max);
 
 /* Advance over a single character.
    return non-zero on error */
-int Curl_str_single(char **linep, char byte);
+int Curl_str_single(const char **linep, char byte);
 
 /* Advance over a single space.
    return non-zero on error */
-int Curl_str_singlespace(char **linep);
+int Curl_str_singlespace(const char **linep);
 
 /* Get an unsigned number
    return non-zero on error */
-int Curl_str_number(char **linep, size_t *nump, size_t max);
+int Curl_str_number(const char **linep, size_t *nump, size_t max);
 
 /* Check for CR or LF
    return non-zero on error */
-int Curl_str_newline(char **linep);
+int Curl_str_newline(const char **linep);
 
 #endif /* HEADER_CURL_STRPARSE_H */
index 3a2da81ffec315ebc18d1cf92e0f7673cb1bbccc..0c22f9164ad04c0f83944d0f1ef485e78f878955 100644 (file)
@@ -67,8 +67,8 @@ UNITTEST_START
   printf("Curl_str_word\n");
   for(i = 0; wordparse[i]; i++) {
     struct Curl_str out;
-    char *line = (char *)wordparse[i];
-    char *orgline = line;
+    const char *line = wordparse[i];
+    const char *orgline = line;
     int rc = Curl_str_word(&line, &out, 7);
     printf("%u: (\"%s\") %d, \"%.*s\" [%d], line %d\n",
            i, orgline, rc, (int)out.len, out.str, (int)out.len,
@@ -78,8 +78,8 @@ UNITTEST_START
   printf("Curl_str_until\n");
   for(i = 0; wordparse[i]; i++) {
     struct Curl_str out;
-    char *line = (char *)wordparse[i];
-    char *orgline = line;
+    const char *line = wordparse[i];
+    const char *orgline = line;
     int rc = Curl_str_until(&line, &out, 7, 'd');
     printf("%u: (\"%s\") %d, \"%.*s\" [%d], line %d\n",
            i, orgline, rc, (int)out.len, out.str, (int)out.len,
@@ -106,8 +106,8 @@ UNITTEST_START
     printf("Curl_str_quotedword\n");
     for(i = 0; qwords[i]; i++) {
       struct Curl_str out;
-      char *line = (char *)qwords[i];
-      char *orgline = line;
+      const char *line = qwords[i];
+      const char *orgline = line;
       int rc = Curl_str_quotedword(&line, &out, 7);
       printf("%u: (\"%s\") %d, \"%.*s\" [%d], line %d\n",
              i, orgline, rc, (int)out.len, out.str, (int)out.len,
@@ -128,8 +128,8 @@ UNITTEST_START
     };
     printf("Curl_str_single\n");
     for(i = 0; single[i]; i++) {
-      char *line = (char *)single[i];
-      char *orgline = line;
+      const char *line = single[i];
+      const char *orgline = line;
       int rc = Curl_str_single(&line, 'a');
       printf("%u: (\"%s\") %d, line %d\n",
              i, orgline, rc, (int)(line - orgline));
@@ -150,8 +150,8 @@ UNITTEST_START
     };
     printf("Curl_str_singlespace\n");
     for(i = 0; single[i]; i++) {
-      char *line = (char *)single[i];
-      char *orgline = line;
+      const char *line = single[i];
+      const char *orgline = line;
       int rc = Curl_str_singlespace(&line);
       printf("%u: (\"%s\") %d, line %d\n",
              i, orgline, rc, (int)(line - orgline));
@@ -171,8 +171,8 @@ UNITTEST_START
     };
     printf("Curl_str_single\n");
     for(i = 0; single[i]; i++) {
-      char *line = (char *)single[i];
-      char *orgline = line;
+      const char *line = single[i];
+      const char *orgline = line;
       int rc = Curl_str_single(&line, 'a');
       printf("%u: (\"%s\") %d, line %d\n",
              i, orgline, rc, (int)(line - orgline));
@@ -197,8 +197,8 @@ UNITTEST_START
     printf("Curl_str_number\n");
     for(i = 0; nums[i]; i++) {
       size_t num;
-      char *line = (char *)nums[i];
-      char *orgline = line;
+      const char *line = nums[i];
+      const char *orgline = line;
       int rc = Curl_str_number(&line, &num, 1235);
       printf("%u: (\"%s\") %d, [%u] line %d\n",
              i, orgline, rc, (int)num, (int)(line - orgline));
@@ -218,8 +218,8 @@ UNITTEST_START
     printf("Curl_str_number / max\n");
     for(i = 0; nums[i]; i++) {
       size_t num;
-      char *line = (char *)nums[i];
-      char *orgline = line;
+      const char *line = nums[i];
+      const char *orgline = line;
       int rc = Curl_str_number(&line, &num, SIZE_T_MAX);
       printf("%u: (\"%s\") %d, [%zu] line %d\n",
              i, orgline, rc, num, (int)(line - orgline));
@@ -242,8 +242,8 @@ UNITTEST_START
     };
     printf("Curl_str_newline\n");
     for(i = 0; newl[i]; i++) {
-      char *line = (char *)newl[i];
-      char *orgline = line;
+      const char *line = newl[i];
+      const char *orgline = line;
       int rc = Curl_str_newline(&line);
       printf("%u: (\"%s\") %d, line %d\n",
              i, orgline, rc, (int)(line - orgline));