diff options
Diffstat (limited to 'fs/befs/linuxvfs.c')
| -rw-r--r-- | fs/befs/linuxvfs.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/befs/linuxvfs.c b/fs/befs/linuxvfs.c index fcaeead9696b..50cfca5c7efd 100644 --- a/fs/befs/linuxvfs.c +++ b/fs/befs/linuxvfs.c | |||
| @@ -512,7 +512,11 @@ befs_utf2nls(struct super_block *sb, const char *in, | |||
| 512 | wchar_t uni; | 512 | wchar_t uni; |
| 513 | int unilen, utflen; | 513 | int unilen, utflen; |
| 514 | char *result; | 514 | char *result; |
| 515 | int maxlen = in_len; /* The utf8->nls conversion can't make more chars */ | 515 | /* The utf8->nls conversion won't make the final nls string bigger |
| 516 | * than the utf one, but if the string is pure ascii they'll have the | ||
| 517 | * same width and an extra char is needed to save the additional \0 | ||
| 518 | */ | ||
| 519 | int maxlen = in_len + 1; | ||
| 516 | 520 | ||
| 517 | befs_debug(sb, "---> utf2nls()"); | 521 | befs_debug(sb, "---> utf2nls()"); |
| 518 | 522 | ||
| @@ -588,7 +592,10 @@ befs_nls2utf(struct super_block *sb, const char *in, | |||
| 588 | wchar_t uni; | 592 | wchar_t uni; |
| 589 | int unilen, utflen; | 593 | int unilen, utflen; |
| 590 | char *result; | 594 | char *result; |
| 591 | int maxlen = 3 * in_len; | 595 | /* There're nls characters that will translate to 3-chars-wide UTF-8 |
| 596 | * characters, a additional byte is needed to save the final \0 | ||
| 597 | * in special cases */ | ||
| 598 | int maxlen = (3 * in_len) + 1; | ||
| 592 | 599 | ||
| 593 | befs_debug(sb, "---> nls2utf()\n"); | 600 | befs_debug(sb, "---> nls2utf()\n"); |
| 594 | 601 | ||
