• Marcin Slusarz's avatar
    udf: fix udf_build_ustr · 6305a0a9
    Marcin Slusarz authored
    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: default avatarMarcin Slusarz <marcin.slusarz@gmail.com>
    Signed-off-by: default avatarJan Kara <jack@suse.cz>
    6305a0a9
unicode.c 10.7 KB