MH-6.8.4-JP-3.02 に関する新情報 [更新: 16Sep1999] | ||
こちらで確認したもの/してないもの…色々混ざってます。 | ||
[16Feb1999] NetBSD-1.3I などでの errno.h, sys/errno.h | ||
[解決] NetBSD-1.3I から、これらのファイル構成が変更されたので、 sbr/advertise.c, uip/ftpsbr.c, uip/popsbr.c, uip/vmhsbr.c, uip/pshsbr.c, support/pop/syslog.c などで、 #ifdef __NetBSD__ /* XXX */ -#include <sys/errno.h> +#include <errno.h> #endifでいけると思います。 | ||
[26Feb1999] SunOSS4.1.4-JLE で inc が "-ERR: Permission denied." と言われる | ||
[報告のみ] … SunOS4.1.4 の setreuid() のバグ? | ||
[01Mar1999] %{subject} の仕様 〜 repl で %{subject} の後ろに空白がつく | ||
[解決] オリジナルの MH 自体の仕様(バグかも!?)です。 %{subject} が最後の改行文字まで含めて拾ってきて、これが mh-format で 空白に置き換わる際に、後ろの空白は取り除かれない仕様のために、 こうなります。 → %{subject} の代わりに、%(trim{subject})%(putstr) として下さい。 | ||
[06Mar1999] Linux で scan が特定のメールに対し Segmentation Fault に | ||
[報告のみ] …オリジナルの MH (sbr/m_getfld.c) のバグかも…。 | ||
[06Mar1999] Slackware Linux で vmh がコンパイル出来ない | ||
[報告のみ] | ||
[09Mar1999] pick が -search 等の引数で JIS コードを入力すると検索出来ない | ||
[解決] … jp2c+-1.03 → JP-3.00 の時点でのエンバグです(汗)。--- uip/picksbr.c.orig Tue Feb 9 20:30:00 1999 +++ uip/picksbr.c Fri Apr 9 14:43:38 1999 @@ -401,7 +401,7 @@ #ifdef MHE { /* Mule + MH-e have a bug, which output an internal code. */ - int err = 0; + int err = 1; char *pp, *pi, *po; pp = po = getcpy(dp); for (pi = pp; *pi; pi++) { @@ -410,6 +410,7 @@ else if (*pi == '\222' && ml_ismlptr(pi+1)) { *po++ = *++pi; *po++ = *++pi; + err = 0; } else { err = 1; break;→パッチをget (352byte) (MD5 = 0783c417af693af4d009cf2440acaf44) | ||
[16Apr1999] option SETREUID 時に、inc を ?POP で使用するとユーザが root になってしまう。 | ||
[解決]
JP-3.02 から付け加えた option SETREUID 用のところで、
setreuid() する前に、getusr() するの忘れてました(汗)。 (尚、16Apr1999 に報告がありましたが、ここに洩れてました(大汗) [07Jul1999]) --- uip/inc.c.orig Mon Feb 8 20:30:00 1999 +++ uip/inc.c Fri Apr 16 20:22:48 1999 @@ -248,6 +248,7 @@ seteuid(real_uid); #else #ifdef SETREUID + getusr(); setreuid(0, real_uid); #endif /* SETREUID */ #endif /* SETEUID */ --- uip/msgchk.c.orig Mon Feb 8 20:30:00 1999 +++ uip/msgchk.c Fri Apr 16 20:24:10 1999 @@ -147,6 +147,7 @@ seteuid(real_uid); #else #ifdef SETREUID + getusr(); setreuid(0, real_uid); #endif /* SETREUID */ #endif /* SETEUID */→パッチをget (734byte) (MD5 = a378f5c6cfea91a2171d34d4466928dd) | ||
[11Jun1999] %(hencode(trim{subject})) で core を吐く | ||
[解決] encode のための領域を malloc() してる関係でした(^^;;) ちなみに %(trim(hencode{subject}))%(putstr) とすれば問題ないのですが…。 --- sbr/formatsbr.c.orig Tue Feb 9 20:30:00 1999 +++ sbr/formatsbr.c Thu Jun 17 00:41:41 1999 @@ -503,16 +503,8 @@ int ljust; time_t l; char *savestr; -#ifndef MIME_HEADERS char buffer[BUFSIZ]; -#else /* MIME_HEADERS */ - char *buffer; - int buflen; - - if ((buffer = malloc(buflen = BUFSIZ)) == NULLCP) - adios(NULLCP, "out of memory"); -#endif /* MIME_HEADERS */ while (cp < ep) { switch (fmt->f_type) { @@ -665,21 +657,23 @@ #ifdef MIME_HEADERS case FT_LS_HENCODE: if (str) { - unsigned int l; - if ((l = strlen(str))*10 >= buflen - && (buffer = realloc(buffer, buflen = l*10+1)) == NULL) + char *ep; + if ((ep = malloc((unsigned)strlen(str)*10+1)) == NULL) adios(NULLCP, "out of memory"); - (void) exthdr_encode(str, buffer, 0, ""); + (void) exthdr_encode(str, ep, 0, ""); + (void) strncpy(buffer, ep, BUFSIZ); + buffer[BUFSIZ-1] = '\0'; str = buffer; } break; case FT_LS_HDECODE: if (str) { - unsigned int l; - if ((l = strlen(str)) >= buflen - && (buffer = realloc(buffer, buflen = l+1)) == NULL) + char *ep; + if ((ep = malloc((unsigned)strlen(str)+1)) == NULL) adios(NULLCP, "out of memory"); - (void) exthdr_decode(str, buffer); + (void) exthdr_decode(str, ep); + (void) strncpy(buffer, ep, BUFSIZ); + buffer[BUFSIZ-1] = '\0'; str = buffer; } break; @@ -1144,9 +1138,6 @@ if (cp[-1] != '\n') *cp++ = '\n'; *cp = 0; -#ifdef JAPAN - free(buffer); -#endif /* JAPAN */ return ((struct format *)0); #else /* JLR */ if (cp[-1] != '\n') @@ -1156,9 +1147,6 @@ finished:; *cp = '\0'; -#ifdef JAPAN - free(buffer); -#endif /* JAPAN */ return (fmt -> f_value ? ++fmt : (struct format *)0); #endif /* JLR */→パッチをget (734byte) (MD5 = 54294bd7cef46fb17408e49af6d26ee6) | ||
[18Jun1999] inc が core dump する | ||
[報告のみ] …3.02 での done() のエンバグ?(汗) | ||
[06Aug1999] ・From: 行に長い(80文字位) MIME encoded-word があるようなメールに repl すると、 draft の To: 行が崩れる ・%(putaddr) で画面幅より長いヘッダ名を指定すると core dump する | ||
[解決] ・RFC では、MIME encoded-word は 75文字以内であり、行全体は 76文字 以内でなければならないとされており、実際この範囲内の時には、このバグは 発生しません。きちんと RFC に従ったメールを処理していれば、 この問題は起こらないのです。…が(苦笑)、某 ○utlock (伏せ字(笑))とかいう メーラーがそういうメールを送ってくる様で… ・通常は %(putaddr To: ) とか、アドレスヘッダーは短いので問題は起こりません が… --- sbr/formatsbr.c.bak Thu Jun 17 00:41:41 1999 +++ sbr/formatsbr.c Fri Aug 6 19:19:27 1999 @@ -1015,6 +1015,7 @@ sp = fmt->f_text; indent = strlen (sp); wid -= indent; + if (wid <= 0) wid = 1; /* avoid core dump */ #ifdef JAPAN while ((ch = *sp++) && (cp < ep)) *cp++ = ch; @@ -1043,16 +1044,24 @@ if (uprf(lp + (*lp == '(' ? 1 : 0), "=?")) { /* avoid to split MIME encoded-word */ char *pp; - for (pp = sp + 1; pp <= lp + 75; pp++) - if (isspace(*pp)) { - if (uprf(pp - (*(pp-1) == ')' ? 3 : 2), - "?=")) { - sp = pp - 1; - if (indent + sp - lp + 1 > 76) - cp -= indent + sp - lp + 1 - 76; - } - break; + for (pp = sp + 1; *pp && !isspace(*pp & 0xff); pp++) + ; + if (uprf(pp - (*(pp-1) == ')' ? 3 : 2), "?=")) { + int l = pp - lp; + if (l <= 75 && indent + l > 76) { + int i; + for (i = indent + l - 76; i > 0; i--) + if (*(cp - i) != ' ') { + *cp++ = '\n'; + for (i = 0; i < 76 - l; i++) + *cp++ = ' '; + break; + } + if (i == 0) + cp -= indent + l - 76; } + sp = pp - 1; + } } #endif /* MIME_HEADERS */ } else→パッチをget (647byte) (MD5 = ed0db0480ab4b993b2901d6bc4e42f3f) | ||
[09Sep1999] LinuxPPC 1999 (glibc2.1) + kernel-2.2.12 + egcs-2.91.66 19990314 で make しようとすると、smail.c でエラーを出して止まる。 | ||
[解決] glibc-2.1 との相性(?)です。glibc-2.1 では、 /usr/include/bits/string2.h で strcpy がインラインマクロ定義されている ので。(Thanks to あまの@東北大さん) --- mh-6.8.4-JP-3.02-orig/mts/sendmail/smail.c Tue Feb 9 20:30:00 1999 +++ mh-6.8.4-JP-3.02/mts/sendmail/smail.c Thu Sep 9 12:03:39 1999 @@ -1233,16 +1233,18 @@ /* */ -#ifdef _AIX +#if defined(_AIX) || (__GLIBC__ > 2) || ((__GLIBC__==2) && (__GLIBC_MINOR__>=1)) /* * AIX by default will inline the strlen and strcpy commands by redefining * them as __strlen and __strcpy respectively. This causes compile problems * with the #ifdef MPOP in the middle. Should the #ifdef MPOP be removed, * remove these #undefs. */ +#ifdef _AIX #undef strlen -#undef strcpy #endif /* _AIX */ +#undef strcpy +#endif /* _AIX || __GLIBC__ */ static int sm_werror () { sm_reply.length =→パッチをget (456byte) (MD5 = 09b9b8c0ea7e51cfb3fff997f2f0ab2e) |
はやし はるひさ
Internet関連業績(笑)
MH-plus のぺーじ
MH のどうでもいいような趣味の講座
このページの最終更新日: 1999年 9月 16日 木ようび 曇