jcs
/subtext
/amendments
/624
zmodem: Minor fixes
jcs made amendment 624 9 months ago
--- zmodem.c Mon May 1 21:52:46 2023
+++ zmodem.c Thu Dec 11 21:35:54 2025
@@ -647,7 +647,7 @@ ZSendFileDat(struct zmodem_session *zs)
strlcpy((char *)zs->PktOut, zs->file_name, sizeof(zs->PktOut));
zs->PktOutCount = strlen((char *)zs->PktOut);
zs->CRC = 0;
- for (i = 0; i <= zs->PktOutCount - 1; i++)
+ for (i = 0; i < zs->PktOutCount; i++)
zs->CRC = UpdateCRC(zs->PktOut[i], zs->CRC);
ZPutBin(zs, &(zs->PktOutCount), 0);
zs->CRC = UpdateCRC(0, zs->CRC);
@@ -767,6 +767,8 @@ ZSendDataDat(struct zmodem_session *zs)
bool
ZInit(struct zmodem_session *zs)
{
+ char c[4];
+
zs->CtlEsc = false;
zs->MaxDataLen = ZMODEM_BLOCK_SIZE;
zs->WinSize = 32767;
@@ -774,15 +776,18 @@ ZInit(struct zmodem_session *zs)
if (zs->ZMode == IdZAutoR || zs->ZMode == IdZAutoS) {
if (zs->ZMode == IdZAutoR) {
zs->ZMode = IdZReceive;
- session_output(zs->session, (const char *)'0', 1);
+ c[0] = '0';
+ session_output(zs->session, c, 1);
} else {
zs->ZMode = IdZSend;
- session_output(zs->session, (const char *)'1', 1);
+ c[0] = '1';
+ session_output(zs->session, c, 1);
}
- session_output(zs->session, (const char *)'0', 1);
- session_output(zs->session, (const char *)'B', 1);
- session_output(zs->session, (const char *)ZDLE, 1);
- session_output(zs->session, (const char *)ZPAD, 1);
+ c[0] = '0';
+ c[1] = 'B';
+ c[2] = ZDLE;
+ c[3] = ZPAD;
+ session_output(zs->session, c, 4);
}
zs->PktOutCount = 0;
@@ -1464,7 +1469,11 @@ ZParse(struct zmodem_session *zs)
}
zs->Quoted = false;
}
-
+
+ if (zs->PktInPtr >= sizeof(zs->PktIn)) {
+ zs->ZPktState = Z_PktGetPAD;
+ break;
+ }
zs->PktIn[zs->PktInPtr] = b;
zs->PktInPtr++;
zs->PktInCount--;