Avoid overflow in pgtk_is_numeric_char
* src/pgtkfns.c (PATH_MAX_LEN): New macro. (parse_resource_key): Avoid overflow if a key is RESOURCE_KEY_MAX_LEN long by making the array larger.
This commit is contained in:
parent
d00a10333f
commit
87facc9e3d
1 changed files with 6 additions and 2 deletions
|
@ -1781,6 +1781,9 @@ Some window managers may refuse to restack windows. */)
|
|||
#define SCHEMA_ID "org.gnu.emacs.defaults"
|
||||
#define PATH_FOR_CLASS_TYPE "/org/gnu/emacs/defaults-by-class/"
|
||||
#define PATH_PREFIX_FOR_NAME_TYPE "/org/gnu/emacs/defaults-by-name/"
|
||||
#define PATH_MAX_LEN \
|
||||
(sizeof PATH_FOR_CLASS_TYPE > sizeof PATH_PREFIX_FOR_NAME_TYPE ? \
|
||||
sizeof PATH_FOR_CLASS_TYPE : sizeof PATH_PREFIX_FOR_NAME_TYPE)
|
||||
|
||||
static inline int
|
||||
pgtk_is_lower_char (int c)
|
||||
|
@ -1803,7 +1806,7 @@ pgtk_is_numeric_char (int c)
|
|||
static GSettings *
|
||||
parse_resource_key (const char *res_key, char *setting_key)
|
||||
{
|
||||
char path[32 + RESOURCE_KEY_MAX_LEN];
|
||||
char path[PATH_MAX_LEN + RESOURCE_KEY_MAX_LEN];
|
||||
const char *sp = res_key;
|
||||
char *dp;
|
||||
|
||||
|
@ -1822,7 +1825,7 @@ parse_resource_key (const char *res_key, char *setting_key)
|
|||
/* generate path */
|
||||
if (pgtk_is_upper_char (*sp))
|
||||
{
|
||||
/* First letter is upper case. It should be "Emacs",
|
||||
/* First letter is upper case. It should be "Emacs",
|
||||
* but don't care.
|
||||
*/
|
||||
strcpy (path, PATH_FOR_CLASS_TYPE);
|
||||
|
@ -1964,6 +1967,7 @@ pgtk_set_defaults_value (const char *key, const char *value)
|
|||
#undef SCHEMA_ID
|
||||
#undef PATH_FOR_CLASS_TYPE
|
||||
#undef PATH_PREFIX_FOR_NAME_TYPE
|
||||
#undef PATH_MAX_LEN
|
||||
|
||||
#else /* not HAVE_GSETTINGS */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue