[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xenpmd: prevent format-truncation warning with gcc 8.2 + ARM 32-bit
On Fri, Aug 17, 2018 at 06:22:16PM -0700, Christopher Clark wrote: > xenpmd writes battery information to xenstore, including a string with a > formatted hex value calculated from summing the lengths of four strings, > plus some constants. > > Each of the four strings has a maximum length of 31 bytes, excluding the > terminating zero byte. The strings are stored in 32-byte arrays in a > struct that is zeroed before it is populated, and logic that writes to > the strings uses strncpy and explicit zero termination. > > The maximum value to be supplied to the xenstore string is: > (9 * 4) + (31 * 4) + 4 , which is 164, ie. 0xa4. > > When used with this value, '%02x' will always fit within 3 bytes, but > gcc 8.2 is apparently not able to deduce this (observed when building > for a 32-bit ARM platform). > > This commit assists the compiler by applying a mask (0xff) to the value, > enabling it to observe a lower maximum value and so pass the truncation > length check. > > Prior to this change, building fails with the compiler warning: > > | xenpmd.c: In function 'write_battery_info_to_xenstore': > | xenpmd.c:354:23: error: '%02x' directive output may be truncated > writing between 2 and 8 bytes into a region of size 3 > [-Werror=format-truncation=] > | snprintf(val, 3, "%02x", > | ^~~~ > | xenpmd.c:354:22: note: directive argument in the range [40, 2147483778] > | snprintf(val, 3, "%02x", > | ^~~~~~ > | xenpmd.c:354:5: note: 'snprintf' output between 3 and 9 bytes into a > destination of size 3 > | snprintf(val, 3, "%02x", > | ^~~~~~~~~~~~~~~~~~~~~~~~ > | (unsigned int)(9*4 + > | ~~~~~~~~~~~~~~~~~~~~ > | strlen(info->model_number) + > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | strlen(info->serial_number) + > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | strlen(info->battery_type) + > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | strlen(info->oem_info) + 4)); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > | cc1: all warnings being treated as errors > > Signed-off-by: Christopher Clark <christopher.clark6@xxxxxxxxxxxxxx> Hmm... I just pushed a different fix for this to staging. Can you try if that works for you? Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |