[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[harden-mac:0175] Re: tcsh 6.12.00 patch (Re: Mac OS X のターミナル )
- To: harden-mac@xxxxxxxxxx
- Subject: [harden-mac:0175] Re: tcsh 6.12.00 patch (Re: Mac OS X のターミナル )
- From: Yan <yan@xxxxxxx>
- Date: Thu, 24 Oct 2002 20:23:00 +0900
こんにちは、Yan です。
+--Yan <yan@xxxxxxx> の、
| [harden-mac:0174] Re: Mac OS X のターミナル
| "<20021023015224.387C08%022E053A@xxxxxxx>"
| に関するメールについて。
|
|で、ソースをつらつら眺めるうちに、あやしげな所を見つけました。
|これで取りあえず現象は収まるようですが、正しい対処かどうか分かりませんので
|あしからず。
これだと、文字列が途中でぶった切られたまま、コマンド引数として
実行されてしまいますので、もう少しまともに、Word too long. が
出るように変更してみました。
#何か別の副作用があるかも...
ちょっと長いですが、patchです。
*** sh.glob.c.orig Fri Jul 5 04:28:29 2002
--- sh.glob.c Thu Oct 24 16:11:05 2002
***************
*** 81,87 ****
static void expbrace __P((Char ***, Char ***, int));
static int pmatch __P((Char *, Char *, Char **));
static void pword __P((int));
! static void psave __P((int));
static void backeval __P((Char *, bool));
static Char *
--- 81,87 ----
static void expbrace __P((Char ***, Char ***, int));
static int pmatch __P((Char *, Char *, Char **));
static void pword __P((int));
! static int psave __P((int));
static void backeval __P((Char *, bool));
static Char *
***************
*** 879,884 ****
--- 879,885 ----
(void) close(pvec[1]);
c = 0;
ip = NULL;
+ int ierr = 0;
do {
int cnt = 0;
***************
*** 892,897 ****
--- 893,899 ----
while (icnt == -1 && errno == EINTR);
if (icnt <= 0) {
c = -1;
+ if (ierr) stderror(ERR_WTOOLONG);
break;
}
for (i = 0; i < icnt; i++)
***************
*** 918,924 ****
if (!quoted && (c == ' ' || c == '\t'))
break;
cnt++;
! psave(c | quoted);
}
/*
* Unless at end-of-file, we will form a new word here if there were
--- 920,926 ----
if (!quoted && (c == ' ' || c == '\t'))
break;
cnt++;
! ierr = psave(c | quoted);
}
/*
* Unless at end-of-file, we will form a new word here if there were
***************
*** 935,947 ****
prestjob();
}
! static void
psave(c)
int c;
{
if (--pnleft <= 0)
! stderror(ERR_WTOOLONG);
*pargcp++ = (Char) c;
}
static void
--- 937,951 ----
prestjob();
}
! static int
psave(c)
int c;
{
if (--pnleft <= 0)
! return 1;
! else
*pargcp++ = (Char) c;
+ return 0;
}
static void
--_| _/ _/| _| _/ ---- Yan (m78.com) ----
_/ _/_| _/_|_/ mailto:yan@xxxxxxx
_/ _/ _|_/ _| http://yan.m78.com/
--[PR]------------------------------------------------------------------
■■転職希望者や大学生のみなさんに朗報!!■■
志を抱く人々のキャリア開発支援サイト e−アンビシャスプラザ・無料キャ
ンペーン実施!! いま会員登録すれば、通常¥1,050の「利き脳」理論
を応用した適性検査が無料で受検できます(9/25から10/31まで)
http://ad.freeml.com/cgi-bin/ad.cgi?id=bvR74
------------------------------------------------------------------[PR]--
<GMO GROUP> Global Media Online www.gmo.jp