AmendHub

Download (as of this amendment):

jcs

/

subtext

/

amendments

/

608

fidopkt: Minor safety checks, fix format string


jcs made amendment 608 9 months ago
--- fidopkt.c Sat Dec 2 19:49:38 2023 +++ fidopkt.c Sat Dec 6 21:04:31 2025 @@ -138,22 +138,22 @@ fidopkt_parse_msgid(struct fidopkt_message *msg) unsigned long id; /* 37246.fsxnet_fsx_gen@21:1/137.1 28583dba */ - if (sscanf(msg->msgid_orig, "%49[^@]@%u:%u/%u.%u %lx", + if (sscanf(msg->msgid_orig, "%48[^@]@%u:%u/%u.%u %lx", &garbage, &zone, &net, &node, &point, &id) == 6) goto found; /* 37246.fsxnet_fsx_gen@21:1/137 28583dba */ - if (sscanf(msg->msgid_orig, "%49[^@]@%u:%u/%u %lx", + if (sscanf(msg->msgid_orig, "%48[^@]@%u:%u/%u %lx", &garbage, &zone, &net, &node, &id) == 5) goto found; /* 21:3/110.10@fsxnet 05996db9 */ - if (sscanf(msg->msgid_orig, "%u:%u/%u.%u@%49s %lx", + if (sscanf(msg->msgid_orig, "%u:%u/%u.%u@%48s %lx", &zone, &net, &node, &point, &garbage, &id) == 6) goto found; /* 21:3/110@fsxnet 05996db9 */ - if (sscanf(msg->msgid_orig, "%u:%u/%u@%49s %lx", + if (sscanf(msg->msgid_orig, "%u:%u/%u@%48s %lx", &zone, &net, &node, &garbage, &id) == 5) goto found; @@ -483,7 +483,7 @@ fidopkt_parse_message(char *packet_filename, struct fi llen = strlcpy(ct, ctime(&ret->time), sizeof(ct)); ct[llen - 1] = '\0'; - logger_printf("[fidopkt] Date: %s UTC (%s %s%s) (%ul)", ct, datetime, + logger_printf("[fidopkt] Date: %s UTC (%s %s%s) (%lu)", ct, datetime, (tzoff >= 0 ? "+" : ""), tz, ret->time); logger_printf("[fidopkt] Message:"); @@ -696,7 +696,8 @@ fidopkt_encode_message(struct fidopkt_message *msg, ch * \r\n during the message editor, so strip out \n. */ for (n = 0; n < msg->body_len; n++) { - if (n == msg->body_len - 1 && msg->body[n] == '\r') + if (msg->body_len >= 1 && n == msg->body_len - 1 && + msg->body[n] == '\r') /* supress trailing \r, we'll add two next */ continue; @@ -704,7 +705,7 @@ fidopkt_encode_message(struct fidopkt_message *msg, ch break; if (msg->body[n] == '\n') { - if (msg->body[n - 1] == '\r') + if (n > 0 && msg->body[n - 1] == '\r') continue; buf[off++] = '\r'; } else