diff options
Diffstat (limited to 'drivers/staging/speakup/varhandlers.c')
-rw-r--r-- | drivers/staging/speakup/varhandlers.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/speakup/varhandlers.c b/drivers/staging/speakup/varhandlers.c index 445a3fd..1b0d1c0 100644 --- a/drivers/staging/speakup/varhandlers.c +++ b/drivers/staging/speakup/varhandlers.c @@ -112,12 +112,12 @@ void speakup_register_var(struct var_t *var) default: break; } - return; } void speakup_unregister_var(enum var_id_t var_id) { struct st_var_header *p_header; + BUG_ON(var_id < 0 || var_id >= MAXVARS); p_header = var_ptrs[var_id]; p_header->data = NULL; @@ -126,6 +126,7 @@ void speakup_unregister_var(enum var_id_t var_id) struct st_var_header *spk_get_var_header(enum var_id_t var_id) { struct st_var_header *p_header; + if (var_id < 0 || var_id >= MAXVARS) return NULL; p_header = var_ptrs[var_id]; @@ -224,6 +225,7 @@ int spk_set_num_var(int input, struct st_var_header *var, int how) return ret; if (synth->synth_adjust != NULL) { int status = synth->synth_adjust(var); + return (status != 0) ? status : ret; } if (!var_data->u.n.synth_fmt) @@ -272,6 +274,7 @@ int spk_set_mask_bits(const char *input, const int which, const int how) { u_char *cp; short mask = spk_punc_info[which].mask; + if (how&1) { for (cp = (u_char *)spk_punc_info[3].value; *cp; cp++) spk_chartab[*cp] &= ~mask; @@ -308,6 +311,7 @@ int spk_set_mask_bits(const char *input, const int which, const int how) char *spk_strlwr(char *s) { char *p; + if (s == NULL) return NULL; @@ -319,6 +323,7 @@ char *spk_strlwr(char *s) char *spk_s2uchar(char *start, char *dest) { int val = 0; + val = simple_strtoul(skip_spaces(start), &start, 10); if (*start == ',') start++; |