[GLES3] Protect against bogus glGetShaderInfoLog return values.
On some buggy drivers `GL_INFO_LOG_LENGTH` returns incorrect values, which may lead to incorrectly filling in the log string. This could lead to uninitialized data being attempted to be printed and a crash. This PR zeros the array to ensure uninitialized data is not used.
This commit is contained in:
@ -328,7 +328,7 @@ void ShaderGLES3::_compile_specialization(Version::Specialization &spec, uint32_
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
|
char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
|
||||||
ilogmem[iloglen] = '\0';
|
memset(ilogmem, 0, iloglen + 1);
|
||||||
glGetShaderInfoLog(spec.vert_id, iloglen, &iloglen, ilogmem);
|
glGetShaderInfoLog(spec.vert_id, iloglen, &iloglen, ilogmem);
|
||||||
|
|
||||||
String err_string = name + ": Vertex shader compilation failed:\n";
|
String err_string = name + ": Vertex shader compilation failed:\n";
|
||||||
@ -376,7 +376,7 @@ void ShaderGLES3::_compile_specialization(Version::Specialization &spec, uint32_
|
|||||||
}
|
}
|
||||||
|
|
||||||
char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
|
char *ilogmem = (char *)Memory::alloc_static(iloglen + 1);
|
||||||
ilogmem[iloglen] = '\0';
|
memset(ilogmem, 0, iloglen + 1);
|
||||||
glGetShaderInfoLog(spec.frag_id, iloglen, &iloglen, ilogmem);
|
glGetShaderInfoLog(spec.frag_id, iloglen, &iloglen, ilogmem);
|
||||||
|
|
||||||
String err_string = name + ": Fragment shader compilation failed:\n";
|
String err_string = name + ": Fragment shader compilation failed:\n";
|
||||||
|
|||||||
Reference in New Issue
Block a user