* From: keis...@ocharake.org
* Message-ID: <3A0B7330...@ocharake.org>
> > ç§ããfreebsd.orgã®ã»ãã¥ãªãã£ããŒãž
> > http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/392
> > ã®å
容ãã¿ãŠå¿é
ã«ãªã£ãŠããã®ã§ãããã©ãããïŒïŒïŒããæ°ããããŒãžã§ã³ãå©
> > çšããã°å€§äžå€«ã®ããã«æããŠããŸããã
>
> DeleGate ã®ã¡ãŒãªã³ã°ãªã¹ãã§ã Version 6 以äžã§ã¯åé¡ãªãã®ã«ã
> ãŸã 誀解ãããŠãããšã®æçš¿ããã£ãã¿ããã§ããã
ãŸããFreeBSD Security Advisory (FreeBSD SA) ã§ã¯ãDeleGate ã®ã³ãŒ
ãã£ã³ã°ã¹ã¿ã€ã«ã«å¯Ÿããæœåšçã«ã»ãã¥ãªãã£ããŒã«ã«ãªãç®æããš
ãŠãå€ãããœãŒã¹ã³ãŒããäžããæžãçŽããªãéãå±éºã ããããšãã£
ãææããããŸããã
DeleGate 6.x ã®ãœãŒã¹ãã¡ãã£ãšçºããéãã§ã¯ãç§ã«ãããæããŠã
ãŸããããšãã°ã6.1.20 ã® httpd.c ã®äžããåŒçšãããš
| extern char *TIMEFORM_LS;
| static putDir(Conn,dirpath,tmp,fp,eol)
| Connection *Conn;
| char *dirpath;
| FILE *tmp,*fp;
| char *eol;
| { char line[1024];
| char file[2048];
| char iconbase[1024],*iconsrc,*iconalt;
| char pfile[2048];
| char path[1024];
| int size,time,isdir;
| char atime[128];
ãã®ããã«é
åã®é·ãã 1024 ãšã 128 ãšãã決ãæã¡ã§æžããŠãããš
ãéåžžã«å€ããsprintf() çã§ãã®é
åã«æžã蟌ãéã«ã¡ãããšé åã
ã¯ã¿åºããŠæžã蟌ãŸãªãããã«ãã§ãã¯ããŠããã®ãã©ããçåã«æ
ããç®æãããªããããŸããããã FreeBSD SAã®èšããæœåšçãªã»ãã¥
ãªãã£ããŒã«ãã§ã¯ãªãããšæããŸãã
ãã ãããã¯ããœãŒã¹ã軜ãçºãéãã®è©±ã§ããã¡ããšåŠçãè¿œã£ãã
ãã§ã¯ãããŸãããã§ãã®ã§ãDeleGate ãå®å
šãã©ããã®çåã®äžã€
ãšããŠæ¬åœã«å€§äžå€«ãªã®? ãšããããšããããŸãã
ãããããããšããã§ãã¯ããã£ãŠãããšããŠããé
åã®é·ãã 1024,
128 ãšãã£ã圢ã§ãã¡ãã¡ã«æžããŠããŸã£ãŠãããšãæžãééãããã
ãããšã¯ãªããã§ããããã 1024 ãã€ããè¶
ããŠæžã蟌ãŸãªããã©ã
ããã§ãã¯ããŠããŠãããã®é
åã®é·ãã¯å®ã¯ char [256] ã ã£ããšã
ããããªãã¹ãããã®ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã§ã¯çã¿ããããªãã®ããªã
ãšããæ°ãããªãããããŸããã
ããšããDeleGate 6 ã§ã¯å€§äžå€«ããšããæèŠãç§ãèããããšããã
ã®ã§ãããæ¬åœã ãšãããã©ããã察çããããã倧äžå€«ãšããããš
ãªãã§ãããããã²ãã£ãšããŠããã¯ãrandstack, randenv, randfd
ãå®è£
ãããããããšããããšãªãã§ããããã
randstack -- randomization range of stack base for security
randenv -- randomization range of environment variables base
randfd -- randomization range of client socket file-descriptor
ãã ãããã䜿ãã°ãå
ã®ãããªé
åã®äœ¿ãæ¹ãå€çšãããŠããŠ
buffer overrun ãèµ·ããŠãå®å¿ããªãã§ãããã? ç§ã«ã¯äœãšã
èšããŸããããã ããã®æ©èœãå®è£
ããããšã«ãã£ãŠãã»ãã¥ãªãã£
çã«å®å
šã ã£ããšããŠããåäœãå®å®ãããã©ãããšã¯ãŸãå¥ã®è©±ãš
ããæ°ãããŸãã
以äžãDeleGate ã¯å®å
šãããšããããšã«é¢ãã¯ãç§ã«ã¯æ¬¡ã®ãããª
çåããããŸãã
* é
åã®é·ãã®æ±ºãæã¡ãå€çšããŠãããã©ãæžã蟌ã¿æã®
buffer overrun ãã§ãã¯ã¯ååãã£ãŠããã®?
* FreeBSD SA ã DeleGate ãå±éºãšèªèããã®ã¯ããããã決
ãæã¡ã®å€çšãåå ãªããããªãã®?
* ããšãæžã蟌ã¿æã®é·ãã®ãã§ãã¯ã¯ããŠãããšããŠãããã¹
ã¯èµ·ãããããªãã®?
* ããŒãžã§ã³ 6 ã§ã¯å€§äžå€«ã£ãŠãã話ã¯éçºåŽã®å
¬åŒèŠè§£?
* ããŒãžã§ã³ 6 ã§ã¯å€§äžå€«ã£ãŠãã話ã®æ ¹æ 㯠randstack,
randenv, randfd ãå®è£
ãããã?
* randstack, randenv, randfd ã¯ãæ¬åœã«ãå€æ°ã®æœåšçãªã»
ãã¥ãªãã£ããŒã«ãã解æ¶ã§ãããã®ãªã®?
䌌ããããªçåãæã€äººãä»ã«ãããã®ã§ã¯ãªãã§ããããããã¶ãã
ããããçåã«çããåºãªãéãããã€ãŸã§çµã£ãŠãå±éºèŠãè¯å®ã
ãæèŠã絶ããããŸãå±éºèŠãåŠå®ããåŽããã¯ããŸã FreeBSD SA
ã®å
容ãä¿¡ããŠããã®ãããšãã£ã話ãåºãŠããŠã話ãåã¿åããªã
ç¶æ
ãç¶ãã®ã§ã¯ãªãããšæããã§ããã
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
> ãŸããFreeBSD Security Advisory (FreeBSD SA) ã§ã¯ãDeleGate ã®ã³ãŒ
> ãã£ã³ã°ã¹ã¿ã€ã«ã«å¯Ÿããæœåšçã«ã»ãã¥ãªãã£ããŒã«ã«ãªãç®æããš
> ãŠãå€ãããœãŒã¹ã³ãŒããäžããæžãçŽããªãéãå±éºã ããããšãã£
> ãææããããŸããã
Delegate ã£ãŠ security hole ãå€ãã㪠code ãããã§ãããç¡èžãª cache ã®
file é
眮ãšããæ°è²æªã make æ¹æ³ãšããäœããã1ã€ã® binary ã«ãããããª
protocol ã® proxy ãä¹ã£ãããããŠããŠãŽããŽãããŠãããšããæ¬ ç¹ãéåžžã«å€ã
æ°ãããŸãã
確ãã«ãNNTP cache server ãäœãèããã«ç«ã¡äžããããªããŠæã¯æ軜ãªã®ã§å
ç°
ãã€ãã£ãŠã¯ããã®ã§ãããééã£ãŠã firewall 㧠application gateway çšã®
program ãšããŠã€ãããããªãã®ã§ã¯ãªãã§ãããã
--
å
ç° ä¿æ (UCHIDA,Toshiaki)
æ£è§£ã
ãã£ã¡ãã£ãšã¡ã¿ãªèŠ³ç¹ããèŠããšããã®æã®Security Vulnerabilityã®åé¡
ã¯Software Qualityã®åé¡ã®subsetãšããŠæ±ãããã ããHigh Quality
Software Developmentã§çšãããããªææ³ãæ¬æ¥ã¯äœ¿ãã(ã¯ã)ããªã®ã§ããã
äžçäžãèŠåããŠãããŸã ãŸã ãœãããŠã§ã¢ããã»ã¹ããã®ã¢ãããŒãããã
ããæãã€ããŠããªãã¿ããã ãããŸã ããŸããã®åéã®ç 究ã¯é²ãã§ããªã
ã®ã§ãä»ãæãã€ããã°ããŸãã«æ©ããã®åã¡ã ãïŒèª°ããã£ãŠã¿ãïŒ
ã²ãã®ã¶
ãã€ãæããã§ãã, ãã®æã® buffer overrun 絡ã¿ã®ç©Žãäœã£ãŠããŸã人ã¯
char foo[1024];
ãšæžããæç¹ã§å¿é
ã«ãªããªãã®ã§ãããã. ç§ãªããã¯ããæžããšããã ã
ã§å¿é
ã«ãªãã®ã§ foo ã«å¯Ÿããã¢ã¯ã»ã¹å¶éæ¹æ³ããŸãèããã®ã§ããã©âŠ
(ç§ã®å Žåã»ãã¥ãªãã£ãšããé¢ã§ã¯ãªã, çŽç²ãªãœãããŠã§ã¢ã®å質é¢ã§ã®
話ã§ãã).
# traditional 㪠UNIX ã®ãœãããŠã§ã¢ã«ããããã®ãæ£èŠãããã®ã¯ UNIX
# æåã®æªãç¹ã§ããã/ãã£ã, ãšæã.
In article <HIRONOBU.00...@h2np.h2np.suginami.removeme.tokyo.jp>
hiro...@h2np.suginami.removeme.tokyo.jp (Hironobu Suzuki) writes:
> äžçäžãèŠåããŠãããŸã ãŸã ãœãããŠã§ã¢ããã»ã¹ããã®ã¢ãããŒãããã
> ããæãã€ããŠããªã
ããšãã°, ä»ã«ã©ã®ãããªã¢ãããŒããèããããã®ã§ãããã. æ€èšŒã®èªå
åãšã, ãã£ã¡ã®æ¹ã§ãã?
--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp
[12],(6,9),0,0,2
Kazuo Fox Dohzono wrote:
> å åïŒ
ä»éä¿¡è¡æã®ä»äºãããŠãŸã.
>
> ãã€ãæããã§ãã, ãã®æã® buffer overrun 絡ã¿ã®ç©Žãäœã£ãŠããŸã人ã¯
>
> char foo[1024];
>
> ãšæžããæç¹ã§å¿é
ã«ãªããªãã®ã§ãããã. ç§ãªããã¯ããæžããšããã ã
> ã§å¿é
ã«ãªãã®ã§ foo ã«å¯Ÿããã¢ã¯ã»ã¹å¶éæ¹æ³ããŸãèããã®ã§ããã©âŠ
> (ç§ã®å Žåã»ãã¥ãªãã£ãšããé¢ã§ã¯ãªã, çŽç²ãªãœãããŠã§ã¢ã®å質é¢ã§ã®
> 話ã§ãã).
>
> # traditional 㪠UNIX ã®ãœãããŠã§ã¢ã«ããããã®ãæ£èŠãããã®ã¯ UNIX
> # æåã®æªãç¹ã§ããã/ãã£ã, ãšæã.
>
Cèšèªèªèº«ã®èšèšã®æ¬ ç¹ã ãããšæããŸãã
ã€ãŸããæ¬åœã®æå³ã§ã®ãªããžã§ã¯ããšããŠã®ãé
åãã¯èšèªã«ã¯åãã£ãŠãããã
å®éã«ã¯ã¢ãã¬ã¹ã§ä»£çšããŠãããïŒå€æ°ã®å®£èšã®ãšããã§é åã確ä¿ãããšãã
ã§ã¯ãäžèŠé
å颚ã«ã¿ããŠããŸãããïŒ
In article <3A0E4563...@ca2.so-net.ne.jp>
Murakami Hiroshi <nws...@ca2.so-net.ne.jp> writes:
> Cèšèªèªèº«ã®èšèšã®æ¬ ç¹ã ãããšæããŸãã
ããã¯ãã»ãã¥ãªã㣠(ãããã¯å¥ã®å
ç¢æ§) ãèŠããããã°ã©ã ã« C ã䜿
ãã®ãééãããšããæèŠã§ãã?
# ãŸ, ããã¯ãããã.
In article <3A0E4563...@ca2.so-net.ne.jp> ,
Murakami Hiroshi <nws...@ca2.so-net.ne.jp> writes
>> char foo[1024];
>Cèšèªèªèº«ã®èšèšã®æ¬ ç¹ã ãããšæããŸãã
ãããããªãã£ãŠ...
printf/scanf ããçæãããæååã®é·ããäºæž¬åºæ¥ãªã
ãšããã©ã€ãã©ãªã®èšèšã®ãŸãããåå ã ãšæããŸãã
char foo[1024]; ãšæžããããªããªãæžããªããã°è¯ãã ãã§ãããã
ããæžããªããã°ãªããªããšããããªãèšèªã«è²¬ä»»ããããšæããã ãã©ã
ããã§ã¯ãªãã§ããã?
ãªã®ã§ãWhite Smith ã®æ¹ããããšããã£ãŠãã人ããããããªæ°ãããã
---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
æ²³éçæ²» @ çç倧åŠå·¥åŠéšæ
å ±å·¥åŠç§,
ç§åŠæè¡æ¯èäºæ¥å£ããããç 究21(æ©èœãšæ§æ)
(èªå㧠Followup-To: ã fj.comp.security ã«åããŠãããŠãªãã§ããã
èšæ£ãšããããšã§ãããšã® fj.os.bsd.freebsd ã«ãæããŠãããŸãã)
* From: m-ka...@sra.co.jp
* Message-ID: <8ui6ss$18t1$1...@sranhh.sra.co.jp>
> ãŸããFreeBSD Security Advisory (FreeBSD SA) ã§ã¯ãDeleGate ã®ã³ãŒ
> ãã£ã³ã°ã¹ã¿ã€ã«ã«å¯Ÿããæœåšçã«ã»ãã¥ãªãã£ããŒã«ã«ãªãç®æããš
> ãŠãå€ãããœãŒã¹ã³ãŒããäžããæžãçŽããªãéãå±éºã ããããšãã£
> ãææããããŸããã
ãã®éšåã§ããFreeBSD SA ãèªã¿è¿ãããšããããäžããæžãçŽããªã
éãå±éºããšè§£éã§ããèšè¿°ã¯ãªãããããã«å€§è¢è£ã§ãããå®éã«ã¯ã
FreeBSD-SA-00:04.delegate.asc:
| Unfortunately no simple fix is available - the problems with the
|delegate software are too endemic to be fixed by a simple patch.
ãšãã£ãè¡šçŸã«ãªã£ãŠããŸãã
ãæœåšçãªã»ãã¥ãªãã£ããŒã«ãå€æ°ããšããç¹ã¯ãã®ææžã®äžã«
| Unfortunately it is written in a very insecure style, with
| potentially dozens of different exploitable buffer overflows
ãšãã£ãè¡šçŸããããŸãã
倱瀌ããŸããã
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
In article <1078.97...@rananim.ie.u-ryukyu.ac.jp>
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> char foo[1024]; ãšæžããããªããªãæžããªããã°è¯ãã ãã§ãããã
> ããæžããªããã°ãªããªããšããããªãèšèªã«è²¬ä»»ããããšæããã ãã©ã
> ããã§ã¯ãªãã§ããã?
char foo[1024]; ãæªãããã§ã¯ãªãã§ããã. ããã§å
åã§ãã (ãããªã
ã®ãã§ãã¯ãè¡ãããŠãããšãã®) ä¿èšŒããããªã.
æ«å°Ÿã«ã¿ãŒããã€ã¿ããã§ãã¯ãµã ãªã©ãããå Žå㯠pool ããªããã°ãã®æ£
åœæ§ã¯ããããŸããã, ãã®éäžã§ãã¯ããäœããã®äºæ
ã«ãã£ãŠå®ãããã
é·ãããè¶ãããªã invalid ãªããŒã¿ãšããŠç Žæ£ããã®ãæ®éã§ããã (ãŸ
ãã¯, 次ã®ã¹ã¿ãŒãããŒã¯ãããå ŽæããåŠçãããšã).
ãããããçšåºŠèªåã§ããããã (人çºãã¹ãæ··å
¥ãããããªã) å Žåã« C
ã ãšã¡ãã£ãšâŠãšããã®ã¯, ãŸããããæèŠã§ã¯ãããŸã.
ãã£ãšåºããœãããŠã§ã¢å質åäžã®ããã®çè«ïŒææ³ã®å€§åãé©çšå¯èœã ãšå
ã¯æã£ãŠããŸãã
åŠè¡çã«ããã©ã¯ãã£ã«ã«ã«ãããŸã ãŸã ã»ãã¥ãªãã£ãåæãšãããœãããŠã§
ã¢å質ã®çè«ã¯äœçœ®ã¥ããäœç³»åãããŠããªãã®ã§ç 究ãããªãä»ããã£ã³ã¹
ã§ãã
ã²ãã®ã¶
In article <HIRONOBU.00...@h2np.h2np.suginami.removeme.tokyo.jp>
hiro...@h2np.suginami.removeme.tokyo.jp (Hironobu Suzuki) writes:
> K> ããšãã°, ä»ã«ã©ã®ãããªã¢ãããŒããèããããã®ã§ãããã. æ€èšŒã®
> K> èªååãšã, ãã£ã¡ã®æ¹ã§ãã?
>
> ãã£ãšåºããœãããŠã§ã¢å質åäžã®ããã®çè«ïŒææ³ã®å€§åãé©çšå¯èœã ãšå
> ã¯æã£ãŠããŸãã
ãã, ããã§ãã.
ã€ãããã°ã©ãçãªçºæ³ãããŠããŸããŸãããã©, ä»æ§éãã®åäœããããœã
ããŠã§ã¢ããã, æ¬æ¥æåŸ
ãããåäœããã¹ãŠããŸãããªãããšããŠã, ãã
ãå
ç¢ãã©ãã (ãããåºçŸ©ã«ã¯å質ã§ããããã©) ã¯ãŸãäžæ®µäžã®è©±ã§ãã.
> åŠè¡çã«ããã©ã¯ãã£ã«ã«ã«ãããŸã ãŸã ã»ãã¥ãªãã£ãåæãšãããœãããŠã§
> ã¢å質ã®çè«ã¯äœçœ®ã¥ããäœç³»åãããŠããªãã®ã§ç 究ãããªãä»ããã£ã³ã¹
> ã§ãã
ä»æ§ãæºãããœãããŠã§ã¢äœæã®è©±ãšåããŠ, ãã»ãã¥ãªãã£ãåæãšããä»
æ§æ±ºå®ãã®éšåã§ç¬ç«ã«ãªãããª.
> char foo[1024]; ãæªãããã§ã¯ãªãã§ããã. ããã§å
åã§ãã (ãããªã
> ã®ãã§ãã¯ãè¡ãããŠãããšãã®) ä¿èšŒããããªã.
> æ«å°Ÿã«ã¿ãŒããã€ã¿ããã§ãã¯ãµã ãªã©ãããå Žå㯠pool ããªããã°ãã®æ£
> åœæ§ã¯ããããŸããã, ãã®éäžã§ãã¯ããäœããã®äºæ
ã«ãã£ãŠå®ãããã
> é·ãããè¶ãããªã invalid ãªããŒã¿ãšããŠç Žæ£ããã®ãæ®éã§ããã (ãŸ
> ãã¯, 次ã®ã¹ã¿ãŒãããŒã¯ãããå ŽæããåŠçãããšã).
> ãããããçšåºŠèªåã§ããããã (人çºãã¹ãæ··å
¥ãããããªã) å Žåã« C
> ã ãšã¡ãã£ãšâŠãšããã®ã¯, ãŸããããæèŠã§ã¯ãããŸã.
http://www.trl.ibm.co.jp/projects/security/ssp/
ãšãã
--
é
äº æž
é (E-mail: ksa...@kso.netwk.ntt-at.co.jp)
In article <8ui6ss$18t1$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ç¬ åã§ãã
> ãŸããFreeBSD Security Advisory (FreeBSD SA) ã§ã¯ãDeleGate ã®ã³ãŒ
> ãã£ã³ã°ã¹ã¿ã€ã«ã«å¯Ÿããæœåšçã«ã»ãã¥ãªãã£ããŒã«ã«ãªãç®æããš
> ãŠãå€ãããœãŒã¹ã³ãŒããäžããæžãçŽããªãéãå±éºã ããããšãã£
> ãææããããŸããã
ããã«å¯ŸããŠã® DeleGate ã®äœè
ã®äœè€è±ããã®çãã¯ã次ã®å Žæ
ã«ãããŸãã
http://www.delegate.org/mail-lists/archive/delegate/9110-9120
http://www.delegate.org/mail-lists/delegate-en/636
http://www.delegate.org/delegate/Manual.htm#defense
> DeleGate 6.x ã®ãœãŒã¹ãã¡ãã£ãšçºããéãã§ã¯ãç§ã«ãããæããŠã
> ãŸãã
ãããã« DeleGate ã«ã¯ãäžèŠãã¹ã¿ãã¯ã»ãªãŒããŒãããŒãèµ·ã
ããããšãã§ããããã«èŠããŸãããå®éã«ããããã£ããèµ·ãã
ãšããDeleGate å
èµã®æ€åºæ©èœã«ã²ã£ããããªãã£ããšãã話ã¯ã
èŠã€ãã£ãŠããŸãããå
ã® FreeBSD-SA-00:04 ã¯ããã°ãã€ã¶ãã
ãŠãããïŒã¶æããã£ãåŸã§ãåºãŠãããã®ã®ããã§ãã
> ããšããDeleGate 6 ã§ã¯å€§äžå€«ããšããæèŠãç§ãèããããšããã
> ã®ã§ãããæ¬åœã ãšãããã©ããã察çããããã倧äžå€«ãšããããš
> ãªãã§ããããã
詳ããã¯ãäžã§ç€ºããåæãèŠãŠæ¬²ããã®ã§ãããDeleGate 5 ãš
6 ã§ã¯ãDNS é¢é£ã®ã³ãŒãã IPv4 察å¿ãå«ããŠå€§ããå€ãã£ãŠã
ãŠããã°ã®ææã¯ãDeleGate 5.9 ã®ãã®ã«ãããïŒå
·äœçã«ã©ã®
ããŒãžã§ã³ãåé¡ãªã®ãã¯ãã°ãææããŠããæ¹ã§æ瀺ããŠããªãïŒ
ãšããããšã§ãã
> ãæèŠã絶ããããŸãå±éºèŠãåŠå®ããåŽããã¯ããŸã FreeBSD SA
> ã®å
容ãä¿¡ããŠããã®ãããšãã£ã話ãåºãŠããŠã話ãåã¿åããªã
> ç¶æ
ãç¶ãã®ã§ã¯ãªãããšæããã§ããã
ç§ã¯ãFreeBSD SA ã®ãããµãã§ãå€ãææãããDeleGate ã®èè
ãä¿¡ããŸãã
å
·äœçãªãã°ã®ææããã£ãã®ããå»å¹Žã®ïŒïŒæã§ããã°ã朰ãã®
ã¯ãå³åº§ã«è¡ãããã®ã§ããããã®åŸãïŒãµæãã£ãŠãããå€ãããŒ
ãžã§ã³ã«å¯ŸããSecurity Advisory ãã§ãããããã«ãããããïŒãµ
æãã£ãŠããfj ã«èšäºãåºãããšããã®èŸºãã®æ
å ±ã®äŒããæ¹ã
é床ã«ã€ããŠããç 究ãã¿ãåãŸã£ãŠãããããããŸããã
ãããªãšãžã¥ãªãšããããã人éå€ãã£ãŠããªããšããããšãªã®ã§ã
äžè¬çã«è§£ãã®ã¯é£ããã®ã§ããããã©ããã°æ
å ±ã®ä¿¡ææ§ã®ãã
ãªè©±ãªããªããšããªããããããŸããã
> ãããããããšããã§ãã¯ããã£ãŠãããšããŠããé
åã®é·ãã 1024,
> 128 ãšãã£ã圢ã§ãã¡ãã¡ã«æžããŠããŸã£ãŠãããšãæžãééãããã
> ãããšã¯ãªããã§ããããã 1024 ãã€ããè¶
ããŠæžã蟌ãŸãªããã©ã
> ããã§ãã¯ããŠããŠãããã®é
åã®é·ãã¯å®ã¯ char [256] ã ã£ããšã
> ããããªãã¹ãããã®ã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã§ã¯çã¿ããããªãã®ããªã
> ãšããæ°ãããªãããããŸããã
ããã¯ãããã§ãããããæ®éã®äººã¯ãç䌌ãããªãæ¹ãããã³ãŒ
ãã£ã³ã°ã»ã¹ã¿ã€ã«ã§ãã
ãæ°åãéãïŒãããããããããïŒã
ãç波倧åŠãé»åã»æ
å ±ããããããã
In article <20001114105...@kso.netwk.ntt-at.co.jp>
SAKAI Kiyotaka <ksa...@kso.netwk.ntt-at.co.jp> writes:
> http://www.trl.ibm.co.jp/projects/security/ssp/
>
> ãšãã
ãã®æã®ã¯ã©ã³ã¿ã€ã æã®è©±ã«ãªã£ã¡ãããŸããã. éçãªæ¹é¢ã§ã®ããžãã¯
ãã§ãã«ã®ãããªãã®ããããšæããŸããã?
# ãã€ããã®ä»æ§èšè¿°èšèªã®è©±ã«ãªã£ãŠããã®ããªã.
In article <8ui6ss$18t1$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ãã®ããã«é
åã®é·ãã 1024 ãšã 128 ãšãã決ãæã¡ã§æžããŠãããš
> ãéåžžã«å€ããsprintf() çã§ãã®é
åã«æžã蟌ãéã«ã¡ãããšé åã
> ã¯ã¿åºããŠæžã蟌ãŸãªãããã«ãã§ãã¯ããŠããã®ãã©ããçåã«æ
> ããç®æãããªããããŸããããã FreeBSD SAã®èšããæœåšçãªã»ãã¥
> ãªãã£ããŒã«ãã§ã¯ãªãããšæããŸãã
C ã«ãããåºå®é·ã® (åçŽãª) é åã«ã€ããŠã§ãã, æœåšçã«
char foo[MAX_FOO];
ãåãåé¡ãæã€ãšæããŸã. ã§, ç§ã¯ãã§ãã¯æã« (1024 ãšãã£ã) å³å€
ã¯ãã¡ãã, MAX_FOO ãçšãã
#define elements_of(x) ((sizeof (x))/(sizeof (x)[0]))
ãçšããŠ
if (elements_of (foo) <= ++wi)
...;
ã®ããã«ããŠããŸã. ãããªãã°æ±ºãæã¡å³ã»ãã¥ãªãã£ããŒã«ãšããããšã«
ã¯ãªããªãã¯ãã§ã (malloc/realloc ã«ããŠãåæ§ã®ãã§ãã¯ã¯ã©ããã§å¿
èŠãªã¯ãã§ããã).
â
ããã (æãªããäŸå€ããªããã©ããåä¿¡åçã§) 䜿ãå§ããŠãã°ããã¯è¯ãã£
ãã®ã§ãã,
void
func (foo_t foo[N]) /* N ã«æå³ã¯ãããŸããã, ãå®ã¯ãããªãã ããšããæ°æã¡ã§ */
{
unsigned i;
for (i = 0; i < elements_of (foo); i++)
...;
}
ãšããŠããŸã£ãããšãããã®ãçœç¶ããŠãããŸã.
# ä»ã«ããããŸããã?
In article <8ur0un$lkf$1...@netnews.rim.or.jp>
doh...@hf.rim.or.jp (Kazuo Fox Dohzono) writes:
> In article <8ui6ss$18t1$1...@sranhh.sra.co.jp>
> m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
>
> > ãã®ããã«é
åã®é·ãã 1024 ãšã 128 ãšãã決ãæã¡ã§æžããŠãããš
> > ãéåžžã«å€ããsprintf() çã§ãã®é
åã«æžã蟌ãéã«ã¡ãããšé åã
> > ã¯ã¿åºããŠæžã蟌ãŸãªãããã«ãã§ãã¯ããŠããã®ãã©ããçåã«æ
> > ããç®æãããªããããŸããããã FreeBSD SAã®èšããæœåšçãªã»ãã¥
> > ãªãã£ããŒã«ãã§ã¯ãªãããšæããŸãã
ã«ããã sprintf ã§ãã, æžåŒãåºå®ã§ããã°å®ã¯èŠæ±ãããé åã®æ倧é·
ã¯ã»ãšãã©ã®å Žåã§äºåã«ãããã®ã§ã¯ãªãããšæããŸã. %c, %d, %x 蟺ã
ã¯ãã¡ãã, %f ã 308+α (笊å·ãå°æ°ç¹ãªã©) ãããã§ããã (%s ã¯èã
ã©ããã§ããããã©).
snprintf ã䜿ãã®ãæã§ãã, å©çšããã format ãšé·ãã®çµãå®çŸ©ãããã¡
ã€ã«ãš, äºåã«ãã§ãã¯ããããã°ã©ã ãçšæããŠãããŠ, ã©ã³ã¿ã€ã æã«å€±
æããªãããã«ããŠããã®ãããã®ã§ã¯ãªãã§ãããã.
# malloc/realloc ã䜿ã£ãŠé 次é åã䌞ããªããæžåŒåããã©ã€ãã©ãªããã£
# ãŠããããã. char *mprintf() ãšã.
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> > DeleGate 6.x ã®ãœãŒã¹ãã¡ãã£ãšçºããéãã§ã¯ãç§ã«ãããæããŠã
> > ãŸãã
>
> ãããã« DeleGate ã«ã¯ãäžèŠãã¹ã¿ãã¯ã»ãªãŒããŒãããŒãèµ·ã
> ããããšãã§ããããã«èŠããŸãããå®éã«ããããã£ããèµ·ãã
> ãšããDeleGate å
èµã®æ€åºæ©èœã«ã²ã£ããããªãã£ããšãã話ã¯ã
> èŠã€ãã£ãŠããŸãããå
ã® FreeBSD-SA-00:04 ã¯ããã°ãã€ã¶ãã
> ãŠãããïŒã¶æããã£ãåŸã§ãåºãŠãããã®ã®ããã§ãã
å
·äœçã«ã©ããããã®ãç¥ããŸãããããDeleGate å
èµã®æ€åºæ©èœãã®
ãé°ã§å®éã«ã¯ãªãŒããŒãããŒãèµ·ããããªãä»çµã¿ã«ãªã£ãŠãããã§ãã
ããããããšããããã«ããããŸã§äžåºŠããããã£ãå ±åã¯ãªãããšèšã£
ãŠããã ãã§ãªãã§ããããã
ã©ã¡ããã«ãã£ãŠãæå³åãã¯ããã¶ãå€ãã£ãŠãããšæããŸãã
> ç§ã¯ãFreeBSD SA ã®ãããµãã§ãå€ãææãããDeleGate ã®èè
> ãä¿¡ããŸãã
DeleGate ã«é¢ãã FreeBSD SA ã®çºè¡ã®çµç·¯ã«äžæºãããã®ã¯åãã
ãŸããã"with potentially dozens of different exploitable buffer
overflows" ãšããéšåã®èšè¿°ã¯ãäŸç¶ãšããŠäºå®ã§ãã
ããšã FreeBSD SA ã®ãã®éšåã®èšè¿°ã ããå€æçç±ã«ãããšããŠãã
DeleGate ã®ãã€ããªããã±ãŒãžã FreeBSD ã§ã¯é
åžããªããšããæ¹é
ã¯åŠ¥åœã ãšç§ã¯æããŸãã
ãããå
èµã®æ€åºæ©èœã«ãã£ãŠãã®èšè¿°ãåŠå®ã§ããã®ãªãããããå
·
äœçã«èª¬æããªãããšã«ã¯ããFreeBSD SA ã®ææã¯ãããµãããšã ãé
é£ããŠãããŸã説åŸåãæããŸããã
FreeBSD ã§ãã€ããªããã±ãŒãžãé
ãããé
ããŸããé¢ä¿ãªãããç¥ã
ãŸããããFreeBSD ããã®ä»ã® OS ã®ãŠãŒã¶ã®äžéšã«æ··ä¹±ãããã®ã¯äº
å®ã ãšæããŸããç§ãå«ããŠã
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
ã©ããªçµç·¯ã§ããã®è©±ã«ãªã£ãã®ãã¯é ããç¥ããŸãããïŒïŒïŒ
ïŒç¥ãããšãã§ããªããã§ã¯ãªããé¢ç¥ããæå¿ããããŸããïŒ
ããã¯ãMAX_FOO ã䜿ãã elements_of ãªããã¯ãã䜿ããã
ãšããåé¡ã§ã¯ãªããåã« foo ãžã®çŽæ¥ã¢ã¯ã»ã¹ãè¡ããã
ç¯å²ã®åé¡ã§ã¯ãªãã§ããããã
static char foo[MAX_FOO];
ptrdiff_t get_elements_of_foo()
{
return MAX_FOO;
}
å¢çãè¶ããŠã¢ã¯ã»ã¹ãããããªäŸå€ãåŠçå¯èœãªèšèªã«ã¯æµããªããã§ãã
ããã©.
In article <8v12jn$fip$1...@news01bd.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> ããã¯ãMAX_FOO ã䜿ãã elements_of ãªããã¯ãã䜿ããã
> ãšããåé¡ã§ã¯ãªããåã« foo ãžã®çŽæ¥ã¢ã¯ã»ã¹ãè¡ããã
> ç¯å²ã®åé¡ã§ã¯ãªãã§ããããã
ããã°ã©ããå³å€ã MAX_FOO ã®ãããªæ
å ± (ããã§ããâæ
å ±âã«ã¯âèå¥
å MAX_FOO ãé
å foo ã®å€§ãããïŒç¢ºãã«ïŒè¡šããŠãããâãå«ã¿ãŸã) ã
ããã°ã©ãã³ã°æã«åŸãã«ã¯, èšæ¶ã«é Œãã, ãã®å®çŸ©åæãèŠã«è¡ãåäœã
å¿
èŠã§ã (èå¥å㯠foo ã ãã§ã¯ãªã). ããéå
· (editor) ãããã°å€§ãã
æéã§ã¯ãªãã®ãããããŸããã.
ç§ã¯ãããã£ãæéãå«ã£ãŠã¢ã¯ã»ã¹ãã§ãã¯ã®çºã®ã³ãŒããæããŠããŸãå Ž
åãããã®ã§ã¯ãªãããšæã£ãŠããŸã (elements_of ã¯äžã€ã®ãã¯ãã®æåãš
foo ãã¹ã³ãŒãå
ã§ããããšãããã°ã©ããç¥ã£ãŠããã°ãã).
ãããã foo ã«å¯Ÿããã¢ã¯ã»ã¹ãã§ãã¯ã³ãŒãã«ãããŠ, ããã°ã©ããæè
ããªããã°ãªããªãã®ã¯ foo ã®èŠçŽ æ°ã§ãã, å³å€ãããã«ä»£ããèå¥åã§
ã¯ãªãã¯ãã§ã (åœåã¯ãã¯ãã§ã¯ãªãäžã
ã¿ã€ãããŠããŸãã). ç§ã¯æ
£ã
ãŠããŸããŸããã, elements_of() ã¯æãã®å€äŸ¿å©ã§ãã[*].
> static char foo[MAX_FOO];
> ptrdiff_t get_elements_of_foo()
> {
> return MAX_FOO;
> }
ãã㯠MAX_FOO ã䜿ãå Žåãšåçš®ã®åé¡ãæã£ãŠããæ°ãããŸã, ãšãããš
èšãéãããã.
# [*]:
#
# éãããã±ãŒã¹ããç¥ããŸããã, const ãªé
å c[] ãšããã«åŒå¿ããå€
# æ° v[] ããããšã, v[elements_of (c)] ãšãã䜿ãæ¹ãåºæ¥ãŸã. èšå®ãã¡
# ã€ã«ããå€ãèªãå Žåãªã©ã«
#
# const char * const cmds[] = {
# "foo_val",
# "bar_val",
# ...
# };
# value_t v[elements_of (cmds)];
#
# ãšã.
> å¢çãè¶ããŠã¢ã¯ã»ã¹ãããããªäŸå€ãåŠçå¯èœãªèšèªã«ã¯æµããªããã§ãã
> ããã©.
é
åã®æ¯åã¬ã³ãžãã§ãã¯ã®ãããªããšã
å¿
èŠãªãšãã¯ãããããé¢æ°ãäœãã°ãããã
å¿
èŠã§ãªããšãã«ãäœèšãªã³ã¹ããç¯çŽã§ãããã
ãã®ææ³ã ãšç§ã¯æã£ãŠããŸãããã
ãã®ç¹ãä»ã®èšèªã«å¯ŸãããŠã€ãŒã¯ãã€ã³ããšã¯æããŠããŸããã
void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max, jmp_buf jb)
{
if( i < 0 || max <= i ) longjmp(jb, 1);
*(p + i) = a;
}
éã«ãä»ã®èšèªã«æ¯ãããŠãå¿ èŠãªé¢æ°ããäœããªãããšãããã®ã§ã¯ïŒ
ã€ãŸãã決ããã¡é
åã仮㫠malloc ã«çœ®ãæãããšããŠãã
åå ãããã«ããéããäœãæ¹åããªãã°ãããã
malloc ã®ã³ã¹ãã ãã空費ããããšã«ãªããšæããŸãã
# å¿
èŠãªãšãã¯ãããããèšèªãäœãã°ããã
# ãªãã»ã©ãäžçäžã§ãã£ãŠãŸãã
> ããã°ã©ããå³å€ã MAX_FOO ã®ãããªæ
å ± (ããã§ããâæ
å ±âã«ã¯âèå¥
> å MAX_FOO ãé
å foo ã®å€§ãããïŒç¢ºãã«ïŒè¡šããŠãããâãå«ã¿ãŸã) ã
> ããã°ã©ãã³ã°æã«åŸãã«ã¯, èšæ¶ã«é Œãã, ãã®å®çŸ©åæãèŠã«è¡ãåäœã
> å¿
èŠã§ã (èå¥å㯠foo ã ãã§ã¯ãªã). ããéå
· (editor) ãããã°å€§ãã
> æéã§ã¯ãªãã®ãããããŸããã.
# ç§ãåãããšãèšã£ãŠããŸã£ããããªã®ã§ãããæªãã§ãã
å®çŸ©å ŽæãèŠã«è¡ããªããã°æ
å ±ãåŸãããªãã
ãšããæç¹ã§äœããéã£ãŠããã®ã§ã¯ïŒ
char foo[MAX_FOO];
void DamenaRei(void)
{
fgets(foo, MAX_FOO, stdin);
}
void MottoSunaoni(char *p, ptrdiff_t max)
{
fgets(p, (int)max, stdin);
}
ã©ãããŠãã°ããŒãã«å€æ°ãå¿
èŠãªå Žåã
æ§èœé¢ã®å¶çŽãéåžžã«åŒ·ãå Žåãé€ããŠ
åŒæ°ã§æž¡ãæ¹ãæãŸãããšæããŸãã
ã€ãŸããfoo ã®å®çŸ©ã«è²¬ä»»ãæã€ã¢ãžã¥ãŒã«ãæ¢ãæ
ã«åºãããã
ããäžã®ã¢ãžã¥ãŒã«ãŸã§ãã±ããªã¬ãŒã§äŒãã£ãŠããæ
å ±ããçµã蟌ãã§
èããã®ãªããã®æ¹ããããšæãã®ã§ãã
# ãã£ãšããmax ãè²°ã£ãŠãããŠäœ¿ããªããšãããã¹ã¯
# ããã§ãå®å
šã«ã¯é²ããŸãããã
> ç§ã¯ãããã£ãæéãå«ã£ãŠã¢ã¯ã»ã¹ãã§ãã¯ã®çºã®ã³ãŒããæããŠããŸãå Ž
> åãããã®ã§ã¯ãªãããšæã£ãŠããŸã (elements_of ã¯äžã€ã®ãã¯ãã®æåãš
> foo ãã¹ã³ãŒãå
ã§ããããšãããã°ã©ããç¥ã£ãŠããã°ãã).
ããããããšã§ãããã
void Jousou(void)
{
char foo[MAX_FOO];
MottoSunaoni(foo, elements_of(foo), stdin);
}
> > static char foo[MAX_FOO];
> > ptrdiff_t get_elements_of_foo()
> > {
> > return MAX_FOO;
> > }
>
> ãã㯠MAX_FOO ã䜿ãå Žåãšåçš®ã®åé¡ãæã£ãŠããæ°ãããŸã, ãšãããš
> èšãéãããã.
ãããä»°ããšããã
å¯ãŒããŠããããã§ãæ¥ãããããïŒèªå·±å«æªïŒ
> # éãããã±ãŒã¹ããç¥ããŸããã, const ãªé
å c[] ãšããã«åŒå¿ããå€
> # æ° v[] ããããšã, v[elements_of (c)] ãšãã䜿ãæ¹ãåºæ¥ãŸã. èšå®ãã¡
> # ã€ã«ããå€ãèªãå Žåãªã©ã«
> #
> # const char * const cmds[] = {
> # "foo_val",
> # "bar_val",
> # ...
> # };
> # value_t v[elements_of (cmds)];
> #
> # ãšã.
ãªãã»ã©ã
ããã foo_val ã [0] 㧠bar_val ã [1] ãšããæç¹ã§
ãŸãèŠçŽ çªå·ã®ãããããã«ã€ãªãããŸãããïŒ
ã»ãã¥ãªãã£ãšããã®ã¯ãïŒïŒïŒïŒ
ã«è¿ã¥ããããšãããšæ¥æ¿ã«ã³
ã¹ããããããŸããæå·ãïŒïŒïŒïŒ
解ããªããšããã®ã¯ãçæ§ä¹±æ°
ã䜿ããã®ãããªããŠãä»ã®ãã®ã¯è§£ããŸããå®å
šæ§ã¯ãçµå±ãæ»
æãšã解èªã«èŠããã³ã¹ãã倧ããããããšã§ãæ»æã解èªããåŸ
ãããå©çãçžå¯Ÿçã«å°ããããããšãã話ã§ãã
In article <8uvdk7$pgq$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ç¬ åã§ãã
> å
·äœçã«ã©ããããã®ãç¥ããŸãããããDeleGate å
èµã®æ€åºæ©èœãã®
> ãé°ã§å®éã«ã¯ãªãŒããŒãããŒãèµ·ããããªãä»çµã¿ã«ãªã£ãŠãããã§ãã
> ããããããšããããã«ããããŸã§äžåºŠããããã£ãå ±åã¯ãªãããšèšã£
> ãŠããã ãã§ãªãã§ããããã
ãæ€åºããšããã®ã¯ããé²æ¢ãã§ã¯ãããŸãããDeleGate ã¯ããã
ãã¡ã»ãªãŒããŒãããŒãèµ·ãããšããããŸãããããããããå³åº§
ã«ã·ã¹ãã ã«äŸµå
¥ããããšããããšã«ã¯ã€ãªãããŸããã
DeleGate ã®æ»ææ€åºæ©èœã®èª¬æã¯ã次ã®å Žæã«ãããŸãã
http://www.delegate.org/delegate/Manual.htm#defense
ãããã¡ã»ãªãŒããŒãããŒãèµ·ããšãå€ãã®å Žåãæ»æãåãããµãŒ
ãã¯ãã¯ã©ãã·ã¥ããŸããDeleGate ã«ã¯ãã¯ã©ãã·ã¥ãèµ·ãããšã
管çè
ã«é»åã¡ãŒã«ã§éç¥ããŠãããã«ããã®ã¯ã©ãã·ã¥ã®åå ãš
ãªã£ãæ¥ç¶å
ãäžæçã«æåŠããŸãã
ãå€ãã®å Žåããã¯ã©ãã·ã¥ãããšæžããŸãããããããã©ãããŠ
ïŒïŒïŒïŒ
ã§ã¯ãªãããšãããšãä¹±æ°ã䜿ã£ãŠããããã§ãã
DeleGate ã¯ãã¹ã¿ãã¯ã®åºãä¹±æ°ã§å€ããŠããŸãããã®çµæã
èšèªã® auto å€æ°ã®çªå°ããã©ã³ãã ã«å€ããããšã«ãªããŸãããã
ãã¡ã»ãªãŒããŒãããŒã§ãauto å€æ°ã«æªããã³ãŒããéã蟌ãã®
ã«æåãããšããŠãããã®çªå°ã¯ã©ã³ãã ã«å€ãããŸãããã®æªã
ãã³ãŒãã«å¶åŸ¡ãé£ã°ãããã«ã¯ããªã¿ãŒã³ã»ã¢ãã¬ã¹ãããã®ã©
ã³ãã ãªçªå°ã«æžãæããªããšãããªãããã§ãããããã¯ã©ã³ã
ã ãªããã§ãéåžžã«é£ããããã§ãã
ã§ãã©ã³ãã ãªã®ã§ãïŒïŒïŒïŒ
ã§ã¯ãããŸãããäœåãã«ïŒåã¯ã
æåããã§ããããã§ãããã®åã«ãå€ãã®å Žåã¯ãæ€ç¥æ©èœã®å
ãã§æ»æã®æŽ»åãèŠã€ãã£ãŠããŸãããã¯ã©ãã·ã¥ããŠåèµ·åãã
ãšããŠããä»åºŠã¯åãæã§ã¯æ»æã«æåããŸããã
念ã®ããã«ä»ãå ããŠãããšãDeleGate ã¯ããã®æ©èœã«äŸåããŠ
ãããã¡ã»ãªãŒããŒã©ã³å¯ŸçãææãããŠããããã§ã¯ãããŸããã
ãããã¡ã»ãªãŒããŒã©ã³å¯Ÿçã¯ã人éæã§ãã£ãŠããŠãä»ãŸã§äººé
æã§èŠã€ãã£ããã®ã¯ãå
šéšæœ°ãããŠãããšããããšã§ããã人é
æãã«é Œãã®ã¯ããŸããäœãªãã§ããã®éšåãæ©æ¢°çã«ã§ããã°ã
ããšããã®ã¯ããã®éãã§ããJava ã§æžããšãããDeleGate ã¯ã
移æ€æ§ãéãããŠãããœãããŠã§ã¢ãªã®ã§ããã®ãã¡ Java ã§æžã
çŽããããšãã話ã¯ãããã©ããªãã§ããããã
> DeleGate ã«é¢ãã FreeBSD SA ã®çºè¡ã®çµç·¯ã«äžæºãããã®ã¯åãã
> ãŸããã"with potentially dozens of different exploitable buffer
> overflows" ãšããéšåã®èšè¿°ã¯ãäŸç¶ãšããŠäºå®ã§ãã
ã¯ããããã§ãã
> ããšã FreeBSD SA ã®ãã®éšåã®èšè¿°ã ããå€æçç±ã«ãããšããŠãã
> DeleGate ã®ãã€ããªããã±ãŒãžã FreeBSD ã§ã¯é
åžããªããšããæ¹é
> ã¯åŠ¥åœã ãšç§ã¯æããŸãã
ã¯ãããã€ããªã»ããã±ãŒãžãé
åžããªããšããã®ã¯ãSA ãåºãŠ
ãåºãªããŠããããšããšãããªãæ¹ãããããšã ãšæããŸããå®éã
äœè
ããDeleGate ã®é
åžãããªãªãžãã«ããã® ftp ã«ããé
åžã
ãã«å¶éããããšèšã£ãŠããŸããïŒå¹Žã»ã©åã«äœè
ã«äŒã£ãæã«ã
FreeBSD ã® CD ã«DeleGate ãå
¥ã£ãŠãããšèšã£ãããé©ããŠããŸ
ãããäœè
ã¯ãç¥ããªãã£ãã¿ããã§ãã
> ãããå
èµã®æ€åºæ©èœã«ãã£ãŠãã®èšè¿°ãåŠå®ã§ããã®ãªãããããå
·
> äœçã«èª¬æããªãããšã«ã¯ããFreeBSD SA ã®ææã¯ãããµãããšã ãé
> é£ããŠãããŸã説åŸåãæããŸããã
>
> FreeBSD ã§ãã€ããªããã±ãŒãžãé
ãããé
ããŸããé¢ä¿ãªãããç¥ã
> ãŸããããFreeBSD ããã®ä»ã® OS ã®ãŠãŒã¶ã®äžéšã«æ··ä¹±ãããã®ã¯äº
> å®ã ãšæããŸããç§ãå«ããŠã
ããã§ããããã¡ã»ãªãŒããŒãããŒããçãæ»æãé²ãæ¹æ³ã§ããã
ã¹ã¿ãã¯ã®åºã®ã©ã³ãã åãããå¹æãããã®ã¯ãã¹ã¿ãã¯ãå®è¡
çŠæ¢ã«ããããšã§ãããã®ãã㪠FreeBSD çšã®ãããã¯ãã©ãã
ã«èœã¡ãŠãªãã§ããããããããåœããšãFreeBSD ã®ãŠãŒã¶ã¯ãå®
å¿ã㊠DeleGate ã䜿ããããã«ãªããŸãã
ã¹ã¿ãã¯ã®å®è¡çŠæ¢ã¯ãããããšããããã¯ããããããã©ã«ããš
ããã®ããä»ã®äžã®äžã«ãã£ãŠãããã§ããããã
In article <8vbdne$56a$1...@news01bf.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> é
åã®æ¯åã¬ã³ãžãã§ãã¯ã®ãããªããšã
> å¿
èŠãªãšãã¯ãããããé¢æ°ãäœãã°ãããã
> å¿
èŠã§ãªããšãã«ãäœèšãªã³ã¹ããç¯çŽã§ãããã
> ãã®ææ³ã ãšç§ã¯æã£ãŠããŸãããã
> ãã®ç¹ãä»ã®èšèªã«å¯ŸãããŠã€ãŒã¯ãã€ã³ããšã¯æããŠããŸããã
ã©ã³ã¿ã€ã æã«è¡ããäºåã«è¡ããã®éãã¯ãã, range check ã¯å¿
é ãªã¯ã
ã§ããã (å
¥åã MAX ã«æºããªããšããæ¡ä»¶ãåºçŸ©ã® range check ã§ããã).
> void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max, jmp_buf jb)
> {
> if( i < 0 || max <= i ) longjmp(jb, 1);
> *(p + i) = a;
> }
ç§ã¯ããããã³ãŒãã¯èŠéããæªããªãã®ã§ããŸã奜ããããªãã§ã. ãããš
ãããé¢æ°ã®çŽåã§ãã¯ããå®çŸ©ããŠ, 䜿ãçµãã£ãããã£ããš undef ãã
ããª.
> ããã foo_val ã [0] 㧠bar_val ã [1] ãšããæç¹ã§
> ãŸãèŠçŽ çªå·ã®ãããããã«ã€ãªãããŸãããïŒ
#ifdef vdef
vdef (foo_val)
vdef (bar_val)
vdef (baz_val)
#else
enum {
#define vdef(x) e_ ## x,
#include __FILE__
#undef vdef
e_NVALS
};
const char * const names[] = {
#define vdef(x) # x,
#include __FILE__
#undef vdef
};
value_t vals[elements_of (names)];
evaluate (vals[e_foo_val]);
#endif /* vdef */
ãŸã enum ã䜿ããªã e_NVALS ã䜿ãããŸããã©.
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> ã»ãã¥ãªãã£ãšããã®ã¯ãïŒïŒïŒïŒ
ã«è¿ã¥ããããšãããšæ¥æ¿ã«ã³
> ã¹ããããããŸããæå·ãïŒïŒïŒïŒ
解ããªããšããã®ã¯ãçæ§ä¹±æ°
>ã䜿ããã®ãããªããŠãä»ã®ãã®ã¯è§£ããŸããå®å
šæ§ã¯ãçµå±ãæ»
> æãšã解èªã«èŠããã³ã¹ãã倧ããããããšã§ãæ»æã解èªããåŸ
> ãããå©çãçžå¯Ÿçã«å°ããããããšãã話ã§ãã
ãïœããä»åã® DeleGate ã®è©±ã«éã£ãŠèšãã°ããããŸã§ã¡ã¿ãªè©±ãŸ
ã§é¡ãå¿
èŠã¯ãªãã®ã§ã¯...ãå±éºæ§ã®å€ãã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã
å€ããã«ç¶ããŠãããšããå®æ
ã«åå ãããããã§ãããã
> ãå€ãã®å Žåããã¯ã©ãã·ã¥ãããšæžããŸãããããããã©ãããŠ
> ïŒïŒïŒïŒ
ã§ã¯ãªãããšãããšãä¹±æ°ã䜿ã£ãŠããããã§ãã
> DeleGate ã¯ãã¹ã¿ãã¯ã®åºãä¹±æ°ã§å€ããŠããŸãã
ãªãã»ã©ããã®ãããªã³ãŒãã£ã³ã°ã§ãå®å
šã ããšããæ ¹æ ã¯çµå±ã
ã¯ã randstack, randenv, randfd ã«ããããšããããšãªãã§ãããã
randstack ã®ããšã¯æ¢ã«ç§ãåã«æžããèšäº
<8ui6ss$18t1$1...@sranhh.sra.co.jp> ã§ã觊ããŠãŸãããç§ãçåãªã®
ã¯ãrandstack ãããã°æ¬åœã«ã¹ã¿ãã¯äžã®ã³ãŒããå®è¡ãããå±éº
ã¯ãªãã®ã?ããšããããšã§ãã
ããã§ç§ãèšã£ãŠããã®ã¯ããã©ã³ãã ã ããââåã«äžåã¯å¶ç¶åœ
ããããšããããšã§ã¯ãªããŠããã£ãšé«ã確çã§åœãŠãããšã¯äžå¯èœ
ãªã®ãããšããããšãªãã§ãããã©ããªãã§ãããã
æ°åããã¯éçºè ãä¿¡ããŠããããšããããšãªãã§ãããã
> 念ã®ããã«ä»ãå ããŠãããšãDeleGate ã¯ããã®æ©èœã«äŸåããŠ
> ãããã¡ã»ãªãŒããŒã©ã³å¯ŸçãææãããŠããããã§ã¯ãããŸããã
> ãããã¡ã»ãªãŒããŒã©ã³å¯Ÿçã¯ã人éæã§ãã£ãŠããŠãä»ãŸã§äººé
> æã§èŠã€ãã£ããã®ã¯ãå
šéšæœ°ãããŠãããšããããšã§ããã人é
ãã®ã³ãŒãã£ã³ã°ã¯ãã»ãã¥ãªãã£ã ãã§ãªãå質ãç ç²ã«ããŠæžã
蟌ã¿å
ã®é åã®é·ãã®ãã§ãã¯ãããŒã£ãŠããããã§ãããããã£ã±
ããææããã ãšæããŸãã(人ã®ã³ãŒãããããŸã§ããããªèšãã®
ã¯å¿ã³ãªããã§ããã©ã)
> > DeleGate ã«é¢ãã FreeBSD SA ã®çºè¡ã®çµç·¯ã«äžæºãããã®ã¯åãã
> > ãŸããã"with potentially dozens of different exploitable buffer
> > overflows" ãšããéšåã®èšè¿°ã¯ãäŸç¶ãšããŠäºå®ã§ãã
>
> ã¯ããããã§ãã
: (äžç¥)
> ã¯ãããã€ããªã»ããã±ãŒãžãé
åžããªããšããã®ã¯ãSA ãåºãŠ
> ãåºãªããŠããããšããšãããªãæ¹ãããããšã ãšæããŸããå®éã
ãå±éºã ãããã€ããªã®é
åžã¯ããªãæ¹ãè¯ãããšããããšã§ãã?
ã§ãæ°åããã¯ãå±éºæ§ã«é¢ããŠã¯åŠå®ãããŠããããã§ãããã
ããã€ããªã®é
åžã¯ããªãã»ããè¯ãããšããã®ã¯ããå±éºã ãã䜿
ããªãæ¹ãè¯ãããšããã®ãšã¯éããã§ããããã(?_?)
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
ããã€ããªã®é
åžãã¯ãå€ãããŒãžã§ã³ã䜿ããç¶ããå¯èœæ§ãé«ã
ãšããç¹ãå±æ§ããŠãããã§ã¯ãªãããšãç§ã¯æããŸããã
ããã ããã
In article <86itpgt...@pooh.isoternet.org>
Takuya ASADA <as...@pooh.isoternet.org> writes:
åäžã®ãœãŒã¹ã³ãŒãã ãããšãã£ãŠåäžã®ãã€ããªãçæããããšã¯éããªã,
ã€ãŸãã³ã³ãã€ã©ãªãã·ã§ã³ãªã©ã«ãã£ãŠå®è¡æã®ã¹ã¿ãã¯ãã¬ãŒã ãç°ãªã
å Žåãããã®ã«, ãã€ããªé
åžã¯ãã®æ©äŒãç¡ãããŠãããšããããšã§ã¯ãªã
ã§ãããã. ã¯ã©ãã«ãŒããã€ããªé
åžãã¿ãŒã²ããã«ãããªã, ãã®é
åžç
ã®ç©Žãæ¢ãã°ããããã§.
> ã©ã³ã¿ã€ã æã«è¡ããäºåã«è¡ããã®éãã¯ãã, range check ã¯å¿
é ãªã¯ã
> ã§ããã (å
¥åã MAX ã«æºããªããšããæ¡ä»¶ãåºçŸ©ã® range check ã§ããã).
ãã®ç¹ã«ç°è°ã¯ãªãã§ãããæ¯åãšããã®ãåŒã£ããããã§ãã
å
·äœçã«ãæ¯åããšã¯ã©ãªããä»°ã£ãŠããªãããã§ããã
ãä»ã®èšèªãããããå«æããŠãããšæããã®ã§ãã
> > void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max, jmp_buf jb)
> > {
> > if( i < 0 || max <= i ) longjmp(jb, 1);
> > *(p + i) = a;
> > }
>
> ç§ã¯ããããã³ãŒãã¯èŠéããæªããªãã®ã§ããŸã奜ããããªãã§ã. ãããš
> ãããé¢æ°ã®çŽåã§ãã¯ããå®çŸ©ããŠ, 䜿ãçµãã£ãããã£ããš undef ãã
> ããª.
ãä»ã®èšèªã§ã¯ããšãããã«èšã人ãã¡ã£ãŠã
èšèªåŽã§ã®ã¬ã³ãžãã§ãã¯ããããšç䟡ã³ãŒãã«ãªã£ãŠããããšã
ããã£ãŠèšã£ãŠãããã§ãããããã
ã§ãsubscript out of rangeããšè¡šç€ºããã³ãŒããèªåã§çšæãããšèšããã
_iob ã䜿ããç°å¢ãã¡ãã»ãŒãžããã¹ãã®èªã¿æã®ã¹ãã«ã決ããã¡ãã
ã³ãŒããèªåã§æžããããã«åãã§ããã£ãšäœãã«æ°ãã€ãããããããã§
ãããã ããã¯ããšè±ç·ãå§ããïŒïŒïŒ
ãä»ã®èšèªãã£ãŠãã¬ã³ãžãã§ãã¯ã«ãšããããã«ãæ¬çã®åŠçã
ãããªãæžããããæ°æã¡ããããããªãã£ããã§ãããã
ãã®ããã® longjmp ã£ãŠããããªã«èŠéããæªããããã§ããããã
> #ifdef vdef
> vdef (foo_val)
> vdef (bar_val)
> vdef (baz_val)
> #else
>
> enum {
> #define vdef(x) e_ ## x,
> #include __FILE__
> #undef vdef
> e_NVALS
> };
>
> const char * const names[] = {
> #define vdef(x) # x,
> #include __FILE__
> #undef vdef
> };
>
> value_t vals[elements_of (names)];
>
> evaluate (vals[e_foo_val]);
>
> #endif /* vdef */
>
> ãŸã enum ã䜿ããªã e_NVALS ã䜿ãããŸããã©.
ããã匷çã #include ã®ååž°ã§ããã
ç§ã ã£ããæ§é äœã§ããããäœãããªã
#define E(x) { #x, &x ## _ram, x ## _func },
é
åã®ä»ã«ãªã¹ããæšãšããæãããåçãªç®¡çã«ãå¿çšãå©ããŸããã
enum 㧠switch - case ãã代ããã«é¢æ°ãã€ã³ã¿ã«ããŠããã°
ãšã³ããªãè¿œå ïŒåé€ãããšãã®ããžãã¯å€æŽãäžèŠã§ãã
ãããããããªå Žé¢ã§ã¯ elements_of ãããããã§ããã
struct Q
{
char *buff;
ptrdiff_t max, read, write;
};
char rbuff[1024], sbuff[256];
struct Q rQ = { rbuff, elements_of(rbuff) };
struct Q sQ = { sbuff, elements_of(sbuff) };
ãã€ã³ã¿ã§ããããéžæããããŸããã©ã
struct Q
{
char *begin, *end;
char *read, *write;
};
char rbuff[1024], sbuff[256];
struct Q rQ = { rbuff, *(&rbuff + 1), rbuff, rbuff };
struct Q sQ = { sbuff, *(&sbuff + 1), sbuff, sbuff };
埪ç°ã«ãŠã³ãã®é¢æ°ãå¿çšãããªããªããŸãããã
ptrdiff_t CyclicCount(ptrdiff_t i, ptrdiff_t max);
> ãä»ã®èšèªã§ã¯ããšãããã«èšã人ãã¡ã£ãŠã
> èšèªåŽã§ã®ã¬ã³ãžãã§ãã¯ããããšç䟡ã³ãŒãã«ãªã£ãŠããããšã
> ããã£ãŠèšã£ãŠãããã§ãããããã
ç䟡ã«ã¯ãªããªãã§ããããã³ã³ãã€ã©ãrange checkãç解ããŠãã°ããã
ãªãã®æé©åãã§ããŸãã(ã«ãŒãã®å
¥ãå£ã§1åã ããšãã) ãŸããã¢ã¯ã»ã¹
ã®ãã³ã«é¢æ°åŒã³åºããèµ·ããããããŸããã(Cã«ã¯inline é¢æ°ç¡ãããã
ã¯ãããå°ãã...)
åç°æŠåž
> ç䟡ã«ã¯ãªããªãã§ããããã³ã³ãã€ã©ãrange checkãç解ããŠãã°ããã
> ãªãã®æé©åãã§ããŸãã(ã«ãŒãã®å
¥ãå£ã§1åã ããšãã)
äŸãã°æ¬¡ã®ãããªã¢ãžã¥ãŒã«ãä»èšèªã§æžããå Žåã
å¿
èŠã§ãªããã§ãã¯ãã³ã³ãã€ã©ã¯ã©ã®ããã«èŠã€ããã®ã§ããã
ptrdiff_t CyclicCount(ptrdiff_t i, ptrdiff_t max)
{
if(++i == max)
{
i = 0;
}
return i;
}
struct Q
{
char *buff;
ptrdiff_t max, read, write;
};
void WriteQ(struct Q *p, char data)
{
p->buff[p->write] = data;
p->write = CyclicCount(p->write, p->max);
}
é
åã®ã¬ã³ãžã»ãã§ãã¯ã¯å±æçãªæé©åã§ã¯
æ±ããªãçš®é¡ã®åé¡ã ãšç§ã¯æã£ãŠããŸãã
# äœãããšããŠããã¢ããªã±ãŒã·ã§ã³å
šäœãç解ãã
# ã³ã³ãã€ã©ã§ãããã°å¥ã§ããããã©ã
# ãããããã£ã¡ãã¯ãã«ãªã£ãŠããŸã
> ãŸããã¢ã¯ã»ã¹
> ã®ãã³ã«é¢æ°åŒã³åºããèµ·ããããããŸããã(Cã«ã¯inline é¢æ°ç¡ãããã
> ã¯ãããå°ãã...)
æé©åãæã¡åºããªããinline ã¯ïŒ£ã«ãããããã§ããã
> > ç䟡ã«ã¯ãªããªãã§ããããã³ã³ãã€ã©ãrange checkãç解ããŠãã°ããã
> > ãªãã®æé©åãã§ããŸãã(ã«ãŒãã®å
¥ãå£ã§1åã ããšãã)
>
> äŸãã°æ¬¡ã®ãããªã¢ãžã¥ãŒã«ãä»èšèªã§æžããå Žåã
> å¿
èŠã§ãªããã§ãã¯ãã³ã³ãã€ã©ã¯ã©ã®ããã«èŠã€ããã®ã§ããã
åžžã«æé©åã§ããããã§ã¯ãããŸããããããªãã«ã¯ã§ããŸããç䟡ã§ã¯ãã
ãŸããã
> > ãŸããã¢ã¯ã»ã¹
> > ã®ãã³ã«é¢æ°åŒã³åºããèµ·ããããããŸããã(Cã«ã¯inline é¢æ°ç¡ãããã
> > ã¯ãããå°ãã...)
>
> æé©åãæã¡åºããªããinline ã¯ïŒ£ã«ãããããã§ããã
ã¢ãžã¥ãŒã«åããããããŠinlineå±éã§ããå Žåãããã§ãããããä»ã®èšèª
ã®ããã«åžžã«inlineã§ãã§ãã¯ãããããã§ã¯ãªãã§ããããç䟡ã§ã¯ãããŸ
ããã
åç°æŠåž
ç§ããå¢çãè¶ããŠã¢ã¯ã»ã¹ãããããªäŸå€ãåŠçå¯èœãªèšèªã«ã¯æµããªãã
ãšããã®ã¯ãã®å³å¯æ§ã«ãããŠã§ã. ããšãã°
In article <8vhj54$aif$1...@news01df.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> > > void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max, jmp_buf jb)
ããã«ããŠãäºã€ãã®ãã©ã¡ãŒã¿ã®å
¥åãæ¯åããã°ã©ãã«èŠæ±ããããã§ã.
æžããªããŠæžããªãããã ã誀ãåæãæžãããã§, ããã«è¶ããããšã¯ãªã
ãšæããŸã.
> ãä»ã®èšèªã§ã¯ããšãããã«èšã人ãã¡ã£ãŠã
> èšèªåŽã§ã®ã¬ã³ãžãã§ãã¯ããããšç䟡ã³ãŒãã«ãªã£ãŠããããšã
> ããã£ãŠèšã£ãŠãããã§ãããããã
ãšããããã§ç䟡ã ãšã¯æããŸãã.
# ããããèšèªãšåãããšãããããšãããšå¹çã¬ã¿èœã¡ãªã®ãã¯ã£ãããã
# ãäŸã§ãã.
> ãä»ã®èšèªãã£ãŠãã¬ã³ãžãã§ãã¯ã«ãšããããã«ãæ¬çã®åŠçã
> ãããªãæžããããæ°æã¡ããããããªãã£ããã§ãããã
ããããããšæããŸã.
> ãã®ããã® longjmp ã£ãŠããããªã«èŠéããæªããããã§ããããã
å€å, 瀺ãããã³ãŒãã« setjmp ãèŠããªãã®ãç§ã«ããæãããŠããã®ã§ã¯
ãªãã§ãããã. 瀺ãããã³ãŒãã ãã§ãããçšããã¢ãžã¥ãŒã«ãæ£ããåäœ
ãããã¯äŸç¶ãšããŠäžæãªããã§.
åãèšèªã§ããã³ã³ãã€ã©ã®ããŒãžã§ã³ãéãã°
ãç䟡ãã§ã¯ãªããªããŸãããããæªãããããŸããã
ç§ã¯ãããªããšã§ã¯ãªãã
çµå±åãããšã ãšèšãããã£ãã®ã§ãã
ãããé
åã«å¯Ÿããäžå¿
èŠãªã¬ã³ãžãã§ãã¯ãèšèªåŽã§
èªååé¿ããå¹æçãªææ³ããåç¥ã§ããã
ãèããé¡ããŸããããïŒèªååé¿ããããã®æ¡ä»¶åå²ã
æ¯åã¬ã³ãžãã§ãã¯ãšå€§å·®ãªãã®ã¯ã ãã§ãïŒ
# ãããªã«å³çããªããŠã
# ïŒé±éããããå¹³æ°ã§åŸ
ã£ãŠãŸãã
> > > > void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max, jmp_buf
jb)
>
> ããã«ããŠãäºã€ãã®ãã©ã¡ãŒã¿ã®å
¥åãæ¯åããã°ã©ãã«èŠæ±ããããã§ã.
> æžããªããŠæžããªãããã ã誀ãåæãæžãããã§, ããã«è¶ããããšã¯ãªã
> ãšæããŸã.
ããã¯ç¢ºãã«ããç§ãããæããŸãã
ãã ãããã¯å³å¯æ§ãå®çŸã§ããïŒã§ããªããã§ã¯ãããŸããããã
ã§ããå¿
èŠãªããå®å
šãªé
åã·ã¹ãã ããæ§é äœãšé¢æ°çŸ€ã§äœããŸãã
ããã®å®å
šæ§ããã©ã®ãããã®ãã¹ããçµãŠãããã§ã»ãŒæ±ºãŸã
ãšããæå³ã§ã³ã³ãã€ã©èªäœãã€ã³ã¿ããªã¿èªäœãšçµå±ã¯åãã§ãããã
ã ããç§ã¯ããã®ç¹ãã®ãŠã€ãŒã¯ãã€ã³ããšã¯æããªãã®ã§ãã
ãã ãç§ãããŸãå®å
šãªé
åã·ã¹ãã ããäœãããšèšãããã
template ã¯æ¬²ãããªãããã§ãããããã¯ïŒ£ã«ã¯ãããŸãããã
ïŒãªããŠããã³ãºã©ããçšã§ããªãã§ããïŒ
> ãšããããã§ç䟡ã ãšã¯æããŸãã.
ä»ã®æ¹ã«ãã³ã¡ã³ãããŸããããã©ãããç䟡ããšããå®å
šãã®ãããª
è¡šçŸã *ããã§* 䜿ã£ãã®ãééãã ã£ãããã§ãã
ç§ã¯ãã€ããªã®ãããåäœã§ã®åäžæ§ãèšã£ãã®ã§ã¯ãªãã
é
åã«å¯Ÿããäžå¿
èŠãªã¬ã³ãžãã§ãã¯ãèšèªåŠçç³»ã
èªååé¿ã§ããå Žåã¯å°ãªããããšèšãããšããã ãã§ãã
> # ããããèšèªãšåãããšãããããšãããšå¹çã¬ã¿èœã¡ãªã®ãã¯ã£ãããã
> # ãäŸã§ãã.
ãã¿ãŸããããããããèšèªããšããéšåãããããŸããã
> > ãã®ããã® longjmp ã£ãŠããããªã«èŠéããæªããããã§ããããã
>
> å€å, 瀺ãããã³ãŒãã« setjmp ãèŠããªãã®ãç§ã«ããæãããŠããã®ã§ã¯
> ãªãã§ãããã. 瀺ãããã³ãŒãã ãã§ãããçšããã¢ãžã¥ãŒã«ãæ£ããåäœ
> ãããã¯äŸç¶ãšããŠäžæãªããã§.
ãã㯠<setjmp.h> ã«å¯Ÿããçµéšå€ã§ãããã
ã¡ãããšåãåã£ãŠã¿ããšæšãŠããã®ã§ããããŸãããã
In article <8vqgsn$eg9$1...@news01cg.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> ãã ãç§ãããŸãå®å
šãªé
åã·ã¹ãã ããäœãããšèšãããã
> template ã¯æ¬²ãããªãããã§ãããããã¯ïŒ£ã«ã¯ãããŸãããã
äœåŠãã§ãæžããŸããã, template 㯠ISO/IEC 9899:1999 ã§èŒžå
¥ããŠæ¬²ãã
æ©èœã®äžã€ã§ã¯ãããŸãã. 蟻è€ãããã倧å€ãããããŸãããã©.
> é
åã«å¯Ÿããäžå¿
èŠãªã¬ã³ãžãã§ãã¯ãèšèªåŠçç³»ã
> èªååé¿ã§ããå Žåã¯å°ãªããããšèšãããšããã ãã§ãã
人çºãã¹ãæãåŸããšããç¶æ
ãšç¡ããšããç¶æ
ã«ã¯å€§ããªéããããããšæ
ããŸã.
> > > void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max, jmp_buf jb)
ã«ã¯ããã°ã©ããæèããªããã°ãªããªãããäžã€ã®å€§ããªãã©ã¡ãŒã¿âåæ
å ±âããããŸãã, ãããåºæ¥ãã°æ©æ¢°ä»»ãã«ãããã§ãã.
話å€ãã£ãŠå¹ç. ãããã¡ãµã€ãºã 2^n ã§ãããšããæ
å ±ãéçã«åŸããã
ãªãã° cyclic ãããã¡ã€ã³ããã¯ã¹ã®æŽæ°ã¯åãªãè«çç©ã«ãªããŸããã.
ã€ãŸã idx ã®å€åã 0 ä»¥äž N (= 2^n) æªæºãªãã°
if (N <= ++idx)
idx = 0;
ã¯
idx = (++idx) & N-1;
ãšãªããŸãã, range check ã
if (idx & ~(N-1))
...;
ãšãªããŸãã (ãããã¡ãµã€ãºã 2^n ãšã㊠#define ããå Žåãå€ãã®ã¯ã
ããçã£ãŠããããã ãšæããŸã), C 㧠æ±çšçã«æžããŠããŸããš (open ãª
ã©ã®åŒæ°ã§ãããã¡ãµã€ãºãäžããããã«ãããš) ãããäžå¯èœã«ãªããŸã.
欲ããã§ããã, template :-)
> > # ããããèšèªãšåãããšãããããšãããšå¹çã¬ã¿èœã¡ãªã®ãã¯ã£ãããã
> > # ãäŸã§ãã.
>
> ãã¿ãŸããããããããèšèªããšããéšåãããããŸããã
ç§ã®é ã®äžã«ã¯å
·äœçã«ã¯ C++, æœè±¡çã«ã¯æ€èšŒè«çãªæžãæ¹ã®åºæ¥ãèšèªã
ãããŸã (åŸè
ã¯åè
ã䜿ã£ãŠããçšåºŠæ§ç¯å¯èœããç¥ããªã).
C++ ã«ã€ããŠå®ã¯å®è£
ã«æãããªãã®ã§ããã©, jmp_buf ãæ·»åæŽæ°ã®åºŠã«ã¹
ã¿ãã¯ã«ç©ããããªããšã«ã¯ãªããªãã®ã§ã¯ãªãã§ãããã (å°ãªããšããã
ãé¿ããã³ãŒãã£ã³ã°ã¯å¯èœãªã®ã§ã¯).
> > å€å, 瀺ãããã³ãŒãã« setjmp ãèŠããªãã®ãç§ã«ããæãããŠããã®ã§ã¯
> > ãªãã§ãããã. 瀺ãããã³ãŒãã ãã§ãããçšããã¢ãžã¥ãŒã«ãæ£ããåäœ
> > ãããã¯äŸç¶ãšããŠäžæãªããã§.
>
> ãã㯠<setjmp.h> ã«å¯Ÿããçµéšå€ã§ãããã
> ã¡ãããšåãåã£ãŠã¿ããšæšãŠããã®ã§ããããŸãããã
setjmp/longjmp ã¯ä»ã®ä»äºã§ã䜿ã£ãŠããŸã.
# goto ããããªãã«äœ¿ããŸã :-)
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> ç§ã¯ãããªããšã§ã¯ãªãã
> çµå±åãããšã ãšèšãããã£ãã®ã§ãã
ãçµå±åããã§ã¯ãªãã§ãã
> ãããé
åã«å¯Ÿããäžå¿
èŠãªã¬ã³ãžãã§ãã¯ãèšèªåŽã§
> èªååé¿ããå¹æçãªææ³ããåç¥ã§ããã
> ãèããé¡ããŸããããïŒèªååé¿ããããã®æ¡ä»¶åå²ã
> æ¯åã¬ã³ãžãã§ãã¯ãšå€§å·®ãªãã®ã¯ã ãã§ãïŒ
以äžã®ãããªåçŽãªäŸãèããŸãã
void foo(char a[], int b, int c)
{
int i;
for (i = b; i < c; i++) {
a[i] = 0;
}
}
ã§ãé
åã®range checkãããJavaã®ãããªèšèªã§ã¯ãã³ã³ãã€ã©ãrange
checkãç¹å¥æ±ãããã®ã§ããã§ãã¯ãã«ãŒãã®å€ã«è¿œãåºãããšãã§ããŸãã
(Javaã®å Žåãäžã§ã¯ 0 <= b ãš c <= a.length ããã§ãã¯ããã°è¯ãã)
ãŸããäžã®ã³ã³ãã€ã«æã«åŒã³åºãå
ãããã£ãŠãããããªãšãã«ã¯ãrange
checkãã³ã³ãã€ã«æã«ãã¹ãŠæžãŸããŠããŸããå Žåãããã§ãããã
Cã®é¢æ°ããã¯ãã§ã¯ããã¯è¡ããŸããã
äžã®ãããã«ã
typedef struct {
char *body;
size_t length;
} array_t;
void foo(array_t *a, int b, int c)
{
int i;
for (i = b; i < c; i++) {
CharKaku(a->body, i, 0, a->length, error);
}
}
ãšæžãããšããŸãã
induction variableãäžçåŒã«é¢ããè¶
匷åãªæšè«æ©èœããã€Cã®ã³ã³ãã€ã©
ãä»®ã«ãã£ããšããŠ(å®éã«ã¯é£ãããšæããŸãã)ã
CharKakuã®ãã§ãã¯
if( i < 0 || max <= i ) longjmp(jb, 1);
ãã«ãŒãã®åã«è¿œãåºããŠã
if (b < 0) longjmp(error, 1);
if (a->length <= c - 1) longjmp(error, 1);
ãšãããšãããšããšã©ãŒæã«longjmpãåŒã°ããã¿ã€ãã³ã°(åŒã°ãããšãã®i
ã®å€ãé
åã®å
容)ãå€ã£ãŠããŸããŸãããããã®ãããªæé©åã¯èš±ãããŸã
ããã€ãŸãCã§ããå¿
èŠãªæ©èœã¯ãŠãŒã¶ãäœããããšããã¢ãããŒãã§ã¯ã
range checkæ©èœãå
ã
æã€èšèªããå¹çãæªããªããŸãã
é åã®range checkã®æé©åã«ã€ããŠã¯ã
V. Markstein, J. Cocke, and P. Markstein.
Optimization of range checking.
Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
114-119, June 1982.
R. Gupta.
A fresh look at optimizing array bound checking.
Proceedings of the ACM SIGPLAN '90
Conference on Programming Language Design and Implementation, 272-282,
June, 1990.
Priyadarshan Kolte and Michael Wolfe.
Elimination of redundant array subscript range checks.
Proceedings of the ACM SIGPLAN '95 Conference on Programming Language
Design and Implementation, 270-278, June 1995.
ãšããã芧ãã ããã
åç°æŠåž
> ç§ã¯ãããªããšã§ã¯ãªãã
> çµå±åãããšã ãšèšãããã£ãã®ã§ãã
ãçµå±åããã§ã¯ãªããã§ãã
> ãããé
åã«å¯Ÿããäžå¿
èŠãªã¬ã³ãžãã§ãã¯ãèšèªåŽã§
> èªååé¿ããå¹æçãªææ³ããåç¥ã§ããã
> ãèããé¡ããŸããããïŒèªååé¿ããããã®æ¡ä»¶åå²ã
> æ¯åã¬ã³ãžãã§ãã¯ãšå€§å·®ãªãã®ã¯ã ãã§ãïŒ
以äžã®ãããªåçŽãªäŸãèããŸãã
void foo(char a[], int b, int c)
{
int i;
for (i = b; i < c; i++) {
a[i] = 0;
}
}
ã§ãé
åã®range checkãããPascal, Ada, Javaã®ãããªèšèªã§ã¯ãã³ã³ãã€
ã©ãrange checkãç¹å¥æ±ãããã®ã§ããã§ãã¯ãã«ãŒãã®å€ã«è¿œãåºãããš
ãã§ããŸãã(Javaã®å Žåãäžã§ã¯ 0 <= b ãš c <= a.length ããã§ãã¯ãã
ã°è¯ãã) ãŸããäžã®ã³ã³ãã€ã«æã«åŒã³åºãå
ãããã£ãŠãããããªãšãã«
ã¯ãrange checkãã³ã³ãã€ã«æã«ãã¹ãŠæžãŸããŠããŸããå Žåãããã§ãã
ãã
Cã®é¢æ°ããã¯ãã§ã¯ããã¯è¡ããŸãããäžã®ãããã«Cã§ã
typedef struct {
char *body;
size_t length;
} array_t;
jmp_buf error;
void foo(array_t *a, int b, int c)
{
int i;
for (i = b; i < c; i++) {
CharKaku(a->body, i, 0, a->length, error);
}
}
ãšæžãããšããŸãã
induction variableãäžçåŒã«é¢ããè¶
匷åãªæšè«æ©èœããã€Cã®ã³ã³ãã€ã©
ãããšãä»®ã«ãã£ããšããŠããCharKakuã®ãã§ãã¯
if( i < 0 || max <= i ) longjmp(jb, 1);
ãã«ãŒãã®åã«è¿œãåºããŠã
if (b < 0) longjmp(error, 1);
if (a->length <= c - 1) longjmp(error, 1);
ãšããããšã¯ã§ããŸããã
ãšã©ãŒæã«longjmpãåŒã°ããã¿ã€ãã³ã°(åŒã°ãããšãã®i ã®å€ãé
åã®å
容)
ãå€ã£ãŠããŸããŸãããããã®ãããªæé©åã¯èš±ãããŸããã
ãŸããã³ã³ãã€ã«æã«range errorãèŠã€ããããšãã§ããªãã§ããã(ã³ã³ã
ã€ã«æã«longjmpãåŒã³åºãããã«ããããªãã§ããããã)ã
çµå±ã®ãšãããCharKakuãã«ãŒãã®äžã«æžããšãã«ãŒãã®äžã§æ¯åãã§ãã¯ã
ãã³ãŒããåºããããåŸãªããšæããŸãã
###
åžžã«ãã§ãã¯ããCharKakuã«å ããŠããã«ãŒãçšã«äžäžéã ããã§ãã¯ããã
ã¯ãããšããçšæããã«ãŒãæ¬äœã§ã¯ãã§ãã¯ãªãã®é
åã¢ã¯ã»ã¹ããããã
ã«ããã°ãJavaãªã©ãšåçã®å¹çãåŸãããŸãããããã¯(ééãã®å±éºãå¢ã
ããšãå¥ãšããŠã)CharKakuãšãç䟡ããšã¯ãšãŠãåŒã¹ãªããšæããŸãã
###
é åã®range checkã®æé©åã«ã€ããŠã¯ã
V. Markstein, J. Cocke, and P. Markstein.
Optimization of range checking.
Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
114-119, June 1982.
R. Gupta.
A fresh look at optimizing array bound checking.
Proceedings of the ACM SIGPLAN '90
Conference on Programming Language Design and Implementation, 272-282,
June, 1990.
Priyadarshan Kolte and Michael Wolfe.
Elimination of redundant array subscript range checks.
Proceedings of the ACM SIGPLAN '95 Conference on Programming Language
Design and Implementation, 270-278, June 1995.
ãšããã芧ãã ãããäžã®ãããªåçŽãªå Žå以å€ã®æé©åãåºãŠããŸãã
åç°æŠåž
ãã€ããªé åžã§ããã
In article <8vfb2d$2rqf$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ç¬ åã§ããããã«ã¡ã¯ã
>> ã¯ãããã€ããªã»ããã±ãŒãžãé
åžããªããšããã®ã¯ãSA ãåºãŠ
>> ãåºãªããŠããããšããšãããªãæ¹ãããããšã ãšæããŸããå®éã
> ãå±éºã ãããã€ããªã®é
åžã¯ããªãæ¹ãè¯ãããšããããšã§ãã?
> ã§ãæ°åããã¯ãå±éºæ§ã«é¢ããŠã¯åŠå®ãããŠããããã§ãããã
> ããã€ããªã®é
åžã¯ããªãã»ããè¯ãããšããã®ã¯ããå±éºã ãã䜿
> ããªãæ¹ãè¯ãããšããã®ãšã¯éããã§ããããã(?_?)
ãã€ããªé
åžããªãæ¹ãè¯ããäžçªéèŠãªçç±ã¯ããã€ããªé
åžã
ãŠããŸããšãã©ãããŠãå€ããªã£ãŠããŸããã€ãŸããå€ããã°ãä¿®
æ£ãããªããŸãŸæ®ã£ãŠãããšããããšããããšããããšã§ãã
DeleGate ã§ã sendmail ã§ã apache ã§ãäœã§ãããã§ãããå€
ãããŒãžã§ã³ã®ç©ã®äžã«ã¯ãå®éã«ãã°ãåšãããšãã¯ã£ããåãã£
ãŠãããã®ããããŸããææ°ã®ãã®ã«ããã°ã¯ããã§ãããããå€
ããã®ã¯æœ°ãããŠããŸããå€ããã°ãçªããããªæ»æã¯ãææ°ã®ã
ã®ã«ã¯éçšããŸããã
DeleGate ã¯ãæ¯æ¥ã®ããã«æŽæ°ãããŠããŸãããã°ãå ±åãããšã
ã»ãã¥ãªãã£é¢ã§éèŠãªãã®ãªããå³åº§ã«æŽæ°ãããŸãããã¡ããã
æ¯æ¥è¿œã£æãããªããšãããªããšããããã§ã¯ãªããŠãèªåã䜿ã£
ãŠããæ©èœã®äžã§ãéèŠãããªãã°ã»ãã£ãã¯ã¹ãåºãæã«æŽæ°ã
ãã°ããããã§ããæ
å ±åéã«ã¯ãã¡ãŒãªã³ã°ã»ãªã¹ãã«å
¥ãã®ã
æ®éã§ãã
In article <86itpgt...@pooh.isoternet.org>
Takuya ASADA <as...@pooh.isoternet.org> writes:
> ããã€ããªã®é
åžãã¯ãå€ãããŒãžã§ã³ã䜿ããç¶ããå¯èœæ§ãé«ã
> ãšããç¹ãå±æ§ããŠãããã§ã¯ãªãããšãç§ã¯æããŸããã
> ããã ããã
ã¯ããããã«ããã€ããªé
åžãç¹ã« CD-ROM ã ãšããã°ã朰ãããš
ããæ
å ±ãäŒãããªããšããããšããããŸãã
ãã€ããªé
åžã®å©çšè
ã¯ããã€ããªãã³ããŒããŠçµãã§ãã¡ãŒãªã³
ã°ã»ãªã¹ãããã£ãŠãããªããªãå
¥ãããšã¯ããªãã§ãããããã€
ããªé
åžçšã®ãã€ããªãã³ã³ãã€ã«ãã人ã¯ãèªåãäœã£ããã€ã
ãªã«é倧ãªåé¡ãèŠã€ãã£ãæããã€ããªãã³ããŒããŠãã£ã人ã«
é£çµ¡ãã矩åããããšæããŸãããããå®éã«ã¯ããããã矩åã
æããã人ã¯ããããªã«ã¯å€ãã¯ãªããšæããŸããSun
Microsystems ãšã BSDI ãšã Red Hat ãšãã£ãäŒç€Ÿã¯ãã§ããã§
ãããããå人ã®ãã©ã³ãã£ã¢ã»ããŒã¹ã§ã¯ãé£ããã§ãããããš
ãªããšã矩åãæãããªã以äžãããã€ããªé
åžãããªãããšãã
ã®ã責任ã®ããè¡åã ãšæããŸãã
ããšãDeleGate åºæã®è©±ãšããŠã¯ããã€ããªé
åžã ãšç®¡çè
ã®ã¡ãŒ
ã«ã»ã¢ãã¬ã¹ãæ£ããèšå®ãããªãå±éºãé«ããšããããšãããŸãã
DeleGate ã¯ãã³ã³ãã€ã«æã«ç®¡çè
ã®ã¡ãŒã«ã»ã¢ãã¬ã¹ãæå®ã
ãå¿
èŠãããã®ã§ãããããã¯æå³çã§ããåã®èšäºã«æžãããã
ã«ãDeleGate ã¯å€éšããã®æ»æãæ€ç¥ãããšç®¡çè
ã«é£çµ¡ã®é»å
ã¡ãŒã«ãéãããã«ãªã£ãŠããŸãã管çè
ããã®ã¡ãŒã«ãèªãããš
ã¯ãDeleGate ã®éçšäžäžå¯æ¬ ã§ãã
ãšãããããã€ããªé
åžã ãšã管çè
ã®ã¢ãã¬ã¹ã¯ãŠãããŒãµã«ãª
ãã®ã«ãªããŸããroot ãšã webmaster ãšãããã€ããªãã€ã³ã¹ããŒ
ã«ããŠäœ¿ã人ããããã¥ã¡ã³ããèªãŸãã«é©åœã«å
¥ãããšã管çè
ã®ã¡ãŒã«ã»ã¢ãã¬ã¹ãå¿
èŠã ãšã¯æ°ãä»ããªããããããŸãããã
ã¡ãããDeleGate ã®ããã¥ã¡ã³ãã«ã¯ããã€ããªé
åžã® DeleGate
ã䜿ãæã«ã©ããªã¢ãã¬ã¹ãèšå®ããã°ãããã¯æžãããŠããŸããã
ãšããããšã¯ããã€ããªé
åžçšã®ãã€ããªãã³ã³ãã€ã«ãã人ã¯ã
å¥éããã¥ã¡ã³ããæŽåããªããšãããªãããã§ããããããããã¥
ã¡ã³ãã®æŽåã¯ãã³ã³ãã€ã«æã«ïŒåããã°ãããšããæå³ã§ã¯ã
ã°ã®éç¥ããã¯ç°¡åã§ãããæéãæããã®ã§ãã
ãšããããã§ãDeleGate ã¯ãããæãããã€ããªé
åžã«å¯ŸæããŠã
管çè
ã®ã¡ãŒã«ã»ã¢ãã¬ã¹ãèµ·åæã«ãå¿
ãæå®ããªããšãããªã
ããã«ãªã£ãã®ã§ãããäœè
ã¯ããã®èŸºãã®äººéã®æ§è³ªãããã£ãŠ
ããŸãããã€ããªé
åžãçŠæ¢ããŠããã人ã¯åºãŠããããããã¥ã¡
ã³ããèªãŸãªãã§å®è¡ãã人ãåºãŠããããã§ãã
FreeBSD ã®ãã€ããªã§ãDeleGate ã®ç®¡çè
ã¯ã©ããªã£ãŠããã§ãã
ããïŒãããã«é¢ããããã¥ã¡ã³ãã¯ãã©ãã«ãããŸããïŒ
In article <8vfb2d$2rqf$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ç¬ åã§ããããã«ã¡ã¯ã
> æ°åããã¯éçºè
ãä¿¡ããŠããããšããããšãªãã§ãããã
ãŸããããããããšã§ãããã®èŸºããããšãã°ãUnix ã®éçºè
ã®
äžäººãKen Thompsonã® ACM ãã¥ãŒãªã³ã°è³ã®èšå¿µè¬æŒã§ãããã
ãªè©±ãåºãŠããŸãããœãããŠã§ã¢ã®ä¿¡é Œæ§ã¯ãæåŸã¯äœã£ã人ãä¿¡
çšã§ããããšãã話ã«ãªããšã
http://www.acm.org/classics/sep95/
> > DeleGate ã¯ãã¹ã¿ãã¯ã®åºãä¹±æ°ã§å€ããŠããŸãã
> ãªãã»ã©ããã®ãããªã³ãŒãã£ã³ã°ã§ãå®å
šã ããšããæ ¹æ ã¯çµå±ã
> ã¯ã randstack, randenv, randfd ã«ããããšããããšãªãã§ãããã
ããããDeleGate ã¯ãã¹ã¿ãã¯ã®åºã®ã©ã³ãã åã§å®å
šæ§ãä¿ã£
ãŠããã®ã§ã¯ãããŸãããããã¯ãåã«è£å©çãªãã®ã§ããæªç¥ã®
ãã°ãæªæ¥ã®ãã°ã«å¯Ÿãããã®ã§ããDeleGate ã®å®å
šæ§ã¯ãã人
éæãã§ãã°ãèŠã€ããŠæœ°ããŠããããšã«ãã£ãŠããŸãã
> ãã®ã³ãŒãã£ã³ã°ã¯ãã»ãã¥ãªãã£ã ãã§ãªãå質ãç ç²ã«ããŠæžã
> 蟌ã¿å
ã®é åã®é·ãã®ãã§ãã¯ãããŒã£ãŠããããã§ãããããã£ã±
> ããææããã ãšæããŸãã(人ã®ã³ãŒãããããŸã§ããããªèšãã®
> ã¯å¿ã³ãªããã§ããã©ã)
DeleGate ã«ãå€ããã®æ»æã«ãããããæã«ã¯ãææãã¯ãããŸ
ãããããŒã«ã«ã® DeleGate ã®ç®¡çè
ãèµ·åæã«é·ãåŒæ°ãæå®ã
ãŠãããã¡ã»ãªãŒããŒãããŒãããããšã¯ãªãã ãããDeleGate
5.X ã§ã¯ named ã RFC ã§èŠå®ããã以äžã®é·ããã¹ãåãè¿ãã
ãšã¯ãªãã¯ãã (6.X ã§ã¯ä¿®æ£æž)ãšããéšåã§ããã§ãã¯ãããŠã
ãªãæã¯ãããŸãããã以å€ã®ãã®ã§ãæªããé éããã®æ»æã§é
ãããŠããæååãåããæã¯ããããã¡ã溢ããªãããã«äººéæ
ã§æ³šææ·±ãæžãããŠããŸããã³ã³ã¹ã¿ã³ããçã§æžãããŠããŠãã
ããã§ãã
å¥ã« #define ã䜿ã£ãŠããŠããã¹ã¿ãã¯ã»ãªãŒããŒãããŒã¯èµ·ã
ãæã«ã¯èµ·ããããã§ããå®æ°åãééãããçµãã§ããDeleGate
ã¯ãå®æ°ã®äœ¿ãæ¹ã¯äœè
ãäžäººã§äœã£ãŠããã®ã§ãäžè²«ãã䜿ãæ¹
ã«ãªã£ãŠããŸããã§ããããå®æ°ãçã§å
¥ã£ãŠããŠãã倧äžå€«ãªã
ã§ãã
人éæã§ã¯ãªããŠãå®å¿ããã«ã¯ãåã®èšäºã§ã¯ã¹ã¿ãã¯ãå®è¡çŠ
æ¢ã«ãããšãã話ãæžããŸããããã®ä»ã«ãã³ã³ãã€ã©ã®æã§ã¹ã¿ã
ã¯ã»ãªãŒããŒãããŒãæ€åºãããšããã®ããããŸãã
http://www.cse.ogi.edu/DISC/projects/immunix/StackGuard/
http://immunix.org/
StackGuard ã¯ãgcc ã«æãå
¥ããŠäœãããã³ã³ãã€ã©ã§ãã
StackGuard ã§ã³ã³ãã€ã«ããããã°ã©ã ãå®è¡ãããšãã¹ã¿ãã¯
ã®æ»ãçªå°ã®æã«ã«ããªã¢èªã眮ãããŸãããªã¿ãŒã³ããæã«ãã«
ããªã¢ãæ»ãã§ããã°ãã¹ã¿ãã¯ãå£ãããŠãããšå€æããŠã¯ã©ã
ã·ã¥ããŸãã
ïŒå¹Žã»ã©åãããªãç¹æ®ãªå Žåã«ããåé¡ã«ã¯ãªããªãã®ã§ããã
ãã® StackGuard ã«åé¡ãèŠã€ãããŸããããã®åé¡ã¯ãæ¢ã«æœ°ã
ããŠããŸããæ°ãã StackGuard ã«ãã®åé¡ã¯ãããŸããã
http://lwn.net/1999/1111/a/stackguard.html
ã©ããªæ»æã«åŒ±ãã£ãããšãããšããŸããã¹ã¿ãã¯äžã® ãã€ã³ã¿
å€æ°ãæžãæãããã®ãã€ã³ã¿ã®å
ã®ãªã¿ãŒã³ã»ã¢ãã¬ã¹ãæ»æã
ããšãããã®ã§ãããããªããšãïŒç¹ã ãå£ãããã®ã§ãã«ããªã¢
ãçããŠããŠãããªã¿ãŒã³ã»ã¢ãã¬ã¹ãå£ãããŠããå¯èœæ§ããã
ããã§ãã
StackGuard ã¯ãæ»ãçªå°ãä¹±æ°ã§æå·åãããšããæ¹æ³ã§è§£æ±ºã
ãŸãããåçŽãªæ»ãçªå°ãã¹ã¿ãã¯ã«ç©ãã®ã§ã¯ãªããŠãä¹±æ°ãš
XOR ãããã®ãç©ã¿ãŸããé¢æ°ããæ»ãæã«ã¯ãä¹±æ°ãš XOR ãã
ã¢ãã¬ã¹ã«æ»ããŸãã
ãšããããã§ãStackGuard 㧠DeleGate ãã³ã³ãã€ã«ããŠäœ¿ããš
ããã®ããã¹ã¿ãã¯ãå®è¡çŠæ¢ã«ããäºã®æ¬¡ã«ããæ¹æ³ã§ãã
In article <m3puji8...@maedapc.cc.tsukuba.ac.jp>
ma...@cc.tsukuba.ac.jp (MAEDA Atusi (åç°æŠåž)) writes:
> void foo(char a[], int b, int c)
> {
> int i;
> for (i = b; i < c; i++) {
> a[i] = 0;
> }
> }
> (Javaã®å Žåãäžã§ã¯ 0 <= b ãš c <= a.length ããã§ãã¯ããã°è¯ãã)
C ã ãšããŸãã¯, c <= bããå
¥ããŸããã. âé
åã®ârange check ã§ã¯ãªã
ã§ããã©.
> induction variableãäžçåŒã«é¢ããè¶
匷åãªæšè«æ©èœããã€Cã®ã³ã³ãã€ã©
> ãããšãä»®ã«ãã£ããšããŠã
ãã®ãããªæšè«æ©èœãæã€ã³ã³ãã€ã©ã«ã¯ã©ã®ãããªãã®ãããã®ã§ãããã
(C ã§ã, C ã§ãªããŠã). å
¥æã容æã§ããããæ¹é¢ã®è©±ãå匷ã§ããããªæ¬
ãšããããŸããã? æŽæžã§ãããã§ã.
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> ãã€ããªé
åžããªãæ¹ãè¯ããäžçªéèŠãªçç±ã¯ããã€ããªé
åžã
> ãŠããŸããšãã©ãããŠãå€ããªã£ãŠããŸããã€ãŸããå€ããã°ãä¿®
> æ£ãããªããŸãŸæ®ã£ãŠãããšããããšããããšããããšã§ãã
> DeleGate ã§ã sendmail ã§ã apache ã§ãäœã§ãããã§ãããå€
> ãããŒãžã§ã³ã®ç©ã®äžã«ã¯ãå®éã«ãã°ãåšãããšãã¯ã£ããåãã£
> ãŠãããã®ããããŸãã
ããããã«ããã㯠DeleGate ã«éã£ã話ã§ã¯ãªãããã§ããã
ãã ãçŸç¶ã§ã¯ Sendmail, Apache, BIND ãšãã£ããå€éšããã®æ»æ
ã«ãèããªããã°ãªããªããããªçšéã®ãœãããŠã§ã¢ãå«ããŠã
FreeBSD ã Linux ã® distribution ã®å€ãã§ãã€ããªãé
åžããããš
ãäžè¬çã«ãªã£ãŠããã®ã¯ãåãããšæããŸãã
ãã®çŸç¶ãèžãŸããäžã§ããã£ã±ãããã§ããã€ããªã®é
åžã¯æ¢ãã
ã»ããè¯ããã©ãããšããã®ã¯ãèå³æ·±ãè°è«ã§ã¯ãããšã¯æãã®ã§
ãããã¡ãã£ãšè©±ãåºããéããããã«æããŸãã
ãå°ãããŠãããŠç³ãèš³ãªããã§ãããç§ã¯ãããŸã§ã¯è°è«ã®å¯Ÿè±¡ã«
ããã€ããã¯ãªãã§ããæ°åããã®æèŠã¯ç解ããŸããã
> DeleGate ã¯ãæ¯æ¥ã®ããã«æŽæ°ãããŠããŸãããã°ãå ±åãããšã
> ã»ãã¥ãªãã£é¢ã§éèŠãªãã®ãªããå³åº§ã«æŽæ°ãããŸãã
ã§ãDeleGate ã«éã£ã話ãããªãäžè¬çãªè©±ããšæãã°ããããã
㯠DeleGate åºæã®è©±ãªãã§ããããå¿
èŠãšããã°äžè¬è«ãæãããš
ã¯æ§ããŸããããã©ãããããŸã§ DeleGate åºæã®è©±ãšäžè¬è«ãåã¿
åã£ãŠããªããããªæ°ãããŸãã
ããå°ãäž¡è
ãåãåããŠãåæ¹ã®é¢é£ä»ããã¯ã£ããããããšãã
ããäžè¬è«ãæã¡åºããªããã®æå³ãæ確ã«ããŠé ãããšåãããã
ãã§ãã
倱瀌ã§ãããã©ãã DeleGate åºæã®äºæ
ãç¡èŠããŠãå¿
èŠããªãã®
ã«äžè¬è«ãæã¡åºããŠããã®äžè¬è«ãšããŠã®çµè«ã DeleGate åºæã®
è°è«ã«ç¡çã«åœãŠã¯ããŠãããããªå°è±¡ããæã£ãŠããŸããŸãã
ãããŸã§ã ãšä»ã«ã¯ãrandstack (*1) ã StackGuard (*2) ã®è©±ãšãã
ãã»ãã¥ãªãã£ãšãããã®ã¯...ããšåãåºããŠãããšã (*1) ãšãã
ããããã¯äŸ¡å€ããæ
å ±ãå«ãã§ããããããŸãããè°è«ã«å¯ŸããŠã¯
ãããæ··ä¹±ãæããã®ã§ãã£ããšæããŸãããã¡ãããããã¯æ°åã
ãã®çãã§ã¯ãªããšæããŸãããã©ã
*1: <YAS.00No...@kirk.is.tsukuba.ac.jp>
*2: <YAS.00No...@kirk.is.tsukuba.ac.jp>
# ãšããã§ãæŽæ°ãããŠãããšèšã£ãŠãã6.1.20 ãåºãŠããäžæçµã¡
# ãŸãããã以åã¯ããããæ¯æ¥ããŒãžã§ã³ãäžãã£ãŠãæ°ãããã
# ã§ããã©ã:-D
> FreeBSD ã®ãã€ããªã§ãDeleGate ã®ç®¡çè
ã¯ã©ããªã£ãŠããã§ãã
> ããïŒãããã«é¢ããããã¥ã¡ã³ãã¯ãã©ãã«ãããŸããïŒ
ãããŠçŽæ¥ã¯æžããŸãããã
http://www.freebsd.org/ports/net.html
http://www.jp.freebsd.org/www.freebsd.org/ports/net.html
http://www.jp.freebsd.org/www.freebsd.org/ja/ports/net.html
ã®ãããããã `delegate' ãæ¢ã㊠maintainer ãããã¯ä¿å®æ
åœ
è
ã®ãšãããèŠãŠäžããã2 çªç®ã¯ 1 çªç®ã®ããŒãžã®æ¥æ¬ã®ãã©ãŒã
3 çªç®ã¯æ¥æ¬èªçããšãã説æã§ããã®ããª?
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> ããããDeleGate ã¯ãã¹ã¿ãã¯ã®åºã®ã©ã³ãã åã§å®å
šæ§ãä¿ã£
> ãŠããã®ã§ã¯ãããŸãããããã¯ãåã«è£å©çãªãã®ã§ããæªç¥ã®
> ãã°ãæªæ¥ã®ãã°ã«å¯Ÿãããã®ã§ããDeleGate ã®å®å
šæ§ã¯ãã人
> éæãã§ãã°ãèŠã€ããŠæœ°ããŠããããšã«ãã£ãŠããŸãã
èŠã€ãã£ããã°ã®å¯ŸåŠãè¿
éã«ããã ãããå®å
šæ§ã§ã¯ãªãã§ãããã
æªæ¥ã«å¯Ÿãããã°ã®é
æ
®ãå®å
šæ§ã®äžç°ã§ãããã
æªæ¥ã®ãã°ãšãªããããã³ãŒãã£ã³ã°ã®å±éºæ§ã FreeBSD SA ãšãã
圢ã§ææãããŠããŸãããéçºè
ããã®ããšã¯èªèããŠããããã§ãã
ãªã®ã«ãããããŸã§ã«ææããããã°ã¯æœ°ããŠããããå®å
šã§ãããš
ããéå»ã«ã ãèšåããŠããã®ã§ã¯ãé
æ
®ãååãšã¯æããŸããã
> DeleGate ã«ãå€ããã®æ»æã«ãããããæã«ã¯ãææãã¯ãããŸ
> ããã
ããŒ-ãããã¯ãããã«ããŠæããããè¡æã®æ°äºå®ã§ãã
ãã§ãã¯ããŠãããšã¯ç¥ããŸããã§ããã
ã§ãã¡ãããšãã§ãã¯ããŠããå€ããã®æ»æã«æãããéšåã£ãŠãå
·
äœçã«äœåŠãªãã§ãããããããšããã¥ã¡ã³ãã«ã¡ãããšæžããŠãã
ãã§ããããããŠãŒã¶ãäœè
ã®äºæ³ã®ç¯å²ãè¶
ããéšåãå€ããã®æ»
æã«æããŠããŸã£ãããå±éºã ãšæããŸãã
# ç§ãæåã®èšäº <8ui6ss$18t1$1...@sranhh.sra.co.jp> ã§åŒçšããã®ã¯ã
# httpd.c ãªãã§ããããã®ãã¡ã€ã«ã«æžããŠããé¢æ°ã¯ãå€ããã®å±
# éºã«æãããéšåã§ã¯ãªããã§ãããããhttpd.c ãšèšãååããã
# ãŠå€æ°ã«æãããæããšæã£ãŠéžãã ã®ã§ããã
> 人éæã§ã¯ãªããŠãå®å¿ããã«ã¯ãåã®èšäºã§ã¯ã¹ã¿ãã¯ãå®è¡çŠ
> æ¢ã«ãããšãã話ãæžããŸããããã®ä»ã«ãã³ã³ãã€ã©ã®æã§ã¹ã¿ã
> ã¯ã»ãªãŒããŒãããŒãæ€åºãããšããã®ããããŸãã
> ãšããããã§ãStackGuard 㧠DeleGate ãã³ã³ãã€ã«ããŠäœ¿ããš
> ããã®ããã¹ã¿ãã¯ãå®è¡çŠæ¢ã«ããäºã®æ¬¡ã«ããæ¹æ³ã§ãã
StackGuard ã®ãªãŒããŒãããŒæ€åºæ©èœã¯ãããã¹ããã§ãã¯ããã£ãŠ
ãªããœãããŠã§ã¢ãæãããã®ãã®ãããªããŠããããŸã§ãã§ãã¯ããã£
ãäžã§è£å©çã«äœ¿ããã®ã§ãããã
ã€ãŸããStackGuard ã®ãããªãã®ãããããšãªããããšãDeleGate ã
ããã¹ããã§ãã¯ããã£ãŠãããã©ããã¯ãé¥ãã«åé¡ã§ãã
ãStackGuard ã䜿ãã®ãè¯ãæ¹æ³ããšç°¡åã«èšãåãã®ã¯ããã®è°è«
ãæžãã åŸãããªãã§ãã? (ç§ãšã®è°è«ã®äž»é¡ã®ã»ããå
ã«ããããš
ãããããããªããŠ)
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> å¥ã« #define ã䜿ã£ãŠããŠããã¹ã¿ãã¯ã»ãªãŒããŒãããŒã¯èµ·ã
> ãæã«ã¯èµ·ããããã§ããå®æ°åãééãããçµãã§ããDeleGate
> ã¯ãå®æ°ã®äœ¿ãæ¹ã¯äœè
ãäžäººã§äœã£ãŠããã®ã§ãäžè²«ãã䜿ãæ¹
> ã«ãªã£ãŠããŸããã§ããããå®æ°ãçã§å
¥ã£ãŠããŠãã倧äžå€«ãªã
> ã§ãã
ããããªãã§ãã話ã®éã³ã«ç¡çããããšæããŸãã
ãŸããã#define ã䜿ã£ãŠããŠãèµ·ãããã®ã¯èµ·ããããããšãã£ãŠã
䜿ã£ãŠå¹æãããããªããã¯ããŸã£ããå¥ã®è©±ã§ãã
# åãã€ããŠãæ»äº¡äºæ
ã¯èµ·ããã®ã ãããè»ã«ãšã¢ããã¯ã¯ä»ããª
# ãããšããã®ã¯æ£ããã§ãã?
DeleGate ã® randstack ãããŸãã«ããããäºæ³å€ã®å±æ©ã®ããã®ã
ã®ããšããäºã§ã¯ãªãã£ãã®ã§ããããã
ããäžã€ãäœè
ãäžäººãªã®ã¯ãäžè²«æ§ã®é¢ã§å€å°åªäœããã *ããç¥
ããŸãã* ããã ãããšãã£ãŠã倧äžå€«ããšãŸã§èšãåããæ ¹æ ãã©
ãã«ããã®ã§ããããã
DeleGate ã¯ãœãŒã¹ã³ãŒãã®éã倧ããããŸãæ°å¹Žã«æž¡ã£ãŠãœãŒã¹ã³ãŒ
ãã¯é »ç¹ã«æŽæ°ãããŠããŸãããæ©èœã次ã
ã«è¿œå ããŠãã£ãŠãæ¡åŒµ
ãããŠãããŸããããããããªç¶æ³ã§ãäžäººã§äžè²«æ§ãç¶æããŠãã
ããšããå®éã®ãšããé·æã«ãªãåŸãŠãããªã©ãšã¯ã誰ã«ãèšãåã
ãªãããããªãã§ããããã
éçºè
ãè€æ°ããå Žåã¯ãéã«ãã§ãã¯ã®ç®ãããã ãè¡ãå±ãããš
ããé·æãèããããŸãã
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
In article <8vv8js$1r3s$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ç¬ åã§ããããã«ã¡ã¯ã
> ããããã«ããã㯠DeleGate ã«éã£ã話ã§ã¯ãªãããã§ããã
ã¯ããäžè¬çã«é
åžããç«å Žãšå©çšããç«å Žã§ãã©ããªããã°ã©ã
ã¯ãã€ããªé
åžã®ãã®ãããããã©ããªããã°ã©ã ã¯ãœãŒã¹é
åžã
ããããããããå€æãå人å人ã§ããæã«ãã©ããªç¹ãèæ
®ããª
ãããäŸããããªããè°è«ããŠããã€ããã§ãã
> ãã ãçŸç¶ã§ã¯ Sendmail, Apache, BIND ãšãã£ããå€éšããã®æ»æ
> ã«ãèããªããã°ãªããªããããªçšéã®ãœãããŠã§ã¢ãå«ããŠã
> FreeBSD ã Linux ã® distribution ã®å€ãã§ãã€ããªãé
åžããããš
> ãäžè¬çã«ãªã£ãŠããã®ã¯ãåãããšæããŸãã
ã¯ãã
> ãã®çŸç¶ãèžãŸããäžã§ããã£ã±ãããã§ããã€ããªã®é
åžã¯æ¢ãã
> ã»ããè¯ããã©ãããšããã®ã¯ãèå³æ·±ãè°è«ã§ã¯ãããšã¯æãã®ã§
> ãããã¡ãã£ãšè©±ãåºããéããããã«æããŸãã
å
šéšãœãŒã¹é
åžã«ããæ¹ããããšã¯äž»åŒµããŠããŸãããå©çšé »åºŠãš
ããæŽæ°ã®é »åºŠãšããã€ã³ã¹ããŒã«ã®ãããããªã©ããããŠãéžæ
ããã®ãããããšæããŸãããŸããã€ã³ã¿ãŒãããã«å¯ŸããŠãµãŒã
ã¹ãæäŸããªããããªãã®ã¯ããã€ããªã§ããããšæããŸããls
ãšã tcsh ãšã kterm ãšãã
次ã«ã€ã³ã¿ãŒãããã«å¯ŸããŠãµãŒãã¹ãæäŸããã®ã¯ããªãã¹ããª
ããœãŒã¹é
åžãå©çšãããã§ãããšã¯ãã£ãŠããinetd, telnetd,
ftp ã¯ããã€ããªã§ããsendmail, bind ã¯ãhttp://www.isc.org/
ãèŠãŠãåé¡ãªããããªããã€ããªã䜿ããŸãããã®ãããæ°å€ã
ãããSSH, INN, Apatch, DeleGate ã¯ãåžžã«ãœãŒã¹ã§ãã
ã€ãã§ã«å®£äŒããŠãããšããã€ããªé
åžã®ããã°ã©ã ãå®å
šã«äœ¿ã
ããã®ç 究ãããŠããŸãã次ã®è«æãèŠãŠãã ããã
抮æš, æ°å, æ¿é: "äœçœ®æ
å ±ãå©çšããã·ã¹ãã ã»ã³ãŒã«ã»ã¬ã
ã«ã®ã¢ã¯ã»ã¹å¶åŸ¡", æ
å ±åŠçåŠäŒç 究äŒå ±å2000-OS-84-29,
Vol.2000, No.84, pp.213-220 (2000幎5æ)
ãã®è«æã§ã¯ãã¬ãŒããšããã«ãŒãã«å
ã®ã¢ãžã¥ãŒã«ã䜿ã£ãŠä»å
çã«ã¢ã¯ã»ã¹å¶åŸ¡ã®æ©èœã匷åããæ¹æ³ã«ã€ããŠæžããŠãããŸãã
ç¹ã« Unix ã§ã¯ããã¡ã€ã«ã®å
容㯠rwxrwxrwx ã®ã¢ãŒããããã®
ã«ããããã¯ãŒã¯ã«ãªããšæ¥ã« uid==0 ãåŠããããããå¹ããªã
ãªããŸããã¬ãŒãã䜿ãã°ããã®èŸºããè£åŒ·ã§ããŸããããã«ãäž
äžãã€ã³ã¿ãŒãããããã®æ»æã§èœã¡ãŠ root ã®æš©éãåããããš
ããŠããã¬ãŒããããã°ããããç²ãè
°ãçºæ®ããŠãã·ã¹ãã ãå£
æ»
çãªç Žå£ããä¿è·ããããšãã§ããŸããroot ãšãã£ãŠããé é
ããå¶åŸ¡ãããŠãããããªãã®ã¯ãæš©éã匱ãããããšãã§ããŸãã
è«æã¯ïŒæã®æç¹ã§ã®è©±ã§ããŸã åããŠããªãããšã«ãªã£ãŠããŸã
ããä»ã¯ã ãã¶åããŠããŸãã
ãã®æã®æ©èœã¯ãæ¬åœã¯ãWindows ãšã MacOS ãšããå®è³ªçã«ã
ã€ããªé
åžãã䜿ããªããã㪠OS ã§å¹ããã ãã©ãNetscape ã¯
Unix ã®ãã€ããªã䜿ã£ãŠãŸããã©ãããã«ã¬ãŒããä»æãããã
ã§ããåæã«ã¡ãŒã«ãåºããªãããã«ãšããåæã«å€ãªãã¡ã€ã«ã
ã¢ã¯ã»ã¹ããªãããã«ãšããããã€ã®æšéŠ¬ã ã£ãããšæããšãæã
ãŠãããããªãããã§ããHTTP ã®äžèº«ã¯ãäžã®è«æã®ã¬ãŒãã§ã¯
é£ãããã ãã©ã
> ã§ãDeleGate ã«éã£ã話ãããªãäžè¬çãªè©±ããšæãã°ããããã
> 㯠DeleGate åºæã®è©±ãªãã§ããããå¿
èŠãšããã°äžè¬è«ãæãããš
> ã¯æ§ããŸããããã©ãããããŸã§ DeleGate åºæã®è©±ãšäžè¬è«ãåã¿
> åã£ãŠããªããããªæ°ãããŸãã
DeleGate ã¯ããã€ããªé
åžã¯ãããŠãœãŒã¹ããããšããããšã§ã
æèŠã¯äžèŽããããã§ãå¥ã«å¯Ÿç«ç¹ãããªãã§ãããã
sendmail ããã€ããªã§ãåæèŠãšããããšã§ã
Linux 系㮠Apache ã®ãã€ããªã®é
åžãšããã©ã«ãã®èµ·åã¯ããã
ãŠããã£ãæ¹ãäžã®ãã人ã®ããã ãšæããã ãã©ãªããç¹ã«äžè¬
ãŠãŒã¶çšã¯ãïŒã©ãããŠããã€ããªé
åžãšããããšãªããäžã®è«æ
ã®ã·ã¹ãã ã䜿ã£ãŠãã ããããšèšãããæãªãã§ããããŸããã
å°ããåŸ
ã¡äžãããïŒ
> ãããŸã§ã ãšä»ã«ã¯ãrandstack (*1) ã StackGuard (*2) ã®è©±ãšãã
> ãã»ãã¥ãªãã£ãšãããã®ã¯...ããšåãåºããŠãããšã (*1) ãšãã
> ããããã¯äŸ¡å€ããæ
å ±ãå«ãã§ããããããŸãããè°è«ã«å¯ŸããŠã¯
> ãããæ··ä¹±ãæããã®ã§ãã£ããšæããŸãããã¡ãããããã¯æ°åã
> ãã®çãã§ã¯ãªããšæããŸãããã©ã
ç§ã¯ãã€ããããã¯ãŒã¯ã»ãã¥ãŒã¹ãªã®ã§ãæ
å ±éãå€ãèšäºã
DeleGate ã䜿ã£ãŠããªã人ã«ã圹ã«ç«ã¡ãããªèšäºãæžããããš
å¿æããŠããŸãã
> # ãšããã§ãæŽæ°ãããŠãããšèšã£ãŠãã6.1.20 ãåºãŠããäžæçµã¡
> # ãŸãããã以åã¯ããããæ¯æ¥ããŒãžã§ã³ãäžãã£ãŠãæ°ãããã
> # ã§ããã©ã:-D
11æ28æ¥ã« 6.1.21 ãåºãŸãããä¿®æ£ã®çŽ°ããæã¯ãã¡ãŒãªã³ã°ã»
ãªã¹ã㧠diff ã§åºãŸãã
> > FreeBSD ã®ãã€ããªã§ãDeleGate ã®ç®¡çè
ã¯ã©ããªã£ãŠããã§ãã
> > ããïŒãããã«é¢ããããã¥ã¡ã³ãã¯ãã©ãã«ãããŸããïŒ
> ãããŠçŽæ¥ã¯æžããŸãããã
> http://www.freebsd.org/ports/net.html
> http://www.jp.freebsd.org/www.freebsd.org/ports/net.html
> http://www.jp.freebsd.org/www.freebsd.org/ja/ports/net.html
ports ã¯ããœãŒã¹ã ftp ã§åŒã£åŒµã£ãŠã㊠make ããããã§ãã
ãããã€ããªé
åžãšããããã¯ããœãŒã¹é
åžã«è¿ããšæããŸãããœãŒ
ã¹é
åžã®å©ç¹ãšããã€ããªé
åžã®æ°è»œããããŸãèåããããã°ã
ããæ¹æ³ã ãšæããŸãã
FreeBSD ã§æ€çŽ¢ã«ããã£ã delegate6.1.19 ã® ports (ã¡ãã£ãšå€
ããª)ãè©Šããã®ã§ãããftp ã§ãããŠããŸããŸããå£ã®å
åŽãªã®
ã§ãpassive 㧠ftp ããªããšããŸããããªããããããããŸããã
fetch: ftp.delegate.org: Not logged in
fetch: pub/DeleGate/delegate6.1.19.tar.gz: cannot get remote modification time
fetch: ftp://ftp.etl.go.jp/pub/DeleGate/delegate6.1.19.tar.gz: FTP error:
ports ã§ã©ããã颚㫠DeleGate ã®ç®¡çè
ã®ã¡ãŒã«ã»ã¢ãã¬ã¹ãèš
å®ããŠããããšããã®ã¯ããã€ããªé
åžãšåãåé¡ãããããã®ã§
ããããïŒã¡ãªã¿ã«ãDeleGate ã¯ãFreeBSD 以å€ã®ã©ããªãã¹ã
ã§ããœãŒã¹ãå±éã㊠make äžçºã§ããããã«äœãããŠããŸããïŒ
In article <902hbh$1nfd$1...@sranhh.sra.co.jp>
m-ka...@sra.co.jp (Motoyuki Kasahara) writes:
> ç¬ åã§ããããã«ã¡ã¯ã
> èŠã€ãã£ããã°ã®å¯ŸåŠãè¿
éã«ããã ãããå®å
šæ§ã§ã¯ãªãã§ãããã
> æªæ¥ã«å¯Ÿãããã°ã®é
æ
®ãå®å
šæ§ã®äžç°ã§ãããã
ã¯ããïŒéå»ã®ãã°ã朰ããªãã§å± çŽã£ãŠããäŒç€ŸããããŸããã©ãïŒ
> æªæ¥ã®ãã°ãšãªããããã³ãŒãã£ã³ã°ã®å±éºæ§ã FreeBSD SA ãšãã
> 圢ã§ææãããŠããŸãããéçºè
ããã®ããšã¯èªèããŠããããã§ãã
> ãªã®ã«ãããããŸã§ã«ææããããã°ã¯æœ°ããŠããããå®å
šã§ãããš
> ããéå»ã«ã ãèšåããŠããã®ã§ã¯ãé
æ
®ãååãšã¯æããŸããã
æªæ¥ãïŒïŒïŒïŒ
倧äžå€«ãšã¯èšã£ãŠããŸããããœãããŠã§ã¢ã®å®å
šæ§
ã¯ããŸããæäœéã¯ãã»ãã¥ãªãã£ã»ããŒã«ã«ãªããããªæ¢ç¥ã®ã
ã°ãè¿
éã«æœ°ããšããããšã§ããDeleGate ã¯ãããã«åååæ Œã
ãŠããŸãã(CERT ã®å¿çãéãæã¯ãåæ Œã)次ã¯æªæ¥ã®ãã°ã§ã
ããDeleGate ã¯ã¹ã¿ãã¯ã®ã©ã³ãã åã§æéãããã§ããããã«
ãªã£ãŠããŸããæéããããã§ããã°ãïŒåæã¯ã©ãã¯ãããæåŸ
ã«ãã°ãä¿®æ£ããŠæ®ãã®æãåãæå£ã§ããããã®ãé²ããŸããã
ã®ç¹ã§ã DeleGate ã¯ãåæ Œã§ããããšãäœã£ã人ãä¿¡çšã§ããã
ã§ããããããåæ Œã§ãã
FreeBSD SA ã®ææã¯ãïŒã¶æãåã«æœ°ããããã°ãã³ãŒãã®è¡šé¢
çãªèŠæãã ãå€æãããã®ã§ããç§ã¯ãFreeBSD SA ã®ä¿¡é Œæ§ãš
DeleGate ã®ä¿¡é Œæ§ã¯ãDeleGate ã®æ¹ãäžã ãšæããŸãã
> ã§ãã¡ãããšãã§ãã¯ããŠããå€ããã®æ»æã«æãããéšåã£ãŠãå
·
> äœçã«äœåŠãªãã§ãããã
DeleGate ã TCP/IP ãã read() ããæã§ãã
> # ç§ãæåã®èšäº <8ui6ss$18t1$1...@sranhh.sra.co.jp> ã§åŒçšããã®ã¯ã
> # httpd.c ãªãã§ããããã®ãã¡ã€ã«ã«æžããŠããé¢æ°ã¯ãå€ããã®å±
> # éºã«æãããéšåã§ã¯ãªããã§ãããããhttpd.c ãšèšãååããã
> # ãŠå€æ°ã«æãããæããšæã£ãŠéžãã ã®ã§ããã
ãã®ãœãŒã¹ãªããservice_http2() ã®ãã®èŸºãã§ãã
if( fgetsRequest(Conn,REQ,sizeof(REQ),fc,0) == NULL || REQ[0] == 0 ){
sizeof(REQ) ã§ãããã¡ã»ãµã€ãºãæž¡ããŠããŠããããããããã
ã¯èªã¿ãŸãããããã§ãããã¡ã»ãªãŒããŒãããŒã¯èµ·ããŸããã倧
ããªããã°ã©ã ã§ãããŸãšããªããã°ã©ã ãªããå€éšã«ããããã
æã¯ããããªã«ããããã¯åºãŠããŸããã
sprintf() ã¯ãé·ããã©ããªããã¯éçã«äºæ³ãã§ããŸãã%d ãª
ã 10 æ¡ã%s ãªããformat ã®æååãšãåŸã®æååã®é·ãã®åèšã
泚ææ·±ãæžãã°å¹³æ°ã§ãã䞊ã®äººã«ã¯ã§ããŸããã
> > ãšããããã§ãStackGuard 㧠DeleGate ãã³ã³ãã€ã«ããŠäœ¿ããš
> > ããã®ããã¹ã¿ãã¯ãå®è¡çŠæ¢ã«ããäºã®æ¬¡ã«ããæ¹æ³ã§ãã
> StackGuard ã®ãªãŒããŒãããŒæ€åºæ©èœã¯ãããã¹ããã§ãã¯ããã£ãŠ
> ãªããœãããŠã§ã¢ãæãããã®ãã®ãããªããŠããããŸã§ãã§ãã¯ããã£
> ãäžã§è£å©çã«äœ¿ããã®ã§ãããã
ç§ã¯ã人éæã§ããããããæ©æ¢°ã§ã§ãããªãæ©æ¢°ã§ãã£ãæ¹ãã
ããšæããŸããããã«ãå®è¡æã§ãªããŠãã³ã³ãã€ã«æã§ã§ãããª
ãã³ã³ãã€ã«æã人éã®åçŽäœæ¥ãæ©æ¢°ã«ä»»ããŠããããšããã®ãã
ã³ã³ãã¥ãŒã¿ã»ãµã€ãšã³ã¹ã®ç®æšã§ããããšãã°ãC ã§ãªããŠ
Java ã§æžãã°ãã¹ã¿ãã¯ã»ãªãŒããŒãããŒã®åé¡ã¯ïŒïŒïŒïŒ
解決
ã§ãããJava ã倧äºãªã³ã³ãã¥ãŒã¿ã»ãµã€ãšã³ã¹ã®ææã§ãã
StackGuard ãã
> ã€ãŸããStackGuard ã®ãããªãã®ãããããšãªããããšãDeleGate ã
> ããã¹ããã§ãã¯ããã£ãŠãããã©ããã¯ãé¥ãã«åé¡ã§ãã
ç§ã DeleGate ã®ã³ãŒãã£ã³ã°ã»ã¹ã¿ã€ã«ã¯ãè¯ããªããšããã®ã¯
åæã§ããçŽããæ¹ãããã®ã¯ããã®éãã§ããã§ããDeleGate
ã®å®å
šæ§ã¯ãäžã§æžããæå³ã§ã¯åååæ Œã ãšå€æããŠããŸãã
> ãStackGuard ã䜿ãã®ãè¯ãæ¹æ³ããšç°¡åã«èšãåãã®ã¯ããã®è°è«
> ãæžãã åŸãããªãã§ãã? (ç§ãšã®è°è«ã®äž»é¡ã®ã»ããå
ã«ããããš
> ãããããããªããŠ)
ç§ã DeleGate ã®ã³ãŒãã£ã³ã°ã»ã¹ã¿ã€ã«ïŒã¹ã¿ãã¯ã»ãªãŒããŒã
ããŒã«åŒ±ããã«èŠããïŒã¯ãè¯ããªããšããã®ã¯ãç§ãèªããŠãŸã
ãããã®ãããã®è°è«ã¯çµãã£ãŠããããããªãã§ãããæ®ã£ãè«
ç¹ã¯ãæªãã³ãŒãã£ã³ã°ã»ã¹ã¿ã€ã«ã®ãœãããŠã§ã¢ã¯ã䜿ãã®ã¯ã©
ãããå
·äœçã« DeleGate ã䜿ãã®ã¯ã©ãããDeleGate ã¯æ¬åœã«
匷ãã®ã匱ãã®ããã§ããããã
27-Nov-2000 ã« Red Hat ãŒããŒããã°ã»ãã£ãã¯ã¹åºãŠããªãã
bind, apache, pine, netscape, bash ...
> > é
åã«å¯Ÿããäžå¿
èŠãªã¬ã³ãžãã§ãã¯ãèšèªåŠçç³»ã
> > èªååé¿ã§ããå Žåã¯å°ãªããããšèšãããšããã ãã§ãã
>
> 人çºãã¹ãæãåŸããšããç¶æ
ãšç¡ããšããç¶æ
ã«ã¯å€§ããªéããããããšæ
> ããŸã.
ãã¥ãŒãã³ãšã©ãŒã«ããå¡ãã¹ãèšèšã®ãŸããã
ãªã©è²ã
ãããŸãããã
èšèªåŽã§ã®ã¬ã³ãžãã§ãã¯ã«ã¯ã
ãããã®ãã¡ã®å¡ãã¹ãé²ãæå³ã¯ããããã§ããã
èšèšã«å¯ŸããŠã¯ããããã€ãã¹ã«ãªããããšæããŸãã
ãã¹ã¯ãŒããæ€æ»äžã«ã¬ã³ãžãã§ãã¯äŸå€ãèµ·ãããšããŠã
ãããã©ãããããåœç¶èããªããã°ãªããŸãããã
ãã ãsubscript out of rangeããš *ã³ã³ãœãŒã«ã«* 衚瀺ããŠ
æ¢ãŸã£ãŠããŸãã ãã§ã¯äœè
以å€ã®èª°ãçŽåŸããªãã§ãããã
ãã¡ããšãã察å¿ãã§ããããã«ããããã«ã¯ã
äœèšèªã§ããããšäŸå€ãã³ãã©ãæžãå¿
èŠããããã
ãã®äŸå€ãã³ãã©ã®å®è¡æ¡ä»¶ãšèŠä»¶ãã¯ã£ãããããªããã°
ãªããŸããã
ãèšèªããã§ãã¯ããŠãããããããšå®å¿ããŠããŸãã®ã¯
ãããå¿ããããšã«ã€ãªãããŸãããïŒ
ã¢ã¯ã»ã¹éå *ã ã* ã¯åé¿ã§ããŠãã
ã·ã¹ãã ããŠã³ãã»ãã¥ãªãã£ã»ããŒã«ãåé¿ã§ããªããã°
çµå±ãåãããšãã§ããå Žé¢ãã»ãšãã©ã§ãããã
ãã®ãšããèªåãã§ãã¯ã®ã³ã¹ãã¯äœã«æã£ãŠããã®ã§ããããã
> 話å€ãã£ãŠå¹ç. ãããã¡ãµã€ãºã 2^n ã§ãããšããæ
å ±ãéçã«åŸããã
> ãªãã° cyclic ãããã¡ã€ã³ããã¯ã¹ã®æŽæ°ã¯åãªãè«çç©ã«ãªããŸããã.
> ã€ãŸã idx ã®å€åã 0 ä»¥äž N (= 2^n) æªæºãªãã°
>
> if (N <= ++idx)
> idx = 0;
>
> ã¯
>
> idx = (++idx) & N-1;
>
> ãšãªããŸãã, range check ã
>
> if (idx & ~(N-1))
> ...;
>
> ãšãªããŸãã (ãããã¡ãµã€ãºã 2^n ãšã㊠#define ããå Žåãå€ãã®ã¯ã
> ããçã£ãŠããããã ãšæããŸã),
unsigned char idx;
ã§ããããæ£çŽãç§ã䜿ã£ãŠããŸãã
# ã®èŠæ Œã§ã¯æŽæ°ã®ãªãŒããŒãããŒã«å¯Ÿããåäœã
# ãªããšãæªå®çŸ©ãïŒãåŠçç³»å®çŸ©ãªããšãããããããªæ®ºçãªïŒïŒïŒ
> C 㧠æ±çšçã«æžããŠããŸããš (open ãª
> ã©ã®åŒæ°ã§ãããã¡ãµã€ãºãäžããããã«ãããš) ãããäžå¯èœã«ãªããŸã.
ã€ãã€ãæžããŠããŸããªãŒããŒã¹ããã¯ã®å
žåã§ããã
決ããã¡ã§ãããšããããããããããšã«ãã£ãŠ
å¹çã皌ãããšã«ååçãªèšèªã£ãŠãç§ã¯å¥œããªãã§ãã
人ããããã§ïŒïŒïŒ
> 欲ããã§ããã, template :-)
ãªã³ã«ãã©ãããããšããåé¡ã«äžæ¹ã®äžå®ãèŠããŸããã
ããã°ãããããã£ãã§ãã
> > > # ããããèšèªãšåãããšãããããšãããšå¹çã¬ã¿èœã¡ãªã®ãã¯ã£ãããã
> > > # ãäŸã§ãã.
> >
> > ãã¿ãŸããããããããèšèªããšããéšåãããããŸããã
>
> ç§ã®é ã®äžã«ã¯å
·äœçã«ã¯ C++, æœè±¡çã«ã¯æ€èšŒè«çãªæžãæ¹ã®åºæ¥ãèšèªã
> ãããŸã (åŸè
ã¯åè
ã䜿ã£ãŠããçšåºŠæ§ç¯å¯èœããç¥ããªã).
>
> C++ ã«ã€ããŠå®ã¯å®è£
ã«æãããªãã®ã§ããã©, jmp_buf ãæ·»åæŽæ°ã®åºŠã«ã¹
> ã¿ãã¯ã«ç©ããããªããšã«ã¯ãªããªãã®ã§ã¯ãªãã§ãããã (å°ãªããšããã
> ãé¿ããã³ãŒãã£ã³ã°ã¯å¯èœãªã®ã§ã¯).
ããããããšã§ããïŒ
void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max) throw(int)
{
if( i < 0 || max <= i ) throw 1;
*(p + i) = a;
}
> setjmp/longjmp ã¯ä»ã®ä»äºã§ã䜿ã£ãŠããŸã.
>
> # goto ããããªãã«äœ¿ããŸã :-)
ããããããã¯å€±ç€ŒããŸããã
ãããŸãŸèšã£ãŠãã¿ãŸããã§ããã
ãã£ããæèªãããŠé ããŸããã
ããããšãããããŸãã
> void foo(char a[], int b, int c)
> {
> int i;
> for (i = b; i < c; i++) {
> a[i] = 0;
> }
> }
>
> ã§ãé
åã®range checkãããPascal, Ada, Javaã®ãããªèšèªã§ã¯ãã³ã³ãã€
> ã©ãrange checkãç¹å¥æ±ãããã®ã§ããã§ãã¯ãã«ãŒãã®å€ã«è¿œãåºãããš
> ãã§ããŸãã(Javaã®å Žåãäžã§ã¯ 0 <= b ãš c <= a.length ããã§ãã¯ãã
> ã°è¯ãã) ãŸããäžã®ã³ã³ãã€ã«æã«åŒã³åºãå
ãããã£ãŠãããããªãšãã«
> ã¯ãrange checkãã³ã³ãã€ã«æã«ãã¹ãŠæžãŸããŠããŸããå Žåãããã§ãã
> ãã
ãªãã»ã©ããã§ã¯ãããªã£ãŠããŸããŸããã
void foo_caller1(void)
{
char array[256];
int begin, end;
begin = func1();
end = func2();
if(0 <= begin && end <= 256)
{
foo(a, begin, end);
}
}
void foo(char a[], int b, int c)
{
int i;
assert(0 <= b && c <= 256);
for (i = b; i < c; i++) {
a[i] = 0;
}
}
foo ã®äžã« 256 ãšæžãããããããããã®ãããã€ã€ã§ãã
ïŒarray_t ã®ãããªæ§é äœã«ããã°å¥ã§ããããã©ïŒ
ãšããã§ãäœãã€ã€ãªã®ã§ããããããæ ¹æ¬çãªåé¡ãšããŠã
ç§æãã«ãåé¡ã¯ foo ã®èšèšã«ãããèšèªã®åãæªããšã¯
é¢ä¿ããªãããã«èŠããã®ã§ãã
foo_caller1 ã®äžã® if ã®ãããªãã§ãã¯ãæžããªãããã§ããã°
ãã®ããã°ã©ãã«ã¯é©æ§ããªããšèšããããåŸãŸããã
> void foo(array_t *a, int b, int c)
> {
> int i;
> for (i = b; i < c; i++) {
> CharKaku(a->body, i, 0, a->length, error);
> }
> }
> ãšæžãããšããŸãã
>
> induction variableãäžçåŒã«é¢ããè¶
匷åãªæšè«æ©èœããã€Cã®ã³ã³ãã€ã©
> ãããšãä»®ã«ãã£ããšããŠããCharKakuã®ãã§ãã¯
> if( i < 0 || max <= i ) longjmp(jb, 1);
> ãã«ãŒãã®åã«è¿œãåºããŠã
> if (b < 0) longjmp(error, 1);
> if (a->length <= c - 1) longjmp(error, 1);
> ãšããããšã¯ã§ããŸããã
ãªãã»ã©ã
æåã§ãã§ãã¯ããããã€ã³ã©ã€ã³åããŠãæé©åã§ããªãã®ã§ããã
# ãããŒ
void foo_caller1(jmp_buf jb1)
{
array_t a;
int begin, end;
jmp_buf jb2;
volatile int e;
a.body = (char *)malloc(sizeof(char) * (a.length = 256));
if((e = setjmp(jb2)) == 0)
{
begin = func1();
end = func2();
if(0 <= begin && end <= a.length)
{
int i;
assert(0 <= begin && end <= a.length);
for (i = begin; i < end; i++) {
if( i < 0 || a.length <= i ) longjmp(jb2, 1);
a.body[i] = 0;
}
}
}
else
{
free(a.body);
longjmp(jb1, e);
}
free(a.body);
}
ããããããããªæåãã§ãã¯ã¯æžããŸãããã
ç§ã CharKaku ãæã¡åºããã®ã¯ã
ã§ã³ãŒããæžããŠãããšãã«ãä»ã®èšèªã§ã¯ããš
ãããã«èšã人ãã¡ã®ã¬ã³ãžãã§ãã¯ã«å¯Ÿããææ³ã
äžã®ãããªã³ãŒãã«ã€ãªãããããªããšèšãããã£ãããã§ãã
> åžžã«ãã§ãã¯ããCharKakuã«å ããŠããã«ãŒãçšã«äžäžéã ããã§ãã¯ããã
> ã¯ãããšããçšæããã«ãŒãæ¬äœã§ã¯ãã§ãã¯ãªãã®é
åã¢ã¯ã»ã¹ããããã
> ã«ããã°ãJavaãªã©ãšåçã®å¹çãåŸãããŸãããããã¯(ééãã®å±éºãå¢ã
> ããšãå¥ãšããŠã)CharKakuãšãç䟡ããšã¯ãšãŠãåŒã¹ãªããšæããŸãã
ãç䟡ãã¯åŒã£èŸŒããã¯ããªã®ã§ããã
以äžã®ããã«èšèšææ³ãšããŠãåãããšãã§ãªãããšã«
ãŸã çŽåŸããã£ãŠããŸããã
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> æªæ¥ãïŒïŒïŒïŒ
倧äžå€«ãšã¯èšã£ãŠããŸããããœãããŠã§ã¢ã®å®å
šæ§
> ã¯ããŸããæäœéã¯ãã»ãã¥ãªãã£ã»ããŒã«ã«ãªããããªæ¢ç¥ã®ã
> ã°ãè¿
éã«æœ°ããšããããšã§ããDeleGate ã¯ãããã«åååæ Œã
> ãŠããŸãã
ç§ããDeleGate ã¯ãæªæ¥ãïŒïŒïŒïŒ
倧äžå€«ã§ã¯ãªãããšèšã£ãŠããã
ãã§ã¯ãããŸãããæ°åããã®è¡šçŸã«å£ããªããæªæ¥ãšããç¹ã§ã¯åæ Œ
ã«éããŠããªããšèšãããã®ã§ãã
> ããšãäœã£ã人ãä¿¡çšã§ãããã§ããããããåæ Œã§ãã
æ°åããã®å¿ã®å
ã§ã¯åæ Œã§ããä»ã®äººãçŽåŸããããããããªæ ¹æ ã¯
æ®å¿µãªãããããŸããã
äœè
ãä¿¡çšã§ãããã©ããã¯ãäœåã®æãç«ã¡ããéçºæ¹éãã¡ãŒãªã³
ã°ãªã¹ãã§ã®çºèšãªã©ããåãŠãŒã¶ãå€æããªããã°ãªããªããšæãã®
ã§ãããæžç¹ã倧ãããŠåæ Œç¹ã«ã¯éããŠããªãããšããã®ãç§ã®å°è±¡
ã§ãã
# äœè
ãæå³çã«äŸµå
¥æå£ãäœããããªç䌌ã¯ããªãããšãã£ãã¬ãã«
# ã§ã¯ç¡è«ä¿¡çšã§ããã§ãããããããããªãã§ãè«å€ãªã®ã§é€å€ããŸ
# ããäœè
ã«å¯Ÿããä¿¡çšãšã¯å¥ã«ãäœåã®éçºèªäœã«å¯Ÿããä¿¡é Œæ§ãå®
# å¿æãšããè©äŸ¡é
ç®ã«ããŠãè¯ãã§ãã
å°ãåã«ãå
ç°ãããåæ§ã®ææ³ãè¿°ã¹ãããŠããŸããããç§ã«ã
DeleGate ã«ã¯å®å
šæ§ãèªãäžã§äžå®ææãããã€ããããŸãã
* ã³ãŒãã£ã³ã°ã®ææã
ãããŸã§ããããèšã£ãŠããããšã§ãã倧äžå€«ãã©ããã¯ãããŠ
眮ããŠãããšããŠãããªããã®ãããªã¹ã¿ã€ã«ãæ¡çšããŠãã®ãŸ
ãŸã«ããŠãããã§ãããããå質ãäžããŠããããšãäºå®ã§ãã
* 解æãã¥ãããã°
ãªãã¹ãå®å
šæ§ãç¶æãã€ã€æ¥ã
ã®éçšãããªãã€ãããªããã
ãã¯ããªãäžå®ã§ã¯ã
* äžå¿
èŠã«æ°å€ãã®ãããã³ã«ãžã®å¯Ÿå¿
ãšãŠãå
šéšã¯äœ¿ããããªãã»ã©å€æ°ã®ãããã³ã«ã«å¯Ÿå¿ããŠãã
ãã 1 åã®ãã€ããªã«ãªã£ãŠããŸããå¿
èŠãªæ©èœã ãã«çµã£ãŠ
ã³ã³ãã¯ãã«ãªã£ãŠããã»ãããå®å
šæ§ã®é¢ã§ã¯æå©ã§ãããã
* ããããã«é£è§£ãªèšå®æ¹æ³
æ°å€ãã®ãããã³ã«ã«å¯Ÿå¿ããŠããããšã«ãã£ãŠèšå®ãã©ã¡ã¿ã
å€å²ã«æž¡ã£ãŠããããšã«å ããŠãèšå®ãã¡ã€ã«ãããªããŠã³ãã³
ãè¡ãªãã·ã§ã³ã§ã®æå®ãã¡ã€ã³ã§ããããææ³ãå¿
èŠä»¥äžã«é£
解ã«ãªã£ãŠããŸã£ãŠããŸãã
ããããããã¥ã¢ã«ãã¡ãããšèªãã®ããŠãŒã¶ã®è²¬ä»»ã§ãç¡ä¿èšŒ
ã ããéçšã§èµ·ããããšã¯äœè
ã«è²¬ä»»ã¯ãªããšèšã£ãŠããããã§
ã¯ç®¡çè
ã®æå³éãã«æ£ããèšå®ããã®ãããããé£ããããŠã
ããããªãã®ã§ãã
ãããã«ã©ããçŽæ¥çã«å±éºã«ã¯ç¹ãããŸãããããããé²ç«å£ã®å€åŽ
ããã®æ»æã«ãèããªããŠã¯ãããªããœãããŠã§ã¢ããããã ãæ¬ ç¹ã
æ±ããèšèšãããŠããŸã£ãŠãããšããç¹ã§ãä¿¡çšæ§ (å®å¿æãšãã£ãŠã
è¯ãã§ã) ã§ã¯ãã€ãã¹ç¹ãå€ãããŸãã
ããã«ããããã®äžå®ææã«å¯Ÿããææã¯ãéå»ã« delegate ã¡ãŒãªã³
ã°ãªã¹ãããã®ä»ã®å Žæã§ãªãããããšãšæããŸãããããããã®åºŠã«
äœè
æ°ã¯ããããããåªå
ãããäºããã (ã€ãŸãåªå
床ã¯äœã)ããš
ããçºèšããããŠããã®ã§ã¯ãªãã£ãã§ããããã
ããããäžå®ææãæŸçœ®ãããŸãŸãéã«åªå
ãããŠããã®ãå€æ°ã®æ©èœ
è¿œå ãªããã§ããããå®å
šæ§ã«å¯Ÿãã姿å¢ã«å¯ŸããŠããé«ãè©äŸ¡ã¯ä»ã
ãããŸããã
> FreeBSD SA ã®ææã¯ãïŒã¶æãåã«æœ°ããããã°ãã³ãŒãã®è¡šé¢
> çãªèŠæãã ãå€æãããã®ã§ããç§ã¯ãFreeBSD SA ã®ä¿¡é Œæ§ãš
> DeleGate ã®ä¿¡é Œæ§ã¯ãDeleGate ã®æ¹ãäžã ãšæããŸãã
ç§ããïŒã¶æãåã«æœ°ããããã°ãã³ãŒãã«é¢ãã SA ã®ææã¯ãŸã£
ããçå€ãã ãšæããŸãã
ç§ããFreeBSD SA ã®ææããšãã£ãŠããã®ã¯ã"with potentially
dozens of different exploitable buffer overflows" ãšããéšåã®ã
ãšã§ããæ°åããããã®ç¹ã¯ãã¯ããããã§ãããšèªããŸããããã
> ãã®ãœãŒã¹ãªããservice_http2() ã®ãã®èŸºãã§ãã
>
> if( fgetsRequest(Conn,REQ,sizeof(REQ),fc,0) == NULL || REQ[0] == 0 ){
>
> sizeof(REQ) ã§ãããã¡ã»ãµã€ãºãæž¡ããŠããŠããããããããã
> ã¯èªã¿ãŸãããããã§ãããã¡ã»ãªãŒããŒãããŒã¯èµ·ããŸããã倧
> ããªããã°ã©ã ã§ãããŸãšããªããã°ã©ã ãªããå€éšã«ããããã
> æã¯ããããªã«ããããã¯åºãŠããŸããã
>
> sprintf() ã¯ãé·ããã©ããªããã¯éçã«äºæ³ãã§ããŸãã%d ãª
> ã 10 æ¡ã%s ãªããformat ã®æååãšãåŸã®æååã®é·ãã®åèšã
> 泚ææ·±ãæžãã°å¹³æ°ã§ãã䞊ã®äººã«ã¯ã§ããŸããã
åŸåã® sprintf() ã®è©±ã¯ DeleGate ã®è©±ãããªããŠãäžè¬è«ã§ãããã
sprintf() ã§æååé åãäžæžãããéã«ãDeleGate ã§ãã§ãã¯ããŠ
ãããã©ããã¯å¥ã§ããã§ããã®ç¹ããšã£ãŠãæªãããšæã£ãŠãããã
ã§ãã
ååã®è©±ã¯ããããã«ããgets() ãããªããŠãã¡ãããš fgets() 䜿ã£
ãŠãŸãããããã®æå³ã§ããããDeleGate ã TCP/IP ã ã read() ã
ãæã¯å®å
šããšèšã£ãŠããèªã¿èŸŒãã å
容ã«åºã¥ããŠåŠçãè¡ãéšåã¯
ãããšã¯å¥ã§ããããã£ã¡ã®å®å
šæ§ãéèŠã§ãã
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
In article <90djdk$cc$1...@news01ch.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> ãã¹ã¯ãŒããæ€æ»äžã«ã¬ã³ãžãã§ãã¯äŸå€ãèµ·ãããšããŠã
> ãããã©ãããããåœç¶èããªããã°ãªããŸãããã
> ãã ãsubscript out of rangeããš *ã³ã³ãœãŒã«ã«* 衚瀺ããŠ
> æ¢ãŸã£ãŠããŸãã ãã§ã¯äœè
以å€ã®èª°ãçŽåŸããªãã§ãããã
ä»æ§ãç¶æ³ã«ãã£ãŠã¯ããã§ã ok ã ãšæããŸã.
> ãèšèªããã§ãã¯ããŠãããããããšå®å¿ããŠããŸãã®ã¯
> ãããå¿ããããšã«ã€ãªãããŸãããïŒ
èšèªä»æ§ã«ãã£ãŠã¯ããã³ãã©ãèšå®ãããŠãªããã©ããã®?ããšããèŠåã
åºãããããšãå¯èœã§ããã. ãŸãã¯, ãããã¯ãã§ãã¯ããªããšãè¯ããã
ãšãäºãè¡šèšããªããã°ãªããªãããã«ãããšã.
> unsigned char idx;
>
> ã§ããããæ£çŽãç§ã䜿ã£ãŠããŸãã
unsigned char ã®ãã€ãæ°ã 1 ã ã£ãã 2 ã ã£ããããã®ã§æµç³ã«ãããŸã§
ã¯ç§ããããŸãã.
> > C 㧠æ±çšçã«æžããŠããŸããš (open ãª
> > ã©ã®åŒæ°ã§ãããã¡ãµã€ãºãäžããããã«ãããš) ãããäžå¯èœã«ãªããŸã.
>
> ã€ãã€ãæžããŠããŸããªãŒããŒã¹ããã¯ã®å
žåã§ããã
> 決ããã¡ã§ãããšããããããããããšã«ãã£ãŠ
> å¹çã皌ãããšã«ååçãªèšèªã£ãŠãç§ã¯å¥œããªãã§ãã
> 人ããããã§ïŒïŒïŒ
ããããå
·åãã«æžããŠ, ãã€, å¹çãèœããªãåŠçç³»ããã£ãŠããããšæã
ãŸã.
> ããããããšã§ããïŒ
>
> void CharKaku(char *p, ptrdiff_t i, char a, ptrdiff_t max) throw(int)
> {
> if( i < 0 || max <= i ) throw 1;
> *(p + i) = a;
> }
ããããå
·åãã«ããæžããªãèšèªãªã, ããæžããããªãã§ããã. ãã€ã§
ããã§ãã¯ç¡ãã®ã³ãŒããæžããŠããŸãæç¹ã§é§ç®ãªããããªãããš.
* From: y...@is.tsukuba.ac.jp
* Message-ID: <YAS.00No...@kirk.is.tsukuba.ac.jp>
> > ãã®çŸç¶ãèžãŸããäžã§ããã£ã±ãããã§ããã€ããªã®é
åžã¯æ¢ãã
> > ã»ããè¯ããã©ãããšããã®ã¯ãèå³æ·±ãè°è«ã§ã¯ãããšã¯æãã®ã§
> > ãããã¡ãã£ãšè©±ãåºããéããããã«æããŸãã
>
> å
šéšãœãŒã¹é
åžã«ããæ¹ããããšã¯äž»åŒµããŠããŸãããå©çšé »åºŠãš
> ããæŽæ°ã®é »åºŠãšããã€ã³ã¹ããŒã«ã®ãããããªã©ããããŠãéžæ
> ããã®ãããããšæããŸãã
ç§ãå
šéšãœãŒã¹ã«ããã»ããè¯ããã䞻匵ãããã€ããã¯ãããŸããã
æ°åããããã䞻匵ããŠãããšãæã£ãŠãŸããããå€éšããã®æ»æã«
ãèããªããã°ãªããªããããªçšéã®ãœãããŠã§ã¢ãå«ããŠããšæžã
ãã®ã¯ãããããå«ã¿ããã£ãŠã®ããšã§ãã
| ãã ãçŸç¶ã§ã¯ Sendmail, Apache, BIND ãšãã£ããå€éšããã®æ»æ
| ã«ãèããªããã°ãªããªããããªçšéã®ãœãããŠã§ã¢ãå«ããŠã
| FreeBSD ã Linux ã® distribution ã®å€ãã§ãã€ããªãé
åžããããš
| ãäžè¬çã«ãªã£ãŠããã®ã¯ãåãããšæããŸãã
> DeleGate ã¯ããã€ããªé
åžã¯ãããŠãœãŒã¹ããããšããããšã§ã
> æèŠã¯äžèŽããããã§ãå¥ã«å¯Ÿç«ç¹ãããªãã§ãããã
> sendmail ããã€ããªã§ãåæèŠãšããããšã§ã
ãã®ãŒããããã?
話ãåºããããããããç§ã¯ãã€ããªã®é
åžã®æ¯éã«é¢ããè°è«ã¯ã
ããããªããšèšã£ãã ãã§ããåæèŠã ãªã©ã¯äžèšãèšã£ãŠãŸããã
èšäºã«æ
å ±ãè©°ã蟌ãããšãå¿æããã®ã¯ãç«æŽŸã§ããããã£ã¡ã«ã°
ãã倢äžã«ãªã£ãŠããã以å€ã®ç¹ããŸã£ããç·©ã¿ãã£ãèšäºã«ãªã£ãŠ
ãŸãã?
話ãæ£æŒ«ã§çŠç¹ããŸã£ãããŒãããŠããŸã£ãŠãããã人ã®èšäºããã
èªãŸãã«ãã©ããŒããããããŸãã«ã€ã調åã«ä¹ã£ãŠããŸã£ãã®ã
ã#define ã䜿ã£ãŠããŠããã¹ã¿ãã¯ã»ãªãŒããŒãããŒã¯èµ·ãããã®
ã¯èµ·ããããªããŠæžãã¡ãããã
ããŒãã
________________________________________________________________
ç¬ å åºä¹(ããã¯ã ããšãã)
># ã®èŠæ Œã§ã¯æŽæ°ã®ãªãŒããŒãããŒã«å¯Ÿããåäœã
># ãªããšãæªå®çŸ©ãïŒãåŠçç³»å®çŸ©ãªããšãããããããªæ®ºçãªïŒïŒïŒ
åŠçç³»å®çŸ©ã§ã¯ãããªãŒããŒãããŒã§ã·ã°ãã«ãçºçããããããšãã§
ããªããªããŸãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
>ä»æ§ãç¶æ³ã«ãã£ãŠã¯ããã§ã ok ã ãšæããŸã.
ã²ãã£ãšããŠãææåãã©ã³ãã®ããšã§ããïŒ
# ã ãšãããš comp ãªè©±é¡ã§ã¯ãªããªããã
>èšèªä»æ§ã«ãã£ãŠã¯ããã³ãã©ãèšå®ãããŠãªããã©ããã®?ããšããèŠåã
>åºãããããšãå¯èœã§ããã. ãŸãã¯, ãããã¯ãã§ãã¯ããªããšãè¯ããã
>ãšãäºãè¡šèšããªããã°ãªããªãããã«ãããšã.
ãã³ãã©ã®èšè¿°ã矩åã¥ãããªãããšåãã§ãããã
>unsigned char ã®ãã€ãæ°ã 1 ã ã£ãã 2 ã ã£ããããã®ã§æµç³ã«ãããŸã§
>ã¯ç§ããããŸãã.
ããã§ãããããã¯æ®å¿µã
typedef unsigned char uint8;
>ããããå
·åãã«æžããŠ, ãã€, å¹çãèœããªãåŠçç³»ããã£ãŠããããšæã
>ãŸã.
ããŒãããã¯éããã§ãããã
>ããããå
·åãã«ããæžããªãèšèªãªã, ããæžããããªãã§ããã. ãã€ã§
>ããã§ãã¯ç¡ãã®ã³ãŒããæžããŠããŸãæç¹ã§é§ç®ãªããããªãããš.
ïŒ
äœã®è©±ã§ããã£ãïŒïŒ
確ã C++ äŸå€åŠçã® *å®è£ * ã ã£ããããªïŒïŒïŒ
ã¡ãã¡ã... ã ãããªã, ãã£ã±ã.
<90fvv0$2gqh$1...@news2.rim.or.jp>ã®èšäºã«ãããŠ
doh...@hf.rim.or.jpããã¯æžããŸããã
dohzono> > unsigned char idx;
dohzono> > ã§ããããæ£çŽãç§ã䜿ã£ãŠããŸãã
dohzono> unsigned char ã®ãã€ãæ°ã 1 ã ã£ãã 2 ã ã£ããããã®ã§æµç³ã«ãããŸã§
dohzono> ã¯ç§ããããŸãã.
ãïœ, C ã®èšèªä»æ§ã§ã¯ unsigned char 㯠1ãã€ããããããŸããã§ããã£
ã? äœããããã¯åŠçç³»äŸå (CHAR_BIT ã§åç
§å¯èœ) ã§ããã©.
--
åå€å±å€§åŠ å·¥åŠéš é»åå·¥åŠç§ å¹³ç°ç 究宀
å°é åç·
> >ä»æ§ãç¶æ³ã«ãã£ãŠã¯ããã§ã ok ã ãšæããŸã.
>
> ã²ãã£ãšããŠãææåãã©ã³ãã®ããšã§ããïŒ
ç§ã¯å®éã«ä»äºã§ãäœãããããªããšãæ€åºãããåæ¢ããããã«äœã£ãŠããã
ãšããä»æ§ (èŠè«) ã«åºã¥ããŠããã°ã©ã ãæžããããšããããŸã.
> >èšèªä»æ§ã«ãã£ãŠã¯ããã³ãã©ãèšå®ãããŠãªããã©ããã®?ããšããèŠåã
> >åºãããããšãå¯èœã§ããã. ãŸãã¯, ãããã¯ãã§ãã¯ããªããšãè¯ããã
> >ãšãäºãè¡šèšããªããã°ãªããªãããã«ãããšã.
>
> ãã³ãã©ã®èšè¿°ã矩åã¥ãããªãããšåãã§ãããã
ããããªã.
> >unsigned char ã®ãã€ãæ°ã 1 ã ã£ãã 2 ã ã£ããããã®ã§æµç³ã«ãããŸã§
> >ã¯ç§ããããŸãã.
ããã¯ã8 ãããã ã£ãã 16 ãããã ã£ããããããšããŠãããŸã.
# Message-ID: <9145sp$bvr$1...@henry.hirata.nuee.nagoya-u.ac.jp>
> typedef unsigned char uint8;
ããã§ã 16 ãããã«ãªãç°å¢ããããŸã.
> >ããããå
·åãã«ããæžããªãèšèªãªã, ããæžããããªãã§ããã. ãã€ã§
> >ããã§ãã¯ç¡ãã®ã³ãŒããæžããŠããŸãæç¹ã§é§ç®ãªããããªãããš.
>
> ïŒ
> äœã®è©±ã§ããã£ãïŒïŒ
>
> 確ã C++ äŸå€åŠçã® *å®è£
* ã ã£ããããªïŒïŒïŒ
C++ ãŸãã¯æ€èšŒè«çã«æžããèšèª. ããã°ã©ã (人é) ãäœãã®ãã§ãã¯ããµ
ãã£ãŠããŸããªãããã« (ãã§ãã¯ãç°¡åãªããã«) 工倫ãããšããŠã, ãã
ã§ãªãããã«ç°¡åã«æžããŠããŸãç°å¢äžã§ã¯æå³ããªãã®ãã, ãšãã話.
ãããªã«ç§ã®è©±ã£ãŠãããã«ããã§ãã?
--
Kazuo Fox Dohzono / doh...@hf.rim.or.jp
[12],(6,9),0,0,2
(4/1449/3742)
<914012$2mb$1...@news01cf.so-net.ne.jp>ã®èšäºã«ãããŠ
kat...@ka2.so-net.ne.jpããã¯æžããŸããã
>> >unsigned char ã®ãã€ãæ°ã 1 ã ã£ãã 2 ã ã£ããããã®ã§æµç³ã«ãããŸã§
>> >ã¯ç§ããããŸãã.
>> ããã§ãããããã¯æ®å¿µã
>> typedef unsigned char uint8;
æè¿ã®åŠçç³»(ISO C:1999 æºæ )ãªããstdint.h ã include ããã°
uint8_t ã䜿ããŸããã
# ãã ãã255 + 1 ã 0 ãšã¯éããªãæ°ãããã
ã§ã¯ã
--
Takuya SHIOZAKI / ASTEC Products, Inc.
In article <919ifv$9h0$1...@tokyonet-entrance.astec.co.jp>,
tshi...@astec.co.jp (Shiozaki Takuya) writes:
>æè¿ã®åŠçç³»(ISO C:1999 æºæ )ãªããstdint.h ã include ããã°
>uint8_t ã䜿ããŸããã
䜿ãããšã¯éããªãããã§ãã
7.18.1.1 Exact-width integer types
...
3 These types are optional. However, if an implementation
provides integer type with widths of 8, 16, 32, or 64 bits,
it shall define the corresponding typedef names.
># ãã ãã255 + 1 ã 0 ãšã¯éããªãæ°ãããã
uint8_t ã䜿ããåŠçç³»ãªãã(uint8_t)(255 + 1) ã 0 ã«ãªãããšã
ä¿èšŒãããŸãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
> çå±±ïŒ ïŒ°ïŒŠïŒµã§ãã
...
> uint8_t ã䜿ããåŠçç³»ãªãã(uint8_t)(255 + 1) ã 0 ã«ãªãããšã
> ä¿èšŒãããŸãã
æŽæ°ã®overflowã¯ãã©ãããããªãããšã«æ±ºãŸã£ããšããããšã§ãã?
--
Tomoaki Nishiyama
e-mail:tom...@nibb.ac.jp
National Institute for Basic Biology
>> uint8_t ã䜿ããåŠçç³»ãªãã(uint8_t)(255 + 1) ã 0 ã«ãªãããšã
>> ä¿èšŒãããŸãã
>æŽæ°ã®overflowã¯ãã©ãããããªãããšã«æ±ºãŸã£ããšããããšã§ãã?
笊å·ç¡ãæŽæ°ã®æŒç®ãæŽæ°ãã笊å·ç¡ãæŽæ°ãžã®å€æã§ã¯ãªãŒããŒãããŒ
ã¯èµ·ããŸãããïŒcf. 6.2.5, 6.3.1.3ïŒ
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
>ç§ã¯å®éã«ä»äºã§ãäœãããããªããšãæ€åºãããåæ¢ããããã«äœã£ãŠããã
>ãšããä»æ§ (èŠè«) ã«åºã¥ããŠããã°ã©ã ãæžããããšããããŸã.
ãç°åžžã«æ°ã¥ããã極åçæéã§ãã®æšã芪ãžéç¥ãããã§ããã
確ãã«ããããã®ã¯è¯ãããããšã§ãã
ããã§æ³šæãã¹ãããšã¯ããšã©ãŒãæ€åºã§ããã¢ãžã¥ãŒã«ãšã
ãšã©ãŒã«å¯Ÿããæåã®åŠçœ®ã«è²¬ä»»ãæã€ã¢ãžã¥ãŒã«ãã
ããæ§é åãããããã°ã©ã ã»ã©å¥ã¢ãžã¥ãŒã«ã§ããå Žåãå€ã
ããšã§ãã
ã©ã®ããã«ãåæ¢ãããã®ããã«ã€ããŠç¹æ®ãªä»®å®ãïŒãã°ãã°æ²¢å±±ïŒ
ããªããã°ãªããªãã®ãããšã©ãŒåŠçãèšèªä»»ãã«ããããšãã
æ±çšã¢ãžã¥ãŒã«ã®äžã§å®çŽã« exit ããããšã§ãã
ãã®å察ã§ãã©ã®ããã«ãåæ¢ãããã®ãã決ãæã¡ããã«ãããã®ãã
è«žèšèªã®ãäŸå€ãµããŒããã㮠<setjmp.h> ã§ãããã
ããã§ã
>> ãã³ãã©ã®èšè¿°ã矩åã¥ãããªãããšåãã§ãããã
>
>ããããªã.
ãã®è©±ãé åã®ã¬ã³ãžãã§ãã¯ãå ãã¿ã§ããããã
>> typedef unsigned char uint8;
>
>ããã§ã 16 ãããã«ãªãç°å¢ããããŸã.
ä»ã®æ¹ã«æžãããŠããŸããŸãããã
ãæŽæ°ã®é·ãã«è²¬ä»»ãæã€ã圹å²ã®ã¢ãžã¥ãŒã«ã
çšæãããšããæå³ã§ããïŒãã®å ŽåãããããïŒ
>C++ ãŸãã¯æ€èšŒè«çã«æžããèšèª. ããã°ã©ã (人é) ãäœãã®ãã§ãã¯ããµ
>ãã£ãŠããŸããªãããã« (ãã§ãã¯ãç°¡åãªããã«) 工倫ãããšããŠã, ãã
>ã§ãªãããã«ç°¡åã«æžããŠããŸãç°å¢äžã§ã¯æå³ããªãã®ãã, ãšãã話.
>
>ãããªã«ç§ã®è©±ã£ãŠãããã«ããã§ãã?
ãã®æ®µèœã®ã¿ã
æ®æ®µãããŸã䜿ããªãèšãåãããããããããç¥ããŸããã
èŠããã«ããã§ãã¯ïŒã¢ã«ãŽãªãºã ïŒã®æé©åãããã°ã©ãã®è²¬ä»»ç¯å²ã«
ããããšãæå³ããªãïŒïŒïŒãšããããšã§ããããããåã«ãæžããŸãããã
é©åãªãã§ãã¯ãæžããããšããããã€ã¹ã®æ¥µæ§ã *ééããªãããã«
æ°ãã€ããèœå* ãªã©ã¯ãããã«ãªã人ã«ã¯å¿
é ã ãšæãã®ã§ãã
ããšãéå
·ãã©ããªã«é²æ©ããŠããçµå±ãã®å
ã«ãŸãééããŠã¯
ãªããªãããšãåºãŠããŸããåæ¥ã¯ãã£ãŠããã§ãããããããã
ããããã®æã¡å Žã§ééããªãããšã¯å¿
èŠã§ãã
>># ã®èŠæ Œã§ã¯æŽæ°ã®ãªãŒããŒãããŒã«å¯Ÿããåäœã
>># ãªããšãæªå®çŸ©ãïŒãåŠçç³»å®çŸ©ãªããšãããããããªæ®ºçãªïŒïŒïŒ
>
>åŠçç³»å®çŸ©ã§ã¯ãããªãŒããŒãããŒã§ã·ã°ãã«ãçºçããããããšãã§
>ããªããªããŸãã
ãªãã§ããïŒ
ãããããã°ãããå°ã詳ããæèŽã§ããã°å¹žãã§ãã
ïŒç¹ã«ãæªå®çŸ©ã®å ŽåãšãåŠçç³»å®çŸ©ã®å Žåã®éãã«ã€ããŠïŒ
In article <91ir64$hca$2...@news01bd.so-net.ne.jp>
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
> >ç§ã¯å®éã«ä»äºã§ãäœãããããªããšãæ€åºãããåæ¢ããããã«äœã£ãŠããã
> >ãšããä»æ§ (èŠè«) ã«åºã¥ããŠããã°ã©ã ãæžããããšããããŸã.
>
> ãç°åžžã«æ°ã¥ããã極åçæéã§ãã®æšã芪ãžéç¥ãããã§ããã
äœèšãªãã¹ã¢ã¯ã»ã¹ãèš±ãããªãã£ãã®ã§ di ã㊠halt ããããã«ããŸãã.
# åå¹Žä»¥äž 24h 皌åããŠããŠåºè·æã®ããŒããŠã§ã¢ãã¹ã以å€ã§åæ¢ãããš
# ãã話ã¯ãŸã ãããŸãããã©.
> èŠããã«ããã§ãã¯ïŒã¢ã«ãŽãªãºã ïŒã®æé©åãããã°ã©ãã®è²¬ä»»ç¯å²ã«
> ããããšãæå³ããªãïŒïŒïŒãšããããšã§ãããããã
ãã, çµæçã«ãã§ãã¯ããã³ãŒãã (å) èªåçã«çæå¯èœãªèšèªãšããã§
ãªãèšèªãšã¯ååã«æ±ããªãã®ã§ã¯ãªãããšããããšã§ã.
> åã«ãæžããŸããããé©åãªãã§ãã¯ãæžããããšããããã€ã¹ã®æ¥µæ§ã *
> ééããªãããã«æ°ãã€ããèœå* ãªã©ã¯ãããã«ãªã人ã«ã¯å¿
é ã ãšæã
> ã®ã§ããããšãéå ·ãã©ããªã«é²æ©ããŠããçµå±ãã®å ã«ãŸãééããŠã¯ãª
> ããªãããšãåºãŠããŸããåæ¥ã¯ãã£ãŠããã§ããããããããããããã®
> æã¡å Žã§ééããªãããšã¯å¿
èŠã§ãã
ã§ã, 人éã®ããããšã§ããããã.
In article <91ir63$hca$1...@news01bd.so-net.ne.jp>,
"Yoshiki Kataoka" <kat...@ka2.so-net.ne.jp> writes:
åŠçç³»å®çŸ©ã¯ã
3.10 implementation-defined behavior: Behavior, for a
correct program construct and correct data, that depends on
the characteristics of the implementation and that each
implementaion shall document.
ãšèŠå®ãããŠããŸããã€ãŸãããæ£ããããã°ã©ã ã®åäœãã«ã€ããŠã®
èŠå®ã§ãã
ããªãŒããŒãããŒã§ã·ã°ãã«ãçºçããããã®ã¯ãããã°ã©ã ããšã©ãŒ
ãèµ·ãããŠããããšãéç¥ããããšããŠããããã§ããã®åäœã¯åŠçç³»
å®çŸ©ã§ã¯èŠå®ã§ããŸããã
ããããªãŒããŒãããŒã®åäœãåŠçç³»å®çŸ©ãšãããªãã°ããã®ãšãã®ç®
æ³ïŒarithmeticïŒãååŠçç³»ãèŠå®ããªããã°ãªããŸãããå³ã¡ãã©ã®
ãããªæŒç®çµæãåŸãããããèŠå®ãããããã§ãã·ã°ãã«ãçºçãã
ãïŒïŒæŒç®çµæãåŸãããªãïŒããšãã§ããªããªããŸãã
--
çå±±ïŒ ïŒ°ïŒŠïŒµ
>äœèšãªãã¹ã¢ã¯ã»ã¹ãèš±ãããªãã£ãã®ã§ di ã㊠halt ããããã«ããŸãã.
ããããªãã»ã©ããä»æ¹ãªãã§ããã
exit ã ã®èšèªä»»ãã ã®ã§ã¯ä»®å®ããããªãèŠä»¶ã®ç§éžãªäŸã§ããã
>> èŠããã«ããã§ãã¯ïŒã¢ã«ãŽãªãºã ïŒã®æé©åãããã°ã©ãã®è²¬ä»»ç¯å²ã«
>> ããããšãæå³ããªãïŒïŒïŒãšããããšã§ãããããã
>
>ãã, çµæçã«ãã§ãã¯ããã³ãŒãã (å) èªåçã«çæå¯èœãªèšèªãšããã§
>ãªãèšèªãšã¯ååã«æ±ããªãã®ã§ã¯ãªãããšããããšã§ã.
ã®å Žåãå¿
é ã®ãã§ãã¯ã¯ã¢ãžã¥ãŒã«ã«å
èµãããããšã§
ãã£ããå¿ããé²ããŸããããã©ã®æ®µã§å¿
é ãªã®ããã¯ã£ãã
ãããªããã
確ãã«ãååã«ã¯æ±ããªãã§ãããã
>ã§ã, 人éã®ããããšã§ããããã.
æãã§ãããã
ç¡çèšã£ãŠãã¿ãŸããã§ããã
ãããããæèªãããŠé ããŸããã
>åŠçç³»å®çŸ©ã¯ã
>
> 3.10 implementation-defined behavior: Behavior, for a
> correct program construct and correct data, that depends on
> the characteristics of the implementation and that each
> implementaion shall document.
>
>ãšèŠå®ãããŠããŸããã€ãŸãããæ£ããããã°ã©ã ã®åäœãã«ã€ããŠã®
>èŠå®ã§ãã
>
>ããªãŒããŒãããŒã§ã·ã°ãã«ãçºçããããã®ã¯ãããã°ã©ã ããšã©ãŒ
>ãèµ·ãããŠããããšãéç¥ããããšããŠããããã§ããã®åäœã¯åŠçç³»
>å®çŸ©ã§ã¯èŠå®ã§ããŸããã
ã€ãŸãã
ã»ã·ã°ãã«ãçºçããã®ã¯ãæ£ãããªãããã°ã©ã ãã§ãã
ã»ããã°ã©ã ããæ£ãããªããããã«ã¯ãçµæãèŠå®ã§ããªã
ãšããããšã§ããã
ïŒç¹ç®ãåããŸããã§ããããã
ããããèªåã§èª¿ã¹ãŠã¿ãããšæããŸãã
ããããšãããããŸããã
>ããããªãŒããŒãããŒã®åäœãåŠçç³»å®çŸ©ãšãããªãã°ããã®ãšãã®ç®
>æ³ïŒarithmeticïŒãååŠçç³»ãèŠå®ããªããã°ãªããŸãããå³ã¡ãã©ã®
>ãããªæŒç®çµæãåŸãããããèŠå®ãããããã§ãã·ã°ãã«ãçºçãã
>ãïŒïŒæŒç®çµæãåŸãããªãïŒããšãã§ããªããªããŸãã
èªåã§èª¿ã¹ããšèšã£ãŠãããŠäœã§ããã
ãåäœãã®ãã¡ããæŒç®çµæããé€ãæ§æèŠçŽ ã
ååŠçç³»ã®ç¹åŸŽã«äŸåããŠããŠãè¯ãããã«
æã£ãŠããŸãã