Puffs 安全地解析不受信任的文件格式

开源网站开源项目 24-05-09 17:31:20

Puffs,全名为 Parsing Untrusted File Formats Safely ,是 Google 开源的一个用于特定领域的语言和库,可安全地解析不受信任的文件格式,包括图像、音频、视频、字体和压缩档案等。

与 C 语言不同,Puffs 对于缓冲区溢出、整数算术溢出和空指针解引用是非常安全的。Puff 和其他内存安全语言之间的主要区别在于,所有这些检查都是在编译时完成的,而不是在运行时完成的。

Puffs旨在像 Go 或 Rust 一样生成安全的软件库,同时能像 C 一样快,可以在任何使用 C 库的地方使用。但需注意的是,Puffs 不是一种通用的编程语言,虽然在技术上可行,但似乎不值得去写一个专门的 Puffs 编译器出来。

$gitdiffdiff--gita/std/gif/decode_lzw.puffsb/std/gif/decode_lzw.puffsindexf878c5e..b43443d100644---a/std/gif/decode_lzw.puffs+++b/std/gif/decode_lzw.puffs@@-97,8+97,8@@pubfunclzw_decoder.decode?(dstptrbuf1,srcptrbuf1,src_finalbool)(){//typechecking,boundscheckingandcodegenerationforit).in.dst.write?(x:s)-ifuse_save_code{-this.suffixes[save_code]=casu8+ifuse_save_codeand(c<200){+this.suffixes[save_code]=(c+1)asu8this.prefixes[save_code]=prev_codeasu16}$puffsgenstd/gifgenwrote:/home/n/go/src/github.com/google/puffs/gen/c/gif.cgenunchanged:/home/n/go/src/github.com/google/puffs/gen/h/gif.h$puffsteststd/gifgenunchanged:/home/n/go/src/github.com/google/puffs/gen/c/gif.cgenunchanged:/home/n/go/src/github.com/google/puffs/gen/h/gif.htest:/home/n/go/src/github.com/google/puffs/test/c/gifgif/basic.cclangPASS(8testsrun)gif/basic.cgccPASS(8testsrun)gif/gif.cclangFAILtest_lzw_decode:bufs1_equal:wi:got19311,want19200.contentsdifferatbyte3(inhex:0x000003):000000:dcdcdc0000d9f5f9f6dfdc5f393a3a3a..........._9:::000010:3a3b618ec8e4e4e4e5e4e60000e4bbbb:;a.............000020:eded8f91919190909090919091929192................000030:919192929191929393f0f0f0f1f1f2f2................excerptsofgot(above)versuswant(below):000000:dcdcdcdcdcd9f5f9f6dfdc5f393a3a3a..........._9:::000010:3a3a618ec8e4e4e4e5e4e6e4e4e4bbbb::a.............000020:eded8f91919190909090909091919191................000030:919191919191919393f0f0f0f1f1f2f2................gif/gif.cgccFAILtest_lzw_decode:bufs1_equal:wi:got19311,want19200.contentsdifferatbyte3(inhex:0x000003):000000:dcdcdc0000d9f5f9f6dfdc5f393a3a3a..........._9:::000010:3a3b618ec8e4e4e4e5e4e60000e4bbbb:;a.............000020:eded8f91919190909090919091929192................000030:919192929191929393f0f0f0f1f1f2f2................excerptsofgot(above)versuswant(below):000000:dcdcdcdcdcd9f5f9f6dfdc5f393a3a3a..........._9:::000010:3a3a618ec8e4e4e4e5e4e6e4e4e4bbbb::a.............000020:eded8f91919190909090909091919191................000030:919191919191919393f0f0f0f1f1f2f2................puffs-test-c:sometestsfailedpuffstest:sometestsfailed
[Puffs 安全地解析不受信任的文件格式]相关推荐
dogo Go 程序自动构建工具

dogo Go 程序自动构建工具

dogo帮助GO语言开发者快速调试程序。dogo会监控源文件的修改情况,当任何受监控文件发生改动,都会自动重……...

Pipe Go 开源博客平台

Pipe Go 开源博客平台

简介 Pipe是一款小而美的开源博客平台,通过黑客派账号登录即可使用。 动机 产品层面: 市面上缺乏支持多……...

NSD DNS 服务器

NLnet实验室 Name Server Daemon(NSD)是权威的DNS服务器。 它被开发用于在速度,可靠性,稳定性和安全……...

vex JavaScript 对话框

vex JavaScript 对话框

vex 是一个现代的对话框库,具有很高的可配置性,易于样式化,并且不受干扰。具有清晰简单的API,可在移……...

tiger NoSQL 数据库

tiger NoSQL 数据库

erlang开发的开源高可靠性nosql数据库tiger介绍 可靠性: 写:对于n=2f+1 机器集群,在f台机器宕机的情况……...

今日开源
  1. VisIt 图形化科学数据分析工具

    VisIt 图形化科学数据分析工具

    VisIt 是一种交互式并行可视化访问和图形的分析工具,用来查看科学数据。用户可以从他们能快速生成可视化数据,随着时间而动态显示,操纵他们,保存用来展现的结果图像。Visit含有丰富套可视化功能,以便你可以各种不同……

    开源软件 2024-05-20

  2. Meta2d.js 可视化在线绘图引擎

    Meta2d.js 可视化在线绘图引擎

    乐吾乐 Le5le Meta2d.js是一个实时数据响应和交互的2d引擎,可用于Web组态,物联网,数字孪生等场景。。 在线使用 在线使用 为什么使用 新引擎 数据+ 算法 + 风格 = 栩栩如生; 数据为核心、数据驱动显示; 多状……

    开源软件 2024-05-20

  3. Pony Actor 模型编程语言

    Pony 是一个面向对象的基于 Actor 模型的安全而且高性能的编程语言。Pony 提供 Sublime 和 Atom 编辑插件,同时很快将提供 vim 和 Visual Studio 支持。可使用 LLDB 和 GDB 进行调试。 Pony 兼容 C 程序,其编译器……

    开源软件 2024-05-20

返回顶部小火箭