准备FreeBSD-SA-06:01
受影响的版本:FreeBSD 6.0-RELEASE, FreeBSD 5.4-STABLE, FreeBSD 6.0-STABLE, FreeBSD 7.0-CURRENT
问题描述:已经确认,在内核中存在一处程序设计缺陷,这一缺陷会导致内核中的某个不确定位置的内存被返回给用户态应用程序。
共691篇文章。
受影响的版本:FreeBSD 6.0-RELEASE, FreeBSD 5.4-STABLE, FreeBSD 6.0-STABLE, FreeBSD 7.0-CURRENT
问题描述:已经确认,在内核中存在一处程序设计缺陷,这一缺陷会导致内核中的某个不确定位置的内存被返回给用户态应用程序。
在内核里面,程序的结构大概是这样:
函数开始……
struct bar foo;
某些处理(没动foo),然后……
strlcpy(foo.field, k->field, sizeof(k->field));
其他对foo其他字段的赋值处理……
最后
error = copyout(&foo, someaddress, sizeof(foo));
现在问题来了,上面这些东西的问题是什么?应该如何解决?
一张官方 (FreeBSD Mall) 版本的FreeBSD/i386 6.0-RELEASE DVD。今天(12.27)邮寄到家里了。
pure-ftpd是一款非常好的FTP服务软件。FreeBSD本身提供了两个很好的FTP服务器,一个是传统的BSD ftpd(8),另一个是来自NetBSD的lukemftpd(8),尽管性能和安全性都不错(做过全面代码审计),但配置虚拟用户会比较麻烦。
在 FreeBSD 开发手册 中,有一部分内容介绍了关于系统调用。里面有这样一段话:
Linux is a UNIX like system. However, its kernel uses the same system-call convention of passing parameters in registers MS-DOS does. As with the UNIX convention, the function number is placed in EAX. The parameters, however, are not passed on the stack but in EBX, ECX, EDX, ESI, EDI, EBP:
open:
mov eax, 5
mov ebx, path
mov ecx, flags
mov edx, mode
int 80h
This convention has a great disadvantage over the UNIX way, at least as far as assembly language programming is concerned: Every time you make a kernel call you must push the registers, then pop them later. This makes your code bulkier and slower. Nevertheless, FreeBSD gives you a choice.
可能有人会问了,为什么说 UNIX way (将参数压栈) 更好呢?
整理www.freebsd.org.cn,发现给自己设了个套,而且越缠越紧……文档的没有!!!!!:(:(:(
升级某台服务器的时候,一怒之下删除了所有port,删完发现自己敲下的命令是——
After it has runned 4.x series for a too long time, finally kensmith@ has stepped up to upgrade it.
Needless to say what this means, just upgrade all your boxes to FreeBSD 6.x. FreeBSD 6.0-RELEASE is the best release we have released in the recent years, and the best .0 release ever, as proven by many installations and developers’ code review.
很多以前执行的不很好的、很Linux的程序,如Evolution、Firefox等等,libmap一下之后,突然都变得非常顺畅了……