sh: Fix formal overflow in pointer arithmetic
The intention is to lower the value of the pointer, which according to ubsan cannot be done by adding an unsigned quantity. Reported by: kevans Approved by: re (kib) MFC after: 1 week
This commit is contained in:
parent
ce9eea6425
commit
4269bba2eb
@ -896,7 +896,7 @@ reprocess(int startloc, int flag, int subtype, int quoted,
|
||||
|
||||
startp = stackblock() + startloc;
|
||||
len = expdest - startp;
|
||||
if (len >= SIZE_MAX / 2)
|
||||
if (len >= SIZE_MAX / 2 || len > PTRDIFF_MAX)
|
||||
abort();
|
||||
INTOFF;
|
||||
if (len >= buflen) {
|
||||
@ -912,7 +912,7 @@ reprocess(int startloc, int flag, int subtype, int quoted,
|
||||
INTON;
|
||||
memcpy(buf, startp, len);
|
||||
buf[len] = '\0';
|
||||
STADJUST(-len, expdest);
|
||||
STADJUST(-(ptrdiff_t)len, expdest);
|
||||
for (zpos = 0;;) {
|
||||
zlen = strlen(buf + zpos);
|
||||
strtodest(buf + zpos, flag, subtype, quoted, dst);
|
||||
|
Loading…
Reference in New Issue
Block a user