linux/drivers/staging/speakup
Ben Hutchings 40fe4f8967 staging: speakup_soft: Fix reading of init string
softsynth_read() reads a character at a time from the init string;
when it finds the null terminator it sets the initialized flag but
then repeats the last character.

Additionally, if the read() buffer is not big enough for the init
string, the next read() will start reading from the beginning again.
So the caller may never progress to reading anything else.

Replace the simple initialized flag with the current position in
the init string, carried over between calls.  Switch to reading
real data once this reaches the null terminator.

(This assumes that the length of the init string can't change, which
seems to be the case.  Really, the string and position belong together
in a per-file private struct.)

Tested-by: Samuel Thibault <sthibault@debian.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-09-17 05:32:50 -07:00
..
buffers.c BKL: remove extraneous #include <smp_lock.h> 2010-11-17 08:59:32 -08:00
DefaultKeyAssignments
devsynth.c drivers/staging/speakup/devsynth.c: fix "buffer size is not provably correct" error 2011-08-02 16:09:46 -07:00
fakekey.c fakekey: Simplify speakup_fake_key_pressed through this_cpu_ops 2010-12-17 15:07:19 +01:00
i18n.c staging: speakup: i18n.c: Fix leak in msg_set() 2012-08-13 19:32:13 -07:00
i18n.h
Kconfig
keyhelp.c Fix common misspellings 2011-03-31 11:26:23 -03:00
kobjects.c Staging: speakup: Use kmemdup rather than duplicating its implementation 2011-11-26 18:12:56 -08:00
main.c Staging: speakup: fix an improperly-declared variable. 2012-06-18 17:13:06 -07:00
Makefile
selection.c staging: speakup: fixed checkpatch and sparse warnings in selection.c 2012-06-13 12:20:16 -07:00
serialio.c TTY: speakup, do not use serialP 2012-03-08 11:47:02 -08:00
serialio.h TTY: speakup, do not use serialP 2012-03-08 11:47:02 -08:00
speakup_acnt.h staging "speakup" Fix typos. 2012-07-09 13:06:21 -07:00
speakup_acntpc.c
speakup_acntsa.c
speakup_apollo.c staging: speakup: speakup_apollo.c: style fixes 2010-10-15 12:22:35 -07:00
speakup_audptr.c staging: speakup: speakup_audptr.c: style fixes 2010-10-15 12:22:36 -07:00
speakup_bns.c staging: speakup: speakup_bns.c: style fixes 2010-10-15 12:22:36 -07:00
speakup_decext.c staging: speakup: speakup_decext.c: style fixes 2010-10-15 12:22:36 -07:00
speakup_decpc.c staging "speakup" Fix typos. 2012-07-09 13:06:21 -07:00
speakup_dectlk.c staging: speakup: speakup_dectlk.c: style fixes 2010-10-15 12:22:38 -07:00
speakup_dtlk.c staging: speakup: speakup_dtlk.c: style fixes 2010-10-15 12:22:36 -07:00
speakup_dtlk.h
speakup_dummy.c staging: speakup: speakup_dummy.c: style fixes 2010-10-15 12:22:37 -07:00
speakup_keypc.c staging: speakup: speakup_keypc.c: style fixes 2010-10-15 12:22:37 -07:00
speakup_ltlk.c staging: speakup: speakup_ltlk.c: style fixes 2010-10-15 12:22:37 -07:00
speakup_soft.c staging: speakup_soft: Fix reading of init string 2012-09-17 05:32:50 -07:00
speakup_spkout.c staging: speakup: speakup_spkout.c: style fixes 2010-10-15 12:22:38 -07:00
speakup_txprt.c staging: speakup: speakup_txprt.c: style fixes 2010-10-15 12:22:38 -07:00
speakup.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
speakupmap.h
speakupmap.map
spk_priv_keyinfo.h staging: speakup: enlosed macros with complex values in parenthesis 2011-02-04 13:01:02 -08:00
spk_priv.h TTY: speakup, do not use serialP 2012-03-08 11:47:02 -08:00
spk_types.h staging: speakup: enlosed macros with complex values in parenthesis 2011-02-04 13:01:02 -08:00
spkguide.txt Fix common misspellings 2011-03-31 11:26:23 -03:00
synth.c staging "speakup" Fix typos. 2012-07-09 13:06:21 -07:00
thread.c staging: speakup: thread.c style fixes 2010-10-19 10:06:05 -07:00
TODO
varhandlers.c staging: speakup: varhandlers.c style fixes 2010-10-19 10:06:05 -07:00