diff --git a/source/libsmb/clireadwrite.c b/source/libsmb/clireadwrite.c index dd7ddce..81e9043 100644 --- a/source/libsmb/clireadwrite.c +++ b/source/libsmb/clireadwrite.c @@ -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))