Archive

Archive for August, 2015

American Fuzzy Lop (afl-fuzz) vs. John Regehr

August 6th, 2015 No comments

afl-fuzz[1] 是一个很不错的 fuzzer. 而 John Regehr 大牛觉得有些方面还是不行, 于是写了一篇博客[2], 给出来一个 C 程序, 吐槽了一把.

C 程序是这样子的:

这里的触发 crash 的输入需要触发 n + 1000000 == 0, 进而触发一个 3 / 0 的除法错误.

No Data, No Talk. 我跑了下这个 testcase. 你猜怎么着? 竟然给 afl-fuzz 随机试出来了 🙂

afl-fuzz found the bug (finally)

 

afl-fuzz 给出来的 input 是这样子的:

-1000000#23#

后面的 #23# 不知道怎么出来的, 不相关, 前面的 -1000000 是正确答案.

尝试了 125 万次, 跑了7天. 嗯. John Regehr 说的也是对的, 在这个 Case 中, 路径覆盖没有帮上忙, 基本上都是纯随机在暴力搜索.

 

[1] http://lcamtuf.coredump.cx/afl/

[2] http://blog.regehr.org/archives/1238

 

[书] 短码之美

August 5th, 2015 No comments

http://book.douban.com/subject/5416095/

大赞. 值得买. 刻苦钻研技术的人总是让人觉得有点敬畏.

(这不是让你写出更规范代码的书. 不做 ACM OJ 的人可能就不太能理解为啥要尽可能的减少几个字节.)

作者 Ozy 本名岡田佑一,是出生于日本大阪的一位短码高手。他花费相当长的时间提升短码编程技术,进而将其发展成一种技能,曾获得程序设计大赛的冠军。他开办过程序设计方面的培训班,目前致力于数学教育和程序设计师的培养工作。

ibus-pinyin vs. ibus-libpinyin on ubuntu 14.04

August 4th, 2015 No comments

安装了 Ubuntu 14.04 之后, ibus-pinyin/ibus-sunpinyin/ibus-googlepinyin会出现各种诡异的bug. 以下是我曾经遇到的:

  • 数字’e’无法输入(输入了没反应);
  • 从12.04直接升级的系统, 输入的字母映射全部是错误的;
  • Googlepinyin 的候选词显示滞后一个翻页键, 导致翻页选择总是错误的;
  • ibus-pinyin 模式下双击选中一段文字, 文字会被删除(这个简直不能忍).

搜索到最后从 ArchWiki 上知道的原因:

ibus-pinyin – Intelligent Chinese Phonetic IME for Hanyu pinyin and Zhuyin (Bopomofo) users. Designed by IBus main author and has many advance features such as English spell checking. Package currently not maintained and partly broken with latest ibus base. Use ibus-libpinyin instead.

解决方法就是卸载掉 ibus-pinyin, 安装 ibus-libpinyin, 并在 ibus 语言选择中重新选择”智能拼音”.

Ubuntu 14.04 已经出来一年多了, 这个包依赖关系还没有解决. 这或许能够体现出来FOSS在桌面上的窘境.

Fuzzer vs. Parser

August 3rd, 2015 No comments

如果给定一个 Fuzzer, 可以生成任意长度的文本 I;

一个语法未知的 Parser 读入 I, 并给出接受和拒绝两种状态的一种.

假设 Parser 接受的语法是上下文无关的(CFG), 那么 Fuzzer 是否能够判断出完整的语法?

看起来是一个很直观的问题, 可能有确定的结论?