mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
tools/xenpmd: fix possible '\0' truncation
gcc-8 complains:
xenpmd.c:207:9: error: 'strncpy' specified bound 32 equals destination size [-Werror=stringop-truncation]
strncpy(info->oem_info, attrib_value, 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xenpmd.c:201:9: error: 'strncpy' specified bound 32 equals destination size [-Werror=stringop-truncation]
strncpy(info->battery_type, attrib_value, 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xenpmd.c:195:9: error: 'strncpy' specified bound 32 equals destination size [-Werror=stringop-truncation]
strncpy(info->serial_number, attrib_value, 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
xenpmd.c:189:9: error: 'strncpy' specified bound 32 equals destination size [-Werror=stringop-truncation]
strncpy(info->model_number, attrib_value, 32);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copy 31 chars, then make sure terminating '\0' is present. Those fields
are passed to strlen and as '%s' for snprintf later.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Release-Acked-by: Juergen Gross <jgross@suse.com>
(cherry picked from commit 938c8f53b1)
This commit is contained in:
1 parent
9737f89b07
commit
f034ab45c1
1 file changed
+8
-4
@@ -186,25 +186,29 @@ void set_attribute_battery_info(char *attrib_name,
|
||||
|
||||
if ( strstr(attrib_name, "model number") )
|
||||
{
|
||||
strncpy(info->model_number, attrib_value, 32);
|
||||
strncpy(info->model_number, attrib_value, 31);
|
||||
info->model_number[31] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
if ( strstr(attrib_name, "serial number") )
|
||||
{
|
||||
strncpy(info->serial_number, attrib_value, 32);
|
||||
strncpy(info->serial_number, attrib_value, 31);
|
||||
info->serial_number[31] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
if ( strstr(attrib_name, "battery type") )
|
||||
{
|
||||
strncpy(info->battery_type, attrib_value, 32);
|
||||
strncpy(info->battery_type, attrib_value, 31);
|
||||
info->battery_type[31] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
if ( strstr(attrib_name, "OEM info") )
|
||||
{
|
||||
strncpy(info->oem_info, attrib_value, 32);
|
||||
strncpy(info->oem_info, attrib_value, 31);
|
||||
info->oem_info[31] = '\0';
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||