Re: [PATCH] smb: server: Fix building with GCC 15

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Nov 26, 2024 at 5:16 AM Brahmajit Das <brahmajit.xyz@xxxxxxxxx> wrote:
>
> GCC 15 introduces -Werror=unterminated-string-initialization by default,
> this results in the following build error
>
> fs/smb/server/smb_common.c:21:35: error: initializer-string for array of 'char' is too long [-Werror=unterminated-string-ini
> tialization]
>    21 | static const char basechars[43] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%";
>       |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> cc1: all warnings being treated as errors
>
> To this we are replacing char basechars[43] with a character pointer
> and then using strlen to get the length.
>
> Signed-off-by: Brahmajit Das <brahmajit.xyz@xxxxxxxxx>
> ---
>  fs/smb/server/smb_common.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/smb/server/smb_common.c b/fs/smb/server/smb_common.c
> index 75b4eb856d32..85a34aeacfe8 100644
> --- a/fs/smb/server/smb_common.c
> +++ b/fs/smb/server/smb_common.c
> @@ -18,8 +18,9 @@
>  #include "mgmt/share_config.h"
>
>  /*for shortname implementation */
> -static const char basechars[43] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%";
> -#define MANGLE_BASE (sizeof(basechars) / sizeof(char) - 1)
> +static const char *basechars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_-!@#$%";
> +#define BASE_LEN (strlen(basechars))
Why do we need BASE_LEN macro? Why not just declare MANGLE_BASE as
strlen(basechars) - 1?

Thanks.
> +#define MANGLE_BASE (BASE_LEN - 1)
>  #define MAGIC_CHAR '~'
>  #define PERIOD '.'
>  #define mangle(V) ((char)(basechars[(V) % MANGLE_BASE]))
> --
> 2.47.0
>





[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux