[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] tools: fix several "format-truncation" errors with GCC 7



replace several snprintf with asprintf in xenpmd and tools/ocmal/xc
to fix the "format-truncation" errors caused by incorrect size of buffers.

Signed-off-by: Zhongze Liu <blackskygg@xxxxxxxxx>
---
CC: David Scott <dave@xxxxxxxxxx>
CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
CC: Wei Liu <wei.liu2@xxxxxxxxxx>
---
 tools/ocaml/libs/xc/xenctrl_stubs.c | 12 +++++-------
 tools/xenpmd/xenpmd.c               | 18 ++++++++++++------
 2 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c 
b/tools/ocaml/libs/xc/xenctrl_stubs.c
index 5e455519d4..7011930360 100644
--- a/tools/ocaml/libs/xc/xenctrl_stubs.c
+++ b/tools/ocaml/libs/xc/xenctrl_stubs.c
@@ -14,6 +14,7 @@
  * GNU Lesser General Public License for more details.
  */
 
+#define _GNU_SOURCE
 #define _XOPEN_SOURCE 600
 #include <stdlib.h>
 #include <errno.h>
@@ -54,20 +55,17 @@
 
 static void Noreturn failwith_xc(xc_interface *xch)
 {
-       char error_str[256];
+       char *error_str = NULL;
        if (xch) {
                const xc_error *error = xc_get_last_error(xch);
                if (error->code == XC_ERROR_NONE)
-                       snprintf(error_str, sizeof(error_str),
-                                "%d: %s", errno, strerror(errno));
+                       asprintf(&error_str, "%d: %s", errno, strerror(errno));
                else
-                       snprintf(error_str, sizeof(error_str),
-                                "%d: %s: %s", error->code,
+                       asprintf(&error_str, "%d: %s: %s", error->code,
                                 xc_error_code_to_desc(error->code),
                                 error->message);
        } else {
-               snprintf(error_str, sizeof(error_str),
-                        "Unable to open XC interface");
+               asprintf(&error_str, "Unable to open XC interface");
        }
        caml_raise_with_string(*caml_named_value("xc.error"), error_str);
 }
diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c
index b3a31062aa..2f4ef45a11 100644
--- a/tools/xenpmd/xenpmd.c
+++ b/tools/xenpmd/xenpmd.c
@@ -32,6 +32,7 @@
  * passed to the guest when appropriate battery ports are read/written to.
  */
 
+#define _GNU_SOURCE
 #include <stdio.h>
 #include <stdarg.h>
 #include <string.h>
@@ -100,7 +101,8 @@ FILE *get_next_battery_file(DIR *battery_dir,
 {
     FILE *file = 0;
     struct dirent *dir_entries;
-    char file_name[32];
+    char *file_name = NULL;
+    int rc = 0;
     
     do 
     {
@@ -110,12 +112,16 @@ FILE *get_next_battery_file(DIR *battery_dir,
         if ( strlen(dir_entries->d_name) < 4 )
             continue;
         if ( battery_info_type == BIF ) 
-            snprintf(file_name, 32, BATTERY_INFO_FILE_PATH,
-                     dir_entries->d_name);
+           rc = asprintf(&file_name, BATTERY_INFO_FILE_PATH,
+                         dir_entries->d_name);
         else 
-            snprintf(file_name, 32, BATTERY_STATE_FILE_PATH,
-                     dir_entries->d_name);
-        file = fopen(file_name, "r");
+            rc = asprintf(&file_name, BATTERY_STATE_FILE_PATH,
+                         dir_entries->d_name);
+
+       if ( -1 != rc ) {
+           file = fopen(file_name, "r");
+           free(file_name);
+       }
     } while ( !file );
 
     return file;
-- 
2.13.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.