|
| ||
| こちらで確認したもの/してないもの…色々混ざってます。 | ||
| [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日 木ようび 曇