mirror of
https://codeberg.org/superseriousbusiness/gotosocial.git
synced 2024-11-28 09:58:53 +03:00
allow overflow in imaging
This commit is contained in:
parent
666b8bc4f2
commit
8db3d6b700
1 changed files with 16 additions and 92 deletions
|
@ -399,25 +399,9 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
g16 := uint16(s[1])
|
g16 := uint16(s[1])
|
||||||
b16 := uint16(s[2])
|
b16 := uint16(s[2])
|
||||||
a16 := uint16(a)
|
a16 := uint16(a)
|
||||||
|
d[0] = uint8(r16 * 0xff / a16) // #nosec G115 -- Overflow desired.
|
||||||
d0 := r16 * 0xff / a16
|
d[1] = uint8(g16 * 0xff / a16) // #nosec G115 -- Overflow desired.
|
||||||
if d0 > math.MaxUint8 {
|
d[2] = uint8(b16 * 0xff / a16) // #nosec G115 -- Overflow desired.
|
||||||
panic("overflow d0")
|
|
||||||
}
|
|
||||||
|
|
||||||
d1 := g16 * 0xff / a16
|
|
||||||
if d1 > math.MaxUint8 {
|
|
||||||
panic("overflow d1")
|
|
||||||
}
|
|
||||||
|
|
||||||
d2 := b16 * 0xff / a16
|
|
||||||
if d2 > math.MaxUint8 {
|
|
||||||
panic("overflow d2")
|
|
||||||
}
|
|
||||||
|
|
||||||
d[0] = uint8(d0) // #nosec G115 -- Just checked.
|
|
||||||
d[1] = uint8(d1) // #nosec G115 -- Just checked.
|
|
||||||
d[2] = uint8(d2) // #nosec G115 -- Just checked.
|
|
||||||
d[3] = a
|
d[3] = a
|
||||||
}
|
}
|
||||||
j += 4
|
j += 4
|
||||||
|
@ -447,25 +431,9 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
g32 := uint32(s[2])<<8 | uint32(s[3])
|
g32 := uint32(s[2])<<8 | uint32(s[3])
|
||||||
b32 := uint32(s[4])<<8 | uint32(s[5])
|
b32 := uint32(s[4])<<8 | uint32(s[5])
|
||||||
a32 := uint32(s[6])<<8 | uint32(s[7])
|
a32 := uint32(s[6])<<8 | uint32(s[7])
|
||||||
|
d[0] = uint8((r32 * 0xffff / a32) >> 8) // #nosec G115 -- Overflow desired.
|
||||||
d0 := (r32 * 0xffff / a32) >> 8
|
d[1] = uint8((g32 * 0xffff / a32) >> 8) // #nosec G115 -- Overflow desired.
|
||||||
if d0 > math.MaxUint8 {
|
d[2] = uint8((b32 * 0xffff / a32) >> 8) // #nosec G115 -- Overflow desired.
|
||||||
panic("overflow d0")
|
|
||||||
}
|
|
||||||
|
|
||||||
d1 := (g32 * 0xffff / a32) >> 8
|
|
||||||
if d1 > math.MaxUint8 {
|
|
||||||
panic("overflow d1")
|
|
||||||
}
|
|
||||||
|
|
||||||
d2 := (b32 * 0xffff / a32) >> 8
|
|
||||||
if d2 > math.MaxUint8 {
|
|
||||||
panic("overflow d2")
|
|
||||||
}
|
|
||||||
|
|
||||||
d[0] = uint8(d0) // #nosec G115 -- Just checked.
|
|
||||||
d[1] = uint8(d1) // #nosec G115 -- Just checked.
|
|
||||||
d[2] = uint8(d2) // #nosec G115 -- Just checked.
|
|
||||||
}
|
}
|
||||||
d[3] = a
|
d[3] = a
|
||||||
j += 4
|
j += 4
|
||||||
|
@ -546,9 +514,6 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
} else {
|
} else {
|
||||||
r = ^(r >> 31)
|
r = ^(r >> 31)
|
||||||
}
|
}
|
||||||
if r > math.MaxUint8 {
|
|
||||||
panic("overflow r")
|
|
||||||
}
|
|
||||||
|
|
||||||
g := yy1 - 22554*cb1 - 46802*cr1
|
g := yy1 - 22554*cb1 - 46802*cr1
|
||||||
if uint32(g)&0xff000000 == 0 {
|
if uint32(g)&0xff000000 == 0 {
|
||||||
|
@ -556,9 +521,6 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
} else {
|
} else {
|
||||||
g = ^(g >> 31)
|
g = ^(g >> 31)
|
||||||
}
|
}
|
||||||
if g > math.MaxUint8 {
|
|
||||||
panic("overflow g")
|
|
||||||
}
|
|
||||||
|
|
||||||
b := yy1 + 116130*cb1
|
b := yy1 + 116130*cb1
|
||||||
if uint32(b)&0xff000000 == 0 {
|
if uint32(b)&0xff000000 == 0 {
|
||||||
|
@ -566,14 +528,11 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
} else {
|
} else {
|
||||||
b = ^(b >> 31)
|
b = ^(b >> 31)
|
||||||
}
|
}
|
||||||
if b > math.MaxUint8 {
|
|
||||||
panic("overflow b")
|
|
||||||
}
|
|
||||||
|
|
||||||
d := dst[j : j+4 : j+4]
|
d := dst[j : j+4 : j+4]
|
||||||
d[0] = uint8(r) // #nosec G115 -- Just checked.
|
d[0] = uint8(r) // #nosec G115 -- Overflow desired.
|
||||||
d[1] = uint8(g) // #nosec G115 -- Just checked.
|
d[1] = uint8(g) // #nosec G115 -- Overflow desired.
|
||||||
d[2] = uint8(b) // #nosec G115 -- Just checked.
|
d[2] = uint8(b) // #nosec G115 -- Overflow desired.
|
||||||
d[3] = 0xff
|
d[3] = 0xff
|
||||||
|
|
||||||
iy++
|
iy++
|
||||||
|
@ -610,24 +569,9 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
d := dst[j : j+4 : j+4]
|
d := dst[j : j+4 : j+4]
|
||||||
switch a16 {
|
switch a16 {
|
||||||
case 0xffff:
|
case 0xffff:
|
||||||
d0 := r16 >> 8
|
d[0] = uint8(r16 >> 8) // #nosec G115 -- Overflow desired.
|
||||||
if d0 > math.MaxUint8 {
|
d[1] = uint8(g16 >> 8) // #nosec G115 -- Overflow desired.
|
||||||
panic("overflow d0")
|
d[2] = uint8(b16 >> 8) // #nosec G115 -- Overflow desired.
|
||||||
}
|
|
||||||
|
|
||||||
d1 := g16 >> 8
|
|
||||||
if d1 > math.MaxUint8 {
|
|
||||||
panic("overflow d1")
|
|
||||||
}
|
|
||||||
|
|
||||||
d2 := b16 >> 8
|
|
||||||
if d2 > math.MaxUint8 {
|
|
||||||
panic("overflow d2")
|
|
||||||
}
|
|
||||||
|
|
||||||
d[0] = uint8(d0) // #nosec G115 -- Just checked.
|
|
||||||
d[1] = uint8(d1) // #nosec G115 -- Just checked.
|
|
||||||
d[2] = uint8(d2) // #nosec G115 -- Just checked.
|
|
||||||
d[3] = 0xff
|
d[3] = 0xff
|
||||||
case 0:
|
case 0:
|
||||||
d[0] = 0
|
d[0] = 0
|
||||||
|
@ -635,30 +579,10 @@ func (s *scanner) scan(x1, y1, x2, y2 int, dst []uint8) {
|
||||||
d[2] = 0
|
d[2] = 0
|
||||||
d[3] = 0
|
d[3] = 0
|
||||||
default:
|
default:
|
||||||
d0 := ((r16 * 0xffff) / a16) >> 8
|
d[0] = uint8(((r16 * 0xffff) / a16) >> 8) // #nosec G115 -- Overflow desired.
|
||||||
if d0 > math.MaxUint8 {
|
d[1] = uint8(((g16 * 0xffff) / a16) >> 8) // #nosec G115 -- Overflow desired.
|
||||||
panic("overflow d0")
|
d[2] = uint8(((b16 * 0xffff) / a16) >> 8) // #nosec G115 -- Overflow desired.
|
||||||
}
|
d[3] = uint8(a16 >> 8) // #nosec G115 -- Overflow desired.
|
||||||
|
|
||||||
d1 := ((g16 * 0xffff) / a16) >> 8
|
|
||||||
if d1 > math.MaxUint8 {
|
|
||||||
panic("overflow d1")
|
|
||||||
}
|
|
||||||
|
|
||||||
d2 := ((b16 * 0xffff) / a16) >> 8
|
|
||||||
if d2 > math.MaxUint8 {
|
|
||||||
panic("overflow d2")
|
|
||||||
}
|
|
||||||
|
|
||||||
d3 := a16 >> 8
|
|
||||||
if d3 > math.MaxUint8 {
|
|
||||||
panic("overflow d3")
|
|
||||||
}
|
|
||||||
|
|
||||||
d[0] = uint8(d0) // #nosec G115 -- Just checked.
|
|
||||||
d[1] = uint8(d1) // #nosec G115 -- Just checked.
|
|
||||||
d[2] = uint8(d2) // #nosec G115 -- Just checked.
|
|
||||||
d[3] = uint8(d3) // #nosec G115 -- Just checked.
|
|
||||||
}
|
}
|
||||||
j += 4
|
j += 4
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue