AmendHub

Download:

jcs

/

subtext

/

amendments

/

653

zmodem: Header injection is not needed here


jcs made amendment 653 1 day ago
--- zmodem.c Thu Dec 11 21:35:54 2025 +++ zmodem.c Tue Sep 22 16:22:02 2026 @@ -767,29 +767,15 @@ 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; - if (zs->ZMode == IdZAutoR || zs->ZMode == IdZAutoS) { - if (zs->ZMode == IdZAutoR) { - zs->ZMode = IdZReceive; - c[0] = '0'; - session_output(zs->session, c, 1); - } else { - zs->ZMode = IdZSend; - c[0] = '1'; - session_output(zs->session, c, 1); - } - c[0] = '0'; - c[1] = 'B'; - c[2] = ZDLE; - c[3] = ZPAD; - session_output(zs->session, c, 4); - } - + if (zs->ZMode == IdZAutoR) + zs->ZMode = IdZReceive; + else if (zs->ZMode == IdZAutoS) + zs->ZMode = IdZSend; + zs->PktOutCount = 0; zs->Pos = 0; zs->LastPos = 0; @@ -1067,6 +1053,15 @@ ZParseHdr(struct zmodem_session *zs) case Z_SendDataDat: case Z_SendDataDat2: case Z_SendEOF: + if (!zs->file) { +#ifdef ZMODEM_DEBUG + logger_printf("[%s] ZParseHdr: ZRPOS with no file, FINing", + state_name(zs)); +#endif + zs->ZState = Z_SendFIN; + ZSendFIN(zs); + break; + } zs->Pos = ZRclHdr(zs); zs->LastPos = zs->Pos; #ifdef ZMODEM_DEBUG