Fix bug #5326 - OS/2 servers give strange "high word" replies for print jobs.
authorJeremy Allison <jra@samba.org>
Fri, 28 Mar 2008 17:13:39 +0000 (10:13 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 28 Mar 2008 17:13:39 +0000 (10:13 -0700)
Jeremy.

source/libsmb/clireadwrite.c

index dd7ddcebb55fb59bb41c84667e7769cd8a36f964..81e90436bd7168144c07e3cd9a13fc4fc32ebf9b 100644 (file)
@@ -352,10 +352,12 @@ ssize_t cli_write(struct cli_state *cli,
        }
 
        while (received < blocks) {
+               ssize_t size1;
 
                while ((issued - received < mpx) && (issued < blocks)) {
                        ssize_t bsent = issued * block;
-                       ssize_t size1 = MIN(block, size - bsent);
+
+                       size1 = MIN(block, size - bsent);
 
                        if (!cli_issue_write(cli, fnum, offset + bsent,
                                        write_mode,
@@ -374,7 +376,9 @@ ssize_t cli_write(struct cli_state *cli,
                        break;
 
                bwritten += SVAL(cli->inbuf, smb_vwv2);
-               bwritten += (((int)(SVAL(cli->inbuf, smb_vwv4)))<<16);
+               if (size1 > 0xFFFF) {
+                       bwritten += (((int)(SVAL(cli->inbuf, smb_vwv4)))<<16);
+               }
        }
 
        while (received < issued && cli_receive_smb(cli))