udf: fix udf_build_ustr
authorMarcin Slusarz <marcin.slusarz@gmail.com>
Mon, 4 Feb 2008 21:27:39 +0000 (22:27 +0100)
committerJan Kara <jack@suse.cz>
Thu, 17 Apr 2008 12:22:24 +0000 (14:22 +0200)
commit6305a0a9d559e97807b8bc6d5250fd525dc571a7
tree5f644150de3fac27458f347cf9d59d0a52ba3611
parent79cfe0ff5fb585b92126365a2881262945ac0ee9
udf: fix udf_build_ustr

udf_build_ustr was broken:

- size == 1:
    dest->u_len = ptr[1 - 1], but at ptr[0] there's cmpID,
    so we created string with wrong length
    it should not happen, so we BUG() it
- size > 1 and size < UDF_NAME_LEN:
    we set u_len correctly, but memcpy copied one needless byte
- size == UDF_NAME_LEN - 1:
    memcpy overwrited u_len - with correct value, but...
- size >= UDF_NAME_LEN:
    we copied UDF_NAME_LEN - 1 bytes, but dest->u_name is array
    of UDF_NAME_LEN - 2 bytes, so we were overwriting u_len with
    character from input string

nobody noticed because all callers set size
to acceptable values (constants within range)

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
Signed-off-by: Jan Kara <jack@suse.cz>
fs/udf/unicode.c