From: Bertrand Marquis Date: Thu, 15 Oct 2020 09:16:09 +0000 (+0100) Subject: tools/xenpmd: Fix gcc10 snprintf warning X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~1496 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0dfddb2116e3757f77a691a3fe335173088d69dc;p=xen.git tools/xenpmd: Fix gcc10 snprintf warning Add a check for snprintf return code and ignore the entry if we get an error. This should in fact never happen and is more a trick to make gcc happy and prevent compilation errors. This is solving the following gcc warning when compiling for arm32 host platforms with optimization activated: xenpmd.c:92:37: error: '%s' directive output may be truncated writing between 4 and 2147483645 bytes into a region of size 271 [-Werror=format-truncation=] This is also solving the following Debian bug: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=970802 Signed-off-by: Bertrand Marquis Acked-by: Wei Liu --- diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c index 35fd1c931a..12b82cf43e 100644 --- a/tools/xenpmd/xenpmd.c +++ b/tools/xenpmd/xenpmd.c @@ -102,6 +102,7 @@ FILE *get_next_battery_file(DIR *battery_dir, FILE *file = 0; struct dirent *dir_entries; char file_name[284]; + int ret; do { @@ -111,11 +112,15 @@ FILE *get_next_battery_file(DIR *battery_dir, if ( strlen(dir_entries->d_name) < 4 ) continue; if ( battery_info_type == BIF ) - snprintf(file_name, sizeof(file_name), BATTERY_INFO_FILE_PATH, + ret = snprintf(file_name, sizeof(file_name), BATTERY_INFO_FILE_PATH, dir_entries->d_name); else - snprintf(file_name, sizeof(file_name), BATTERY_STATE_FILE_PATH, + ret = snprintf(file_name, sizeof(file_name), BATTERY_STATE_FILE_PATH, dir_entries->d_name); + /* This should not happen but is needed to pass gcc checks */ + if (ret < 0) + continue; + file_name[sizeof(file_name) - 1] = '\0'; file = fopen(file_name, "r"); } while ( !file );