[bug] make: two unsigned integer overflows in src/implicit.c

CHEN LINGFENG <[email protected]> Thu, 12 Mar 2026 10:16:02 +0000
Newsgroups gmane.comp.gnu.make.bugs
Message-ID <OS9P301MB1253A1125F65DCCDC4B1D452D844A@OS9P301MB1253.JPNP301.PROD.OUTLOOK.COM>
--_000_OS9P301MB1253A1125F65DCCDC4B1D452D844AOS9P301MB1253JPNP_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hello,

I would like to report two sanitizer-detected violations in GNU make 4.4.1.

I built make with sanitizers enabled using:

CC=3Dclang
CFLAGS=3D"-O1 -g -fno-omit-frame-pointer -fsanitize=3Daddress,undefined,int=
eger,bounds"
LDFLAGS=3D"-fsanitize=3Daddress,undefined,integer,bounds"


Observed results:

/root/build/make-4.4.1/src/implicit.c:192:40: runtime error: unsigned integ=
er overflow: 0 - 1 cannot be represented in type 'unsigned int'
#0 0x52e09a in stemlen_compare /root/build/make-4.4.1/src/implicit.c:192:40
#1 0x47d3c9 in qsort (/work/build/make-4.4.1/obj-gcov2/make+0x47d3c9)
#2 0x52193a in pattern_search /root/build/make-4.4.1/src/implicit.c:431:5
#3 0x51eef0 in try_implicit_rule /root/build/make-4.4.1/src/implicit.c:48:7
#4 0x5a1cd6 in update_file_1 /root/build/make-4.4.1/src/remake.c:557:7
#5 0x5972ca in update_file /root/build/make-4.4.1/src/remake.c:367:13
#6 0x595874 in update_goal_chain /root/build/make-4.4.1/src/remake.c:184:22
#7 0x551742 in main /root/build/make-4.4.1/src/main.c:2448:18
#8 0x79bd73f2fc86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/.=
./csu/libc-start.c:310
#9 0x420f19 in _start (/work/build/make-4.4.1/obj-gcov2/make+0x420f19)

/root/build/make-4.4.1/src/implicit.c:191:30: runtime error: unsigned integ=
er overflow: 1 - 3 cannot be represented in type 'unsigned long'
#0 0x52df3b in stemlen_compare /root/build/make-4.4.1/src/implicit.c:191:30
#1 0x47d3c9 in qsort (/work/build/make-4.4.1/obj-gcov2/make+0x47d3c9)
#2 0x52193a in pattern_search /root/build/make-4.4.1/src/implicit.c:431:5
#3 0x528206 in pattern_search /root/build/make-4.4.1/src/implicit.c:896:27
#4 0x51eef0 in try_implicit_rule /root/build/make-4.4.1/src/implicit.c:48:7
#5 0x5a1cd6 in update_file_1 /root/build/make-4.4.1/src/remake.c:557:7
#6 0x5972ca in update_file /root/build/make-4.4.1/src/remake.c:367:13
#7 0x595874 in update_goal_chain /root/build/make-4.4.1/src/remake.c:184:22
#8 0x551742 in main /root/build/make-4.4.1/src/main.c:2448:18
#9 0x79bd73f2fc86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/.=
./csu/libc-start.c:310
#10 0x420f19 in _start (/work/build/make-4.4.1/obj-gcov2/make+0x420f19)


Best regards,
Lingfeng Chen <https://aka.ms/GetOutlookForMac>

--_000_OS9P301MB1253A1125F65DCCDC4B1D452D844AOS9P301MB1253JPNP_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
</head>
<body>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
Hello,</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
I would like to report two sanitizer-detected violations in GNU make 4.4.1.=
</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
I built make with sanitizers enabled using:</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
CC=3Dclang</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
CFLAGS=3D&quot;-O1 -g -fno-omit-frame-pointer -fsanitize=3Daddress,undefine=
d,integer,bounds&quot;</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
LDFLAGS=3D&quot;-fsanitize=3Daddress,undefined,integer,bounds&quot;</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
Observed results:</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
/root/build/make-4.4.1/src/implicit.c:192:40: runtime error: unsigned integ=
er overflow: 0 - 1 cannot be represented in type 'unsigned int'</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#0 0x52e09a in stemlen_compare /root/build/make-4.4.1/src/implicit.c:192:40=
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#1 0x47d3c9 in qsort (/work/build/make-4.4.1/obj-gcov2/make+0x47d3c9)</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#2 0x52193a in pattern_search /root/build/make-4.4.1/src/implicit.c:431:5</=
div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#3 0x51eef0 in try_implicit_rule /root/build/make-4.4.1/src/implicit.c:48:7=
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#4 0x5a1cd6 in update_file_1 /root/build/make-4.4.1/src/remake.c:557:7</div=
>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#5 0x5972ca in update_file /root/build/make-4.4.1/src/remake.c:367:13</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#6 0x595874 in update_goal_chain /root/build/make-4.4.1/src/remake.c:184:22=
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#7 0x551742 in main /root/build/make-4.4.1/src/main.c:2448:18</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#8 0x79bd73f2fc86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/.=
./csu/libc-start.c:310</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#9 0x420f19 in _start (/work/build/make-4.4.1/obj-gcov2/make+0x420f19)</div=
>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
/root/build/make-4.4.1/src/implicit.c:191:30: runtime error: unsigned integ=
er overflow: 1 - 3 cannot be represented in type 'unsigned long'</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#0 0x52df3b in stemlen_compare /root/build/make-4.4.1/src/implicit.c:191:30=
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#1 0x47d3c9 in qsort (/work/build/make-4.4.1/obj-gcov2/make+0x47d3c9)</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#2 0x52193a in pattern_search /root/build/make-4.4.1/src/implicit.c:431:5</=
div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#3 0x528206 in pattern_search /root/build/make-4.4.1/src/implicit.c:896:27<=
/div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#4 0x51eef0 in try_implicit_rule /root/build/make-4.4.1/src/implicit.c:48:7=
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#5 0x5a1cd6 in update_file_1 /root/build/make-4.4.1/src/remake.c:557:7</div=
>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#6 0x5972ca in update_file /root/build/make-4.4.1/src/remake.c:367:13</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#7 0x595874 in update_goal_chain /root/build/make-4.4.1/src/remake.c:184:22=
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#8 0x551742 in main /root/build/make-4.4.1/src/main.c:2448:18</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#9 0x79bd73f2fc86 in __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/.=
./csu/libc-start.c:310</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
#10 0x420f19 in _start (/work/build/make-4.4.1/obj-gcov2/make+0x420f19)</di=
v>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"direction: ltr; font-family: Aptos, Arial, Helvetica, sans-se=
rif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
Best regards,</div>
<div style=3D"font-family: Aptos, Arial, Helvetica, sans-serif; font-size: =
12pt; color: rgb(0, 0, 0);">
Lingfeng Chen<a href=3D"https://aka.ms/GetOutlookForMac" data-outlook-id=3D=
"7d72d990-691d-48df-96fe-95f2cba7cef6" style=3D"margin-top: 0px; margin-bot=
tom: 0px;">
</a></div>
</body>
</html>

--_000_OS9P301MB1253A1125F65DCCDC4B1D452D844AOS9P301MB1253JPNP_--