Added uniform name validation.

This commit is contained in:
Бранимир Караџић
2021-09-30 17:24:36 -07:00
parent 22d5747719
commit 73db386165
2 changed files with 61 additions and 5 deletions

View File

@@ -304,6 +304,7 @@ namespace bgfx
extern PlatformData g_platformData;
extern bool g_platformDataChangedSinceReset;
extern void isFrameBufferValid(uint8_t _num, const Attachment* _attachment, bx::Error* _err);
extern void isIdentifierValid(const bx::StringView& _name, bx::Error* _err);
#if BGFX_CONFIG_MAX_DRAW_CALLS < (64<<10)
typedef uint16_t RenderItemCount;
@@ -792,7 +793,7 @@ namespace bgfx
const char* getUniformTypeName(UniformType::Enum _enum);
UniformType::Enum nameToUniformTypeEnum(const char* _name);
const char* getPredefinedUniformName(PredefinedUniform::Enum _enum);
PredefinedUniform::Enum nameToPredefinedUniformEnum(const char* _name);
PredefinedUniform::Enum nameToPredefinedUniformEnum(const bx::StringView& _name);
class CommandBuffer
{
@@ -4692,10 +4693,15 @@ namespace bgfx
{
BGFX_MUTEX_SCOPE(m_resourceApiLock);
if (PredefinedUniform::Count != nameToPredefinedUniformEnum(_name) )
{
BX_TRACE("%s is predefined uniform name.", _name);
return BGFX_INVALID_HANDLE;
bx::Error err;
isIdentifierValid(_name, &err);
BGFX_ERROR_ASSERT(&err);
if (!err.isOk() )
{
return BGFX_INVALID_HANDLE;
}
}
_num = bx::max<uint16_t>(1, _num);