#2391·aria2

'SocketCore::setIpDscp' 中负值的转换

作者: 2rr0r4o3创建于 2026年8月24日更新于 2026年8月24日

页:1 SetIpDscp ' 采取int'并将其左移为2个。 -dscp'的登记最低为0,最高为0,因此接受最高为INT64 MAX'的任何数值;备选:getAsint ' 将其划入`int',在到达时通常为负数。 移动左侧的负值是未定义的行为 。

详细情况

/ * src/SocketCore.h:142-148 */(英语:
142 // 设置 DSCP 字节
143 无效应用程序IpDscp();
144 静态空位集 IpDscp( int ipDscp)
145个{
146 / 此处我们为 IPTOS 选项准备 DSCP 值, 该选项设置整个 DS 字段
147 ipDscp  = ipDscp → 2; 2.
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

登记:

/ * src/可选 Handler Factory.cc: 666 */ /.
666 option Handler* op(新编号可选Handler(PREF DSCP,TEXT DSCP,"0","0");

数字可选汉德勒(pref, desc, defaultValue, min, max, shortName)'只给出了min',因此`max ' 保持默认状态,不强制执行上限。 选项和移位之间没有任何东西将范围缩小到字段实际持有的6位.

呼叫网站为`src/Context.cc:224':

224 SocketCore:: setIpDscp(op->getAsInt(PREF DSCP)); ; 页面存档备份,存于互联网档案馆.

GetAsInt'已经将strtol''的长'字划入int32 t',此处另行存档。 --dscp=2147483647' 抵达时完好无损,班次外溢;--dscp=2147483648',较大的到达时已经是负数,而班次本身是UB.

需要两个改变,要么单独一个使这一行沉默。 给出其实际范围为“可选汉德勒事实”。 翻译: 备选汉德勒* op(新编号可选汉德勒(PREF DSCP,TEXT DSCP,"0","0","0","63");

并且阻止`Get Asint'悄悄地缩小范围。

• PoC

自动重新配置 - i Mkdir 建设 - 桑 克德 建设 - 桑 CC=克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克昂克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克朗克 CPPFLAGS="-fsanitize=地址,未定义-fsanitize=vptr-fno-omit-frame-指针-g3-O1"? LDFLAGS="-fsanitize=地址,未定义-fsanitize=vptr"? ./ 配置 -- disable-nls -- with-openssl -- without- gnutls -- with-libxml2\

  • 与-sqlite3 - 与-libz - 无-libsh2 - 无- libcares
    -- 可控-可控-可控-可控-金属链接 成-j"元(nproc)"-C 道口 成-j"(nproc)"-C src

2147483647 2147483648 922337303684775807中的五人; UBSAN OPTIONS=print sacktrace=1./src/aria2c-dscp="$V"-干-跑=正? --max-tries=1 -- dir=/tmp/poc --no-conf= true http://127.0.0.1:1/x 互联网档案馆的存檔,存档日期2013-12-02. 已执行

  • -- -- dscp=2147483647 src/SocketCore.h:147:22:运行时间出错:左班2147483647乘2位. 无法在“ int” 类型中表示

    • -- -- dscp=2147483648 src/SocketCore.h:147:22:运行时间出错:负值左移 -2147483648

=== -- -- dscp=922337203685475807 src/SocketCore.h:147:22:运行时间出错:负值左移 -1 #0 aria2:: SocketCore:: setIpDscp(int) src/ SocketCore.h:147:22 #1 aria2:: Context:: Context(. scr/Context.cc:224 (中文(简体) ). [...] 摘要:未定义行为卫生员:无效-转会-基部src/SocketCore.h:147:22


影响
无法从本地配置或 RPC 客户端获取定义的行为
. . . . . . .