← Commit list

adb606eae7

Viktor Szakats
Viktor Szakats
2026-06-15
SUCCESS Duration: 165s

Subject

curl_formdata: fix to pass long where missing, document `CURLFORM_NAMELENGTH`

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 →

docs/libcurl/curl_formadd.md+7 -1
@@ -112,6 +112,12 @@ If you pass a 0 (zero) for this option, libcurl calls strlen() on the contents
to figure out the size. If you really want to send a zero byte content then
you must make sure strlen() on the data pointer returns zero.
+## CURLFORM_NAMELENGTH
+
+followed by a long giving the length of the name. Pass this option to set
+the length of *CURLFORM_COPYNAME* and *CURLFORM_PTRNAME* strings, if they are
+not null-terminated.
+
## CURLFORM_FILECONTENT
followed by a filename, causes that file to be read and its contents used
@@ -278,7 +284,7 @@ int main(void)
CURLFORM_COPYNAME, "name",
CURLFORM_BUFFER, "data",
CURLFORM_BUFFERPTR, record,
- CURLFORM_BUFFERLENGTH, sizeof(record),
+ CURLFORM_BUFFERLENGTH, (long)sizeof(record),
CURLFORM_END);
/* no option needed for the end marker */
lib/formdata.c+1 -1
@@ -184,7 +184,7 @@ static void free_formlist(struct FormInfo *ptr)
*
* name/value pair where only the content pointer is remembered:
* curl_formadd(&post, &last, CURLFORM_COPYNAME, "name",
- * CURLFORM_PTRCONTENTS, ptr, CURLFORM_CONTENTSLENGTH, 10,
+ * CURLFORM_PTRCONTENTS, ptr, CURLFORM_CONTENTSLENGTH, 10L,
* CURLFORM_END);
* (if CURLFORM_CONTENTSLENGTH is missing strlen () is used)
*
tests/libtest/lib650.c+2 -5
@@ -48,7 +48,6 @@ static CURLcode test_lib650(const char *URL)
struct curl_forms formarray[3];
size_t formlength = 0;
char flbuf[32];
- long contentlength = 0;
static const char testname[] = "fieldname";
static char testdata[] = "this is what we post to the silly web server";
@@ -83,19 +82,17 @@ static CURLcode test_lib650(const char *URL)
goto test_cleanup;
}
- contentlength = (long)(strlen(testdata) - 1);
-
/* Use a form array for the non-copy test. */
formarray[0].option = CURLFORM_PTRCONTENTS;
formarray[0].value = testdata;
formarray[1].option = CURLFORM_CONTENTSLENGTH;
- formarray[1].value = (char *)(size_t)contentlength;
+ formarray[1].value = (char *)(strlen(testdata) - 1);
formarray[2].option = CURLFORM_END;
formarray[2].value = NULL;
formrc = curl_formadd(&formpost,
&lastptr,
CURLFORM_PTRNAME, testname,
- CURLFORM_NAMELENGTH, sizeof(testname) - 2,
+ CURLFORM_NAMELENGTH, (long)(sizeof(testname) - 2),
CURLFORM_ARRAY, formarray,
CURLFORM_FILENAME, "remotefile.txt",
CURLFORM_END);