Skip to content

Commit 2bf3588

Browse files
cqundefineawesomekling
authored andcommitted
LibWeb: Ensure compressed* WebGL functions don't allow disabled formats
1 parent 044ac2d commit 2bf3588

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

Libraries/LibWeb/WebGL/WebGL2RenderingContextImpl.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,6 +1195,11 @@ void WebGL2RenderingContextImpl::compressed_tex_image3d(WebIDL::UnsignedLong tar
11951195
{
11961196
m_context->make_current();
11971197

1198+
if (!enabled_compressed_texture_formats().contains_slow(internalformat)) {
1199+
set_error(GL_INVALID_ENUM);
1200+
return;
1201+
}
1202+
11981203
auto pixels = SET_ERROR_VALUE_IF_ERROR(get_offset_span<u8 const>(*src_data, src_offset, src_length_override), GL_INVALID_VALUE);
11991204
glCompressedTexImage3DRobustANGLE(target, level, internalformat, width, height, depth, border, pixels.size(), pixels.size(), pixels.data());
12001205
}
@@ -1203,6 +1208,11 @@ void WebGL2RenderingContextImpl::compressed_tex_sub_image3d(WebIDL::UnsignedLong
12031208
{
12041209
m_context->make_current();
12051210

1211+
if (!enabled_compressed_texture_formats().contains_slow(format)) {
1212+
set_error(GL_INVALID_ENUM);
1213+
return;
1214+
}
1215+
12061216
auto pixels = SET_ERROR_VALUE_IF_ERROR(get_offset_span<u8 const>(*src_data, src_offset, src_length_override), GL_INVALID_VALUE);
12071217
glCompressedTexSubImage3DRobustANGLE(target, level, xoffset, yoffset, zoffset, width, height, depth, format, pixels.size(), pixels.size(), pixels.data());
12081218
}

Libraries/LibWeb/WebGL/WebGL2RenderingContextOverloads.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ void WebGL2RenderingContextOverloads::compressed_tex_image2d(WebIDL::UnsignedLon
166166
{
167167
m_context->make_current();
168168

169+
if (!enabled_compressed_texture_formats().contains_slow(internalformat)) {
170+
set_error(GL_INVALID_ENUM);
171+
return;
172+
}
173+
169174
auto pixels = SET_ERROR_VALUE_IF_ERROR(get_offset_span<u8 const>(*src_data, src_offset, src_length_override), GL_INVALID_VALUE);
170175
glCompressedTexImage2DRobustANGLE(target, level, internalformat, width, height, border, pixels.size(), pixels.size(), pixels.data());
171176
}
@@ -174,6 +179,11 @@ void WebGL2RenderingContextOverloads::compressed_tex_sub_image2d(WebIDL::Unsigne
174179
{
175180
m_context->make_current();
176181

182+
if (!enabled_compressed_texture_formats().contains_slow(format)) {
183+
set_error(GL_INVALID_ENUM);
184+
return;
185+
}
186+
177187
auto pixels = SET_ERROR_VALUE_IF_ERROR(get_offset_span<u8 const>(*src_data, src_offset, src_length_override), GL_INVALID_VALUE);
178188
glCompressedTexSubImage2DRobustANGLE(target, level, xoffset, yoffset, width, height, format, pixels.size(), pixels.size(), pixels.data());
179189
}

Libraries/LibWeb/WebGL/WebGLRenderingContextOverloads.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@ void WebGLRenderingContextOverloads::compressed_tex_image2d(WebIDL::UnsignedLong
5353
{
5454
m_context->make_current();
5555

56+
if (!enabled_compressed_texture_formats().contains_slow(internalformat)) {
57+
set_error(GL_INVALID_ENUM);
58+
return;
59+
}
60+
5661
auto span = MUST(get_offset_span<u8 const>(*data, /* src_offset= */ 0));
5762
glCompressedTexImage2DRobustANGLE(target, level, internalformat, width, height, border, span.size(), span.size(), span.data());
5863
}
@@ -61,6 +66,11 @@ void WebGLRenderingContextOverloads::compressed_tex_sub_image2d(WebIDL::Unsigned
6166
{
6267
m_context->make_current();
6368

69+
if (!enabled_compressed_texture_formats().contains_slow(format)) {
70+
set_error(GL_INVALID_ENUM);
71+
return;
72+
}
73+
6474
auto span = MUST(get_offset_span<u8 const>(*data, /* src_offset= */ 0));
6575
glCompressedTexSubImage2DRobustANGLE(target, level, xoffset, yoffset, width, height, format, span.size(), span.size(), span.data());
6676
}

0 commit comments

Comments
 (0)