发现 liboauth 的一个 bug:FUSE 下 oauth_gen_nonce() 结果异常

原创 2012年03月29日 21:26:37

转载时请注明出处和作者联系方式:http://blog.csdn.net/mimepp
作者联系方式:YU TAO <yut616 at sohu dot com>

关键字: linux,fuse, liboauth,oauth_gen_nonce,oauth_sign_hmac_sha1

这里记录一下遇到的一个 liboauth 结果异常的情况。

例子代码:

http://www.kuaipan.com.cn/file/id_12177787062321391.htm

Error log:
=========================
open_src/fuse_oauth$ make
Compiling hello.c
Building  hello
test/fuse_oauth$ mkdir /tmp/aaa
test/fuse_oauth$ ./hello /tmp/aaa/
test/fuse_oauth$ cat /tmp/aaa/hello
5555555555555555555555
test/fuse_oauth$
test/fuse_oauth$ cat /tmp/aaa/hello
5555555555555555555555
test/fuse_oauth$
test/fuse_oauth$
=========================

but if I remark line 138 (hello.c), which is a call in main function, the result will be correct:
    //oauth_nonce = oauth_gen_nonce();
=========================
test/fuse_oauth$ fusermount -u /tmp/aaa
test/fuse_oauth$ ./hello /tmp/aaa/
test/fuse_oauth$ cat /tmp/aaa/hello
e3BJGRSUFWBXeRF
test/fuse_oauth$
test/fuse_oauth$
test/fuse_oauth$
test/fuse_oauth$ cat /tmp/aaa/hello
EFJuwuxEvWNlJvO4f5nxBTg
=========================

PC: ubuntu 11.10
liboauth-0.9.4
liboauth-dev is installed by apt-get.
It will depends on libcurl4-nss-dev.
I do not compile liboauth by myself.

It seems liboauth is using openssl:
src/config.h:
#define HAVE_OPENSSL_HMAC_H 1
and the USE_NSS is not defined.
Then it will enter line 538:
src/oauth.c
=========================
#  include <openssl/rand.h>
#  define MY_RAND RAND_bytes
#  define MY_SRAND ;
=========================

BTW, auth_signature is NULL too.
http://openapi.kuaipan.cn/1/metadata/kuaipan/UML?oauth_consumer_key=xc8D2NfL9c53vkrP&oauth_nonce=aaaaaaaaaaaaaaa&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1332589513&oauth_token=32a7d5efb0d5442e8e32c6d7518e8239&oauth_version=1.0&oauth_signature=%28null%29

It seems nonce and signature are related to openssl.

如何写出一个让人很难发现的bug?

点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 程序员的日常三件事:写bug、改bug、背锅。连程序员都自我调侃道,为什么每天都在加班?因为我...
  • csdnsevenn
  • csdnsevenn
  • 2018年01月29日 00:00
  • 2700

软件测试-如何快速发现Bug

在高强度的测试工作中,如何快速、有效、准确的开展测试工作,总结。
  • aliuxina
  • aliuxina
  • 2017年02月15日 11:37
  • 1552

一个bug的成本

我想说的当然不是一个bug价值多少钱,因为软件行业因行业不同,公司不同,业务不同,你的软件价值也不同;其实bug用价值来形容当然不合适,更应该用损失或者公司的支出来形容了。         写出本文...
  • xingyu_qie
  • xingyu_qie
  • 2016年03月15日 10:44
  • 1119

一个软件,你测试了一个月都没有发现bug,这说明什么?你怎么办?

给你一个软件,你测试了一个月都没有发现bug,这说明什么?你怎么办? 看到这个题目,一时之间真不知道如何回答,因为的确没有遇到过这样的情况。我的看法是: 1.说明软件已经没有bug了.严格...
  • saroan
  • saroan
  • 2017年10月28日 22:45
  • 319

使用Mybatis出现的一个异常bug

使用Mybatis这个ORM框架进行查询操作的时候,没有任何编译错误,也没有异常抛出,但运行查询的时候,会发现以下错误。java.lang.NoClassDefFoundError: Could no...
  • onedaycbfly
  • onedaycbfly
  • 2017年06月21日 00:35
  • 233

各阶段修改BUG所需成本

PONC是Price of Nonconformance的缩写,是指由于没有第一次做对或做错事而造成人财物的额外浪费。简称:质量成本。质量成本在软件工程里可衡量缺陷代价,如果后期项目出质量问题,后期投...
  • Jerry_1126
  • Jerry_1126
  • 2017年08月28日 22:41
  • 490

【找bug有奖励】:关于加密算法的一个bug,知道答案评论对了支付宝奖励5块

问题s1,s2两个串,s1全部存进s3,s2中与s1不同的存进s3。 这是前缀加密的一道习题 在代码里面的注释写的很清楚了,求问为什么结果会出现如下? 而不是得到 keysabcdfghi...
  • qq_23100787
  • qq_23100787
  • 2015年09月25日 11:12
  • 826

基于FUSE框架的文件系统-课程设计

一、选题背景FUSE(用户空间文件系统)是这样一个框架:它使得FUSE用户在用户态下编写文件系统成为可能,而不必和内核打交道。 FUSE由三个部分组成:linux内核模块、FUSE库 以及mount...
  • u012587561
  • u012587561
  • 2016年03月16日 21:27
  • 1532

遇到BUG时你应该怎么做

下面是拜读Think Python 中关于代码错误的调试方法的一些记录,特意摘出来以便告诫自己 当你的程序不工作时, 1.首先你需要问自己这些问题: ˆ 有没有什么程序应该做却没有发生?...
  • baidu_29609961
  • baidu_29609961
  • 2017年08月26日 17:05
  • 214

如何写好一个bug

前言 因为以前我是做测试的,后来在一家公司转开发了,在开发过程中,每次看到测试人员写的bug就很头痛,bug描述不清晰很是印象解决bug的效率,甚至有些bug的描述是有歧义性和个人主观色彩的,后来...
  • u011546806
  • u011546806
  • 2015年03月06日 11:07
  • 1507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:发现 liboauth 的一个 bug:FUSE 下 oauth_gen_nonce() 结果异常
举报原因:
原因补充:

(最多只允许输入30个字)