|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] xenpmd.c: use dynamic allocation
commit bbed98e7cedcd5072671c21605330075740382d3
Author: Manuel Bouyer <bouyer@xxxxxxxxxx>
AuthorDate: Sat Jan 30 19:27:10 2021 +0100
Commit: Ian Jackson <iwj@xxxxxxxxxxxxxx>
CommitDate: Mon Feb 1 15:10:00 2021 +0000
xenpmd.c: use dynamic allocation
On NetBSD, d_name is larger than 256, so file_name[284] may not be large
enough (and gcc emits a format-truncation error).
Use asprintf() instead of snprintf() on a static on-stack buffer.
Signed-off-by: Manuel Bouyer <bouyer@xxxxxxxxxx>
Reviewed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Release-Acked-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
Plus
define GNU_SOURCE for asprintf()
Harmless on NetBSD.
Signed-off-by: Manuel Bouyer <bouyer@xxxxxxxxxx>
Reviewed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
Release-Acked-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
---
tools/xenpmd/xenpmd.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/tools/xenpmd/xenpmd.c b/tools/xenpmd/xenpmd.c
index 12b82cf43e..8e783181e1 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 /* for asprintf() */
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
@@ -101,7 +102,7 @@ FILE *get_next_battery_file(DIR *battery_dir,
{
FILE *file = 0;
struct dirent *dir_entries;
- char file_name[284];
+ char *file_name;
int ret;
do
@@ -112,16 +113,16 @@ FILE *get_next_battery_file(DIR *battery_dir,
if ( strlen(dir_entries->d_name) < 4 )
continue;
if ( battery_info_type == BIF )
- ret = snprintf(file_name, sizeof(file_name),
BATTERY_INFO_FILE_PATH,
+ ret = asprintf(&file_name, BATTERY_INFO_FILE_PATH,
dir_entries->d_name);
else
- ret = snprintf(file_name, sizeof(file_name),
BATTERY_STATE_FILE_PATH,
+ ret = asprintf(&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");
+ free(file_name);
} while ( !file );
return file;
--
generated by git-patchbot for /home/xen/git/xen.git#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |