Evas GL: Use strncat and strncpy for safety

Fixes Coverity reports:
- CID 1256183

Coverity was a bit stupid there. It knows the size of both
strings and complained about unsafe strcpy. It should have
complained about unsafe strcat instead.
This commit is contained in:
Jean-Philippe Andre 2014-11-28 11:21:43 +09:00
parent 47ec70c003
commit 151eeacec8
1 changed files with 14 additions and 7 deletions

View File

@ -268,8 +268,8 @@ evgl_api_ext_init(void *getproc, const char *glueexts)
"GL_EXT_read_format_bgra " "GL_EXT_read_format_bgra "
"GL_EXT_texture_format_BGRA8888 " "GL_EXT_texture_format_BGRA8888 "
"GL_EXT_texture_type_2_10_10_10_REV "; "GL_EXT_texture_type_2_10_10_10_REV ";
strcpy(_gl_ext_string, desktop_exts); strncpy(_gl_ext_string, desktop_exts, MAX_EXTENSION_STRING_BUFFER);
strcpy(_gl_ext_string_official, desktop_exts); strncpy(_gl_ext_string_official, desktop_exts, MAX_EXTENSION_STRING_BUFFER);
#endif #endif
///////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////
@ -373,7 +373,11 @@ re->info->info.screen);
// Extension HEADER // Extension HEADER
///////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////
#define _EVASGL_EXT_BEGIN(name) \ #define _EVASGL_EXT_BEGIN(name) \
if (_gl_ext_support_##name != 0) { strcat(_gl_ext_string, #name" "); _curext_supported = 1; } \ if (_gl_ext_support_##name != 0) \
{ \
strncat(_gl_ext_string, #name" ", MAX_EXTENSION_STRING_BUFFER); \
_curext_supported = 1; \
} \
else _curext_supported = 0; else _curext_supported = 0;
#define _EVASGL_EXT_END() #define _EVASGL_EXT_END()
@ -381,10 +385,10 @@ re->info->info.screen);
#define _EVASGL_EXT_DISCARD_SUPPORT() #define _EVASGL_EXT_DISCARD_SUPPORT()
#define _EVASGL_EXT_DRVNAME(name) \ #define _EVASGL_EXT_DRVNAME(name) \
if (_curext_supported) \ if (_curext_supported) \
{ \ { \
strcat(_gl_ext_string, #name" "); \ strncat(_gl_ext_string, #name" ", MAX_EXTENSION_STRING_BUFFER); \
strcat(_gl_ext_string_official, #name" "); \ strncat(_gl_ext_string_official, #name" ", MAX_EXTENSION_STRING_BUFFER); \
} }
#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname) #define _EVASGL_EXT_DRVNAME_DESKTOP(deskname)
#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param) #define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param)
#define _EVASGL_EXT_FUNCTION_END() #define _EVASGL_EXT_FUNCTION_END()
@ -405,6 +409,9 @@ re->info->info.screen);
#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR #undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR
///////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////
_gl_ext_string[MAX_EXTENSION_STRING_BUFFER - 1] = '\0';
_gl_ext_string_official[MAX_EXTENSION_STRING_BUFFER - 1] = '\0';
_evgl_api_ext_status = 1; _evgl_api_ext_status = 1;
return EINA_TRUE; return EINA_TRUE;
} }