首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏贺嘉的专栏

    一篇文章带你看懂 Cloudflare 信息泄露事件

    之前 Cloudflare 的 HTML 解析一直使用标准的 Ragel 有限状态机编译器( www.colm.net/open-source/ragel/) ,但是前段时间Cloudflare为了提升代码效率对解析器进行了升级 但是问题出在了开发团队错误的使用了 Ragel 的编码规范,Ragel 的代码会被自动编译为 C 语言的代码,而 C 语言允许更加灵活的使用指针。 /* generated code */ if ( ++p == pe ) goto testeof; 以上Ragel自动生成的代码会导致指针越界,也就是常见的内存泄露问题。 但是之前Ragel实现的HTML 解析模块单独使用并不会触发信息泄露问题,而是仅当基于 Ragel 解析器与 Cloudflare 升级后的 cf-html 解析器一起工作的时候才会触发这一问题。

    3.8K00发布于 2017-02-26
  • 来自专栏全栈学习之路

    案例分析:常见的Java代码优化法则

    我这里选用的是 ragel,你也可以使用类似 javacc 或者 antlr 之类的工具。它通过语法解析和简单的正则表达式,最终可以生成 Java 语法的代码。 pairEnd) >pairBlockBegin %pairBlockEnd ; main := any* pairBlock any*; 把文件定义好之后,即可通过 ragel ragel -G2 -J -o P.java P.rl 完整的代码有点复杂,我已经放到了仓库中,你可以实际分析一下。 我们来看一下它的性能。 从测试结果可以看到,ragel 模式的性能是 regex 模式的 3 倍还多,SQL 越长,效果越明显。 Benchmark Mode Cnt Score Error Units RegexVsRagelBenchmark.ragel thrpt

    52711编辑于 2024-08-27
  • 来自专栏代码GG之家

    vlc for android 完全编译

    install automake ant autopoint cmake build-essential libtool \ patch pkg-config protobuf-compiler ragel

    2.4K50发布于 2018-02-02
  • 来自专栏FreeBuf

    Cloudflare泄露用户信息长达数月:系“编程错误”导致

    该解析器用Ragel(一种有限状态机编译器)编写,后转换成C语言源码。这段代码存在一个缓冲区溢出漏洞,可由网页上不成对的HTML标签触发,本是作为指针检查机制来防止内存覆盖的。(如下) ?

    1.2K60发布于 2018-02-23
  • 来自专栏独行猫a的沉淀积累总结

    嵌入式linux应用开发之常用shell脚本总结

    olddir=`pwd` cd $srcdir #echo -n "checking for ragel... " #which ragel || { # echo "You need to install ragel... See http://www.complang.org/ragel/" # exit 1 #} echo -n "checking for pkg-config... " which pkg-config

    2K10编辑于 2022-01-07
  • 来自专栏入侵检测系统

    网络入侵检测系统之Suricata(一)--概览

    Suricata it can be used to perform multi pattern matching (mpm).首先安装一下hyperscan:apt-get install cmake ragel​apt-get

    2.6K11编辑于 2024-03-20
  • 来自专栏让技术和时代并行

    Go 的最佳正则表达式替代方案

    当然,对于这个特定问题,有一些很酷的解决方案,例如Ragel或re2c。然而,对于我的项目来说,暂时掌握这些精细技术似乎不太切实际。

    2.8K40编辑于 2023-09-07
  • 来自专栏韩曙亮的移动开发专栏

    【流媒体开发】VLC Media Player - Android 平台源码编译 与 二次开发详解 (提供详细800M下载好的编译源码及eclipse可调试播放器源码下载)

    提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件; -- protobuf : 全称 protocol buffer, google 的一种数据交换的格式,它独立于语言,独立于平台; -- ragel 安装命令 : sudo apt-get install -y ant autoconf automake cmake gawk gcc g++ libtool m4 patch pkg-config ragel

    6K41编辑于 2023-03-27
  • 来自专栏CDN及云技术分享

    C/C ++与Rust的性能

    可能会认为这是“太狭窄”或“太具体”的任务,但是回想一下解析器生成器,例如Ragel或GNU Bison-如果开发这样的解析器生成器,那么您将永远不知道将生成多大的解析器。

    6K30发布于 2020-11-05
领券