Message ID | 20241125201551.2538182-1-brahmajit.xyz@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | smb: server: Fix building with GCC 15 | expand |
On Tue, Nov 26, 2024 at 5:16 AM Brahmajit Das <brahmajit.xyz@gmail.com> 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@gmail.com> > --- > 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 >
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)) +#define MANGLE_BASE (BASE_LEN - 1) #define MAGIC_CHAR '~' #define PERIOD '.' #define mangle(V) ((char)(basechars[(V) % MANGLE_BASE]))
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@gmail.com> --- fs/smb/server/smb_common.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)