< 返回版块

ChaosBot 发表于 2018-09-22 13:13

Tags:rustnews

str::repeat曝安全漏洞

官方目前正在申请CVE,目前官方已经修复此漏洞,将在9.25发布Rust 1.29.1中稳定此修复。

标准库中的str :: repeat函数允许重复字符串固定次数,返回最终的字符串。最终字符串的容量通过相乘来计算 字符串的长度,这个计算可能会溢出。

str :: repeat的其余实现包含不安全的代码,它依赖于具有计算容量的预分配Vec。在整数溢出时,预分配容量将小于实际需要的容量,然后在分配的缓冲区之外写入,导致缓冲区溢出。

这个漏洞和VecDeque那个类似。

受影响的版本

虽然str :: repeat函数自1.16.0以来一直存在于Rust中,但是这个 漏洞被引入标准库中是在2018年5月10日发布的1.26.0稳定版中。

原文

事后诸葛亮:

查看了一下修复的代码,问题主要是在 slice::repeat方法中。

修复代码就简单了,加检查就好,整数溢出即panic

  let mut buf = Vec::with_capacity(self.len().checked_mul(n).expect("capacity overflow"));

Rust修复源码位置


Niko工作时间:使用GDB调试Rust代码

原文


Rayon的力量

作者在工作中使用sklearn(一个Python第三方提供的非常强力的机器学习库)的内置工具进行余弦相似度查询,并行性不足,并且会产生很多OOM(内存不足)错误。他们还使用了Gensim和一些其他工具,往往会使用大量内存。

最终他厌倦了这一切,拿起了Rust,装备了Serde,序列化了查询所用的JSON矩阵,架起了Rayon,最终得到了一个成功的并行故事。 480G的内存只用了不到3G。

原文

img


在FFI中进行不安全的冒险

可以算作一个FFI和Unsafe的教程

原文


RPCS3 仿真器进度报告

通过gfx-rs支持了macOS

原文


一次项目编程语言选择之旅

作者要为新项目选择语言,考量了诸多语言的特点,最终选了Rust。可以看看他的思考过程。

原文


C++ Lifetime profile v1.0 发布

用于检测C++代码中 悬空指针/迭代器/ string_views / spans /等常见情况。

估计是跟Rust学的

原文


新库 cargo-stabilize

可以帮助开发者将Cargo.toml中所有使用通配符标注的crate替换为最新版,包含依赖项

cargo-stabilize


LLVM 7.0发布了

原文


评论区

写评论

还没有评论

1 共 0 条评论, 1 页