服务器进行了调整,所以一切都回到了原点,现在服务器已经稳定下来了。以前的几位。请联系HD。现在我们可以在这里自由的写自己想写的内容了。 :)
* 服务器迁回国内。如有任何问题,敬请使用MSN/GTalk/E-Mail联系我。
* 服务器迁回国内。如有任何问题,敬请使用MSN/GTalk/E-Mail联系我。
"......通过把strcpy更换为有大小限制的字符串复制操作strncpy,就可以使上面的C代码段得到保护。char *safer_copy(const char *source) { char *buffer = new char[10]; strncpy(buffer, source, 10); return buffer; }"
#include <iostream>
char *safer_copy(const char *source)
{
char *buffer = new char[10];
// 这里模拟未初始化的内存
for (int i = 0; i < 16; ++i)
buffer[i] = 'P';
strncpy(buffer, source, 10);
return buffer;
}
int main (int argc, char * const argv[])
{
char *str = "012345678901234567890123456789";
char *what = safer_copy(str);
char *c1 = new char[10];
char *c2 = new char[10];
strncpy(c1, str, 16);
// 基于填零这一事实,只复制15个字符
strncpy(c2, str, 15);
printf("%s", what);
return 0;
}
0x0000000100100080|30 31 32 33 34 35 36 37 38 39 50 50 50 50 50 50|0123456789PPPPPP 0x0000000100100090|30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35|0123456789012345 0x00000001001000a0|30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 00|012345678901234. 0x00000001001000b0|2f 44 65 76 65 6c 6f 70 65 72 2f 41 70 70 6c 69|/Developer/Appli此段代码的输出为:
0123456789PPPPPP0123456789012345012345678901234 strncpy(buffer, source, 10);
buffer[9] = '\0';

00000000 52 49 46 46 00 00 00 00 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt | 00000010 12 00 00 00 01 00 02 00 44 ac 00 00 10 b1 02 00 |........D.......| 00000020 04 00 10 00 00 00 64 61 74 61 12 00 00 00 00 00 |......data......| 00000030 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff |................|
00000000 52 49 46 46 e4 cd a1 03 57 41 56 45 66 6d 74 20 |RIFF....WAVEfmt | 00000010 10 00 00 00 01 00 02 00 44 ac 00 00 10 b1 02 00 |........D.......| 00000020 04 00 10 00 64 61 74 61 c0 cd a1 03 00 00 00 00 |....data........| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
#!/usr/bin/perl
use strict;
use warnings;
open my $fh, '+<', $ARGV[0] or die "$!";
seek($fh, 0, 2);
my $len = tell($fh) - 44;
my $head = pack('A4VA4A4VvvVVvvA4V', 'RIFF', $len + 36, 'WAVE', 'fmt', 16, 1, 2, 44100, 176400, 4, 16, 'data', $len);
seek($fh, 0, 0);
print $fh $head;
close $fh;
00000000 52 49 46 46 26 e0 f6 6d 57 41 56 45 66 6d 74 20 |RIFF&..mWAVEfmt | 00000010 10 00 00 00 01 00 02 00 44 ac 00 00 10 b1 02 00 |........D.......| 00000020 04 00 10 00 64 61 74 61 02 e0 f6 6d 0a 00 00 00 |....data...m....| 00000030 00 00 00 00 00 00 00 00 00 00 ff ff ff ff ff ff |................|
[Sat Mar 06 11:41:16 2010] [warn] FastCGI: (dynamic) server ".../mt.fcgi" (pid .....) terminated by calling exit with status '0' [Sat Mar 06 11:41:44 2010] [warn] FastCGI: (dynamic) server ".../mt.fcgi" restarted (pid .....)
用 Ports 安装 misc/compat5x、misc/compat6x、x11-toolkits/open-motif/。
运行License脚本,同意内述条款。
然后运行pkg_add(1):
$ pkg_add -p /home/你的帐户名/LispWorks -R 下载得到的LispWorks安装包.tgz-p: 由于是非 root 用户,需指定安装路径。
libpthread.so.1 libthr.so.2 libc.so.5 libc.so.6
$ env LD_LIBRARY_PATH=/usr/local/lib/compatX11 ./lispworks-personal-5-1-1-x86-freebsd(请按实际情况修改文中所提到的步骤)
white-space: pre-wrap;