[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 |