mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
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@netbsd.org> Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com> Reviewed-by: Roger Pau Monné <roger.pau@citrix.com> Release-Acked-by: Ian Jackson <iwj@xenproject.org> Plus define GNU_SOURCE for asprintf() Harmless on NetBSD. Signed-off-by: Manuel Bouyer <bouyer@netbsd.org> Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com> Release-Acked-by: Ian Jackson <iwj@xenproject.org>
This commit is contained in:
1 parent
9dc687f155
commit
bbed98e7ce
1 file changed
+5
-4
@@ -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;
|
||||
|
||||