diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-05-07 07:00:07 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-05-07 07:00:07 +0200 |
commit | 35dc9ec1076b79c31bf7ed538af008b7f23bb14d (patch) | |
tree | f90affdd5dc45f47f8d5d84ea34c71e5e521e7a1 /fs/udf/unicode.c | |
parent | 0ec7ae928a9c19c2b7b8054507d5694a2597065e (diff) | |
parent | 07837831047fb72856d1f61a726a4094397facd8 (diff) |
Merge branch 'linus' into efi/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/udf/unicode.c')
-rw-r--r-- | fs/udf/unicode.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/fs/udf/unicode.c b/fs/udf/unicode.c index 3ff42f4437f3..695389a4fc23 100644 --- a/fs/udf/unicode.c +++ b/fs/udf/unicode.c @@ -335,9 +335,21 @@ try_again: return u_len; } -int udf_CS0toUTF8(uint8_t *utf_o, int o_len, const uint8_t *ocu_i, int i_len) +int udf_dstrCS0toUTF8(uint8_t *utf_o, int o_len, + const uint8_t *ocu_i, int i_len) { - return udf_name_from_CS0(utf_o, o_len, ocu_i, i_len, + int s_len = 0; + + if (i_len > 0) { + s_len = ocu_i[i_len - 1]; + if (s_len >= i_len) { + pr_err("incorrect dstring lengths (%d/%d)\n", + s_len, i_len); + return -EINVAL; + } + } + + return udf_name_from_CS0(utf_o, o_len, ocu_i, s_len, udf_uni2char_utf8, 0); } |