Skip to content

Commit b03e675

Browse files
committed
For sysname()s between 6 and 10 characters, use "MMail/name" instead of
"MultiMail" for the Blue Wave tear line; also check the length isn't too long for reader_name (but this should never happen). Not well tested yet.
1 parent 8b53664 commit b03e675

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

config.h

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#define MM_MINOR 51
66

77
#define MM_NAME "MultiMail"
8+
#define MM_SNAME "MMail"
89
#define MM_VERNUM STR(MM_MAJOR) "." STR(MM_MINOR)
910
#define MM_TOPHEADER MM_NAME "/%.16s v" MM_VERNUM
1011

mmail/bw.cc

+15-4
Original file line numberDiff line numberDiff line change
@@ -838,10 +838,21 @@ void bwreply::addHeader(FILE *uplFile)
838838
strncpy((char *) newUplHeader.vernum, MM_VERNUM, 20);
839839
for (int c = 0; newUplHeader.vernum[c]; newUplHeader.vernum[c++] -= 10);
840840

841-
int tearlen = sprintf((char *) newUplHeader.reader_name, MM_NAME
842-
"/%s", sysname());
843-
strcpy((char *) newUplHeader.reader_tear, ((tearlen < 16) ?
844-
(char *) newUplHeader.reader_name : MM_NAME));
841+
const char *name = sysname();
842+
size_t len = strlen(name);
843+
844+
if (len < 80 - sizeof(MM_NAME))
845+
sprintf((char *) newUplHeader.reader_name, MM_NAME "/%s", name);
846+
else
847+
strcpy((char *) newUplHeader.reader_name, MM_NAME);
848+
849+
if (len < 16 - sizeof(MM_NAME))
850+
strcpy((char *) newUplHeader.reader_tear,
851+
(char *) newUplHeader.reader_name);
852+
else if (len < 16 - sizeof(MM_SNAME))
853+
sprintf((char *) newUplHeader.reader_tear, MM_SNAME "/%s", name);
854+
else
855+
strcpy((char *) newUplHeader.reader_tear, MM_NAME);
845856

846857
strcpy((char *) newUplHeader.loginname, baseClass->getLoginName());
847858
strcpy((char *) newUplHeader.aliasname, baseClass->getAliasName());

0 commit comments

Comments
 (0)