]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
libssh: fix scp large file upload for 32-bit size_t systems
authorJay Satiro <raysatiro@yahoo.com>
Mon, 10 Mar 2025 02:20:01 +0000 (22:20 -0400)
committerJay Satiro <raysatiro@yahoo.com>
Mon, 10 Mar 2025 17:20:19 +0000 (13:20 -0400)
- Use ssh_scp_push_file64 instead of ssh_scp_push_file.

The former uses uint64_t for file size and the latter uses size_t which
may be 32-bit.

Ref: https://github.com/curl/curl/pull/16194

Closes https://github.com/curl/curl/pull/16641

lib/vssh/libssh.c

index d0480576b53fc6bb7037a059c58a435b52395886..922fc11ddef48110b849275578ae94441ff6d328 100644 (file)
@@ -1814,9 +1814,10 @@ static CURLcode myssh_statemach_act(struct Curl_easy *data, bool *block)
         break;
       }
 
-      rc = ssh_scp_push_file(sshc->scp_session, protop->path,
-                             (size_t)data->state.infilesize,
-                             (int)data->set.new_file_perms);
+      rc = ssh_scp_push_file64(sshc->scp_session, protop->path,
+                               (uint64_t)data->state.infilesize,
+                               (int)data->set.new_file_perms);
+
       if(rc != SSH_OK) {
         err_msg = ssh_get_error(sshc->ssh_session);
         failf(data, "%s", err_msg);