Skip to content

Commit 74d5eae

Browse files
Merge pull request #44 from Erik-White/bugfix/pixel-format-overflow
Fix potential overflow in HDR pixel formats
2 parents d640d5e + aab0e24 commit 74d5eae

3 files changed

Lines changed: 12 additions & 16 deletions

File tree

src/ImageSharp.Textures/PixelFormats/Generated/D32_FLOAT_S8X24_UINT.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,9 +171,8 @@ public override string ToString()
171171
private static ulong Pack(ref Vector2 vector)
172172
{
173173
vector = Vector2.Clamp(vector, Vector2.Zero, Vector2.One);
174-
return (ulong)(
175-
(uint)FloatHelper.PackFloatToFloat32(vector.X)
176-
| (((uint)Math.Round(vector.Y * 255F) & 255) << 32));
174+
return (ulong)FloatHelper.PackFloatToFloat32(vector.X)
175+
| ((ulong)((uint)Math.Round(vector.Y * 255F) & 255) << 32);
177176
}
178177
}
179178
}

src/ImageSharp.Textures/PixelFormats/Generated/PixelGenerator.ignore

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -904,11 +904,10 @@ namespace SixLabors.ImageSharp.Textures.PixelFormats
904904
private static ulong Pack(ref Vector4 vector)
905905
{
906906
vector = Vector4.Clamp(vector, Vector4.Zero, Vector4.One);
907-
return (ulong)(
908-
(uint)FloatHelper.PackFloatToFloat16(vector.X)
909-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
910-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
911-
| ((uint)FloatHelper.PackFloatToFloat16(vector.W) << 48));
907+
return (ulong)FloatHelper.PackFloatToFloat16(vector.X)
908+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
909+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
910+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.W) << 48);
912911
}
913912
}
914913
}
@@ -1598,9 +1597,8 @@ namespace SixLabors.ImageSharp.Textures.PixelFormats
15981597
private static ulong Pack(ref Vector2 vector)
15991598
{
16001599
vector = Vector2.Clamp(vector, Vector2.Zero, Vector2.One);
1601-
return (ulong)(
1602-
(uint)FloatHelper.PackFloatToFloat32(vector.X)
1603-
| (((uint)Math.Round(vector.Y * 255F) & 255) << 32));
1600+
return (ulong)FloatHelper.PackFloatToFloat32(vector.X)
1601+
| ((ulong)((uint)Math.Round(vector.Y * 255F) & 255) << 32);
16041602
}
16051603
}
16061604
}

src/ImageSharp.Textures/PixelFormats/Generated/Rgba64Float.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,10 @@ public override string ToString()
171171
private static ulong Pack(ref Vector4 vector)
172172
{
173173
vector = Vector4.Clamp(vector, Vector4.Zero, Vector4.One);
174-
return (ulong)(
175-
(uint)FloatHelper.PackFloatToFloat16(vector.X)
176-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
177-
| ((uint)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
178-
| ((uint)FloatHelper.PackFloatToFloat16(vector.W) << 48));
174+
return (ulong)FloatHelper.PackFloatToFloat16(vector.X)
175+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Y) << 16)
176+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.Z) << 32)
177+
| ((ulong)FloatHelper.PackFloatToFloat16(vector.W) << 48);
179178
}
180179
}
181180
}

0 commit comments

Comments
 (0)