]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
rustls: make read_file_into not reject good files
authorDaniel Stenberg <daniel@haxx.se>
Fri, 17 Oct 2025 15:05:08 +0000 (17:05 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Fri, 17 Oct 2025 15:44:14 +0000 (17:44 +0200)
For files with sizes using an exact multiple of 256 bytes, the final
successful read(s) filled the buffer(s) and the subsequent fread
returned 0 for EOF, which caused read_file_into to fail.

Now, it needs to return 0 and not be EOF to be an error.

Follow-up to dd95a49d493d55db38b352fdbda2

Pointed out by ZeroPath
Closes #19104

lib/vtls/rustls.c

index 38e8a697a83b112af4059dae05e6467d17990a38..ebd94213d4934c72fbb1718a66c2f9329f07bcee 100644 (file)
@@ -404,8 +404,8 @@ read_file_into(const char *filename,
   for(;;) {
     uint8_t buf[256];
     const size_t rr = fread(buf, 1, sizeof(buf), f);
-    if(rr == 0 ||
-       CURLE_OK != curlx_dyn_addn(out, buf, rr)) {
+    if((!rr && !feof(f)) ||
+       curlx_dyn_addn(out, buf, rr)) {
       curlx_fclose(f);
       return 0;
     }