diff --git a/src/sbbs3/zmodem.c b/src/sbbs3/zmodem.c index fa5b4422fece67f614ff8830ada1aaf728ccc504..d727a139f9f66b37f02b30bf93ff9685a59c6411 100644 --- a/src/sbbs3/zmodem.c +++ b/src/sbbs3/zmodem.c @@ -1049,30 +1049,25 @@ int zmodem_recv_nibble(zmodem_t* zm) c -= '0'; } + if (c < 0 || c > 15) + return -1; return c; } int zmodem_recv_hex(zmodem_t* zm) { int n1; - unsigned un1; int n0; - unsigned un0; int ret; n1 = zmodem_recv_nibble(zm); - - if(n1 < 0) + if (n1 < 0) return n1; - un1 = n1; - n0 = zmodem_recv_nibble(zm); - if(n0 < 0) return n0; - un0 = n0; - ret = (un1 << 4) | un0; + ret = (n1 << 4) | n0; // lprintf(zm,LOG_DEBUG, __FUNCTION__ " returning: 0x%02X", ret);