usb: gadget/function/f_fs string table fix for multiple languages
commit 55b74ce7d2 upstream.
Fixes bug with the handling of more than one language in
the string table in f_fs.c.
str_count was not reset for subsequent language codes.
str_count-- "rolls under" and processes u32 max strings on
the processing of the second language entry.
The existing bug can be reproduced by adding a second language table
to the structure "strings" in tools/usb/ffs-test.c.
Signed-off-by: Dean Anderson <dean@sensoray.com>
Link: https://lore.kernel.org/r/20210317224109.21534-1-dean@sensoray.com
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ba8ce68307
commit
8df75d1296
1 changed files with 2 additions and 1 deletions
|
|
@ -2639,6 +2639,7 @@ static int __ffs_data_got_strings(struct ffs_data *ffs,
|
|||
|
||||
do { /* lang_count > 0 so we can use do-while */
|
||||
unsigned needed = needed_count;
|
||||
u32 str_per_lang = str_count;
|
||||
|
||||
if (unlikely(len < 3))
|
||||
goto error_free;
|
||||
|
|
@ -2674,7 +2675,7 @@ static int __ffs_data_got_strings(struct ffs_data *ffs,
|
|||
|
||||
data += length + 1;
|
||||
len -= length + 1;
|
||||
} while (--str_count);
|
||||
} while (--str_per_lang);
|
||||
|
||||
s->id = 0; /* terminator */
|
||||
s->s = NULL;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue