diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pgtkfns.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/pgtkfns.c b/src/pgtkfns.c index b8e65f4c052..f1c0e5da0f3 100644 --- a/src/pgtkfns.c +++ b/src/pgtkfns.c | |||
| @@ -1901,13 +1901,19 @@ parse_resource_key (const char *res_key, char *setting_key) | |||
| 1901 | return gs; | 1901 | return gs; |
| 1902 | } | 1902 | } |
| 1903 | 1903 | ||
| 1904 | static void | ||
| 1905 | pgtk_check_resource_key_length (const char *key) | ||
| 1906 | { | ||
| 1907 | if (strnlen (key, RESOURCE_KEY_MAX_LEN) >= RESOURCE_KEY_MAX_LEN) | ||
| 1908 | error ("Resource key too long"); | ||
| 1909 | } | ||
| 1910 | |||
| 1904 | const char * | 1911 | const char * |
| 1905 | pgtk_get_defaults_value (const char *key) | 1912 | pgtk_get_defaults_value (const char *key) |
| 1906 | { | 1913 | { |
| 1907 | char skey[(RESOURCE_KEY_MAX_LEN + 1) * 2]; | 1914 | char skey[(RESOURCE_KEY_MAX_LEN + 1) * 2]; |
| 1908 | 1915 | ||
| 1909 | if (strlen (key) >= RESOURCE_KEY_MAX_LEN) | 1916 | pgtk_check_resource_key_length (key); |
| 1910 | error ("Resource key too long"); | ||
| 1911 | 1917 | ||
| 1912 | GSettings *gs = parse_resource_key (key, skey); | 1918 | GSettings *gs = parse_resource_key (key, skey); |
| 1913 | if (gs == NULL) | 1919 | if (gs == NULL) |
| @@ -1936,8 +1942,7 @@ pgtk_set_defaults_value (const char *key, const char *value) | |||
| 1936 | { | 1942 | { |
| 1937 | char skey[(RESOURCE_KEY_MAX_LEN + 1) * 2]; | 1943 | char skey[(RESOURCE_KEY_MAX_LEN + 1) * 2]; |
| 1938 | 1944 | ||
| 1939 | if (strlen (key) >= RESOURCE_KEY_MAX_LEN) | 1945 | pgtk_check_resource_key_length (key); |
| 1940 | error ("Resource key too long"); | ||
| 1941 | 1946 | ||
| 1942 | GSettings *gs = parse_resource_key (key, skey); | 1947 | GSettings *gs = parse_resource_key (key, skey); |
| 1943 | if (gs == NULL) | 1948 | if (gs == NULL) |