博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libevent evhttp_uri_get_query coredump
阅读量:7156 次
发布时间:2019-06-29

本文共 549 字,大约阅读时间需要 1 分钟。

hot3.png

昨天和前端同事调试,拿到一个形式如下的http uri:

放到浏览器上一敲,在服务端日志里看到的是:

服务端调用

const char* uri = evhttp_request_get_uri(req);

char* decoded_uri = evhttp_decode_uri(uri);

进行decode之后可以变回原来的uri:

接下来调用 struct evhttp_uri* parsed_uri = evhttp_uri_parse(decoded_uri); 进行uri解析分段。

在uri的business_data里包含了uri的保留字符 [] : 。调用evhttp_uri_parse的时候无法正常解析uri,返回NULL。在下一步的evhttp_uri_get_query的时候传入空指针发生了coredump。

可见libevent的evhttp_uri_get_query方法并不是安全的方法,未做参数检查。

总结:

  1. 在调用libevent包含指针形参的方法前,需要对要传入的参数做条件判断;

  2. uri中存在json数据时候需要做转义或者base64的编码;

参考链接:

转载于:https://my.oschina.net/u/1176097/blog/422473

你可能感兴趣的文章
手动实现 SpringMVC
查看>>
thinkphp 验证码的使用
查看>>
从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值
查看>>
查看oracle/mysql数据库版本号
查看>>
解决问题 Parallels Desktop虚拟机提示网络适配器不存在
查看>>
C++——explicit
查看>>
J.U.C|一文搞懂AQS(转)
查看>>
链式链表
查看>>
【321】python进程监控:psutil
查看>>
软工作业PSP与单元测试训练
查看>>
20个常用Expression Blend设计开发技巧 (2)
查看>>
C#:rdlc - 报表实例
查看>>
每个.NET 开发人员应该下载的十个必备工具
查看>>
Delphi中WebService服务
查看>>
微软产品组里的十一类人
查看>>
黑客盯上公益事业 洛阳中心血站被挂马
查看>>
mysql 的书籍推荐~
查看>>
HTML5学习笔记
查看>>
Eclipse helios 上编写arduino程序并进行烧录
查看>>
基于ArcGIS10.0和Oracle10g的空间数据管理平台二(C#开发)-登录功能模块
查看>>