summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReuben Thomas <rrt@sc3d.org>2022-12-10 22:21:08 +0000
committerReuben Thomas <rrt@sc3d.org>2022-12-11 19:21:53 +0000
commitedc71639725cfdf4f69c41d22df73cabd8079db8 (patch)
tree45cb503b5a805fca751d11c71e8200a4fe7b858a
parent62a31ba6c92e684c90529a3ee6dcc2b1e4142a31 (diff)
downloadenchant-edc71639725cfdf4f69c41d22df73cabd8079db8.tar.gz
Voikko provider: fix some potential NULL dereferences (thanks, GCC)
-rw-r--r--providers/enchant_voikko.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/providers/enchant_voikko.c b/providers/enchant_voikko.c
index 69f2ffd..97ff3be 100644
--- a/providers/enchant_voikko.c
+++ b/providers/enchant_voikko.c
@@ -72,6 +72,8 @@ voikko_dict_suggest (EnchantDict * me, const char *const word,
for (*out_n_suggs = 0; voikko_sugg_arr[*out_n_suggs] != NULL; (*out_n_suggs)++);
char **sugg_arr = calloc(sizeof (char *), *out_n_suggs + 1);
+ if (sugg_arr == NULL)
+ return NULL;
for (size_t i = 0; i < *out_n_suggs; i++) {
sugg_arr[i] = strdup (voikko_sugg_arr[i]);
}
@@ -101,9 +103,10 @@ voikko_provider_list_dicts (EnchantProvider * me _GL_UNUSED,
if (*out_n_dicts) {
out_list = calloc (*out_n_dicts + 1, sizeof (char *));
- for (i = 0; i < *out_n_dicts; i++) {
- out_list[i] = strdup (voikko_langs[i]);
- }
+ if (out_list != NULL)
+ for (i = 0; i < *out_n_dicts; i++) {
+ out_list[i] = strdup (voikko_langs[i]);
+ }
}
voikkoFreeCstrArray(voikko_langs);
@@ -145,6 +148,8 @@ voikko_provider_request_dict (EnchantProvider * me, const char *const tag)
}
EnchantDict *dict = calloc (sizeof (EnchantDict), 1);
+ if (dict == NULL)
+ return NULL;
dict->user_data = (void *)voikko_handle;
dict->check = voikko_dict_check;
dict->suggest = voikko_dict_suggest;
@@ -176,6 +181,8 @@ EnchantProvider *
init_enchant_provider (void)
{
EnchantProvider *provider = calloc (sizeof (EnchantProvider), 1);
+ if (provider == NULL)
+ return NULL;
provider->dispose = voikko_provider_dispose;
provider->request_dict = voikko_provider_request_dict;
provider->dispose_dict = voikko_provider_dispose_dict;