# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1607371263 0 # Node ID 7677e1083d07142cbd3c265bd17987051d82f575 # Parent 0b6e1b5c8b5eb98f6b3e2e276c9c0772049042ec Increase _DW_ENV_STRING_SIZE to 257 bytes, this is the maximum size the utsname fields can be according to the Linux utsname man page. This seems to be a bit excessive but, this will prevent any possible issue on future operating system support. It also eliminates a bogus warning when compiling using gcc 9 and higher, which I believe is this gcc bug: warning: ‘__builtin_strncpy’ output may be truncated copying 64 bytes from a string of length 64 [-Wstringop-truncation] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88780 diff -r 0b6e1b5c8b5e -r 7677e1083d07 dw.h --- a/dw.h Sat Dec 05 00:34:25 2020 +0000 +++ b/dw.h Mon Dec 07 20:01:03 2020 +0000 @@ -1403,7 +1403,7 @@ #define _DW_APP_ID_SIZE 100 /* Use at least the linux utsname limit to avoid gcc fortify warnings */ -#define _DW_ENV_STRING_SIZE 65 +#define _DW_ENV_STRING_SIZE 257 typedef struct _dwenv { /* Operating System Name and DW Build Date/Time */ diff -r 0b6e1b5c8b5e -r 7677e1083d07 gtk/dw.c --- a/gtk/dw.c Sat Dec 05 00:34:25 2020 +0000 +++ b/gtk/dw.c Mon Dec 07 20:01:03 2020 +0000 @@ -12517,12 +12517,12 @@ void dw_environment_query(DWEnv *env) { struct utsname name; - char tempbuf[100] = { 0 }, *dot; + char tempbuf[_DW_ENV_STRING_SIZE] = { 0 }, *dot; uname(&name); memset(env, '\0', sizeof(DWEnv)); strncpy(env->osName, name.sysname, sizeof(env->osName)-1); - strncpy(tempbuf, name.release, 99); + strncpy(tempbuf, name.release, sizeof(tempbuf)-1); strncpy(env->buildDate, __DATE__, sizeof(env->buildDate)-1); strncpy(env->buildTime, __TIME__, sizeof(env->buildTime)-1); diff -r 0b6e1b5c8b5e -r 7677e1083d07 gtk3/dw.c --- a/gtk3/dw.c Sat Dec 05 00:34:25 2020 +0000 +++ b/gtk3/dw.c Mon Dec 07 20:01:03 2020 +0000 @@ -11182,12 +11182,12 @@ void dw_environment_query(DWEnv *env) { struct utsname name; - char tempbuf[100] = { 0 }, *dot; + char tempbuf[_DW_ENV_STRING_SIZE] = { 0 }, *dot; uname(&name); memset(env, '\0', sizeof(DWEnv)); strncpy(env->osName, name.sysname, sizeof(env->osName)-1); - strncpy(tempbuf, name.release, 99); + strncpy(tempbuf, name.release, sizeof(tempbuf)-1); strncpy(env->buildDate, __DATE__, sizeof(env->buildDate)-1); strncpy(env->buildTime, __TIME__, sizeof(env->buildTime)-1);