Resize unamebuf[] to avoid warnings about snprintf() not having
enough buffer space. Also change named_os_uname() prototype so that it is now returning (const char *) rather than (char *). If uname() is not supported on a UNIX build prepopulate unamebuf[] with "unknown architecture".
This commit is contained in:
@@ -73,7 +73,7 @@ named_os_tzset(void);
|
||||
void
|
||||
named_os_started(void);
|
||||
|
||||
char *
|
||||
const char *
|
||||
named_os_uname(void);
|
||||
|
||||
#endif /* NAMED_OS_H */
|
||||
|
||||
@@ -903,8 +903,12 @@ named_os_tzset(void) {
|
||||
#endif /* ifdef HAVE_TZSET */
|
||||
}
|
||||
|
||||
static char unamebuf[BUFSIZ];
|
||||
static char *unamep = NULL;
|
||||
#ifdef HAVE_UNAME
|
||||
static char unamebuf[sizeof(struct utsname)];
|
||||
#else
|
||||
static const char unamebuf[] = { "unknown architecture" };
|
||||
#endif
|
||||
static const char *unamep = NULL;
|
||||
|
||||
static void
|
||||
getuname(void) {
|
||||
@@ -919,13 +923,11 @@ getuname(void) {
|
||||
|
||||
snprintf(unamebuf, sizeof(unamebuf), "%s %s %s %s", uts.sysname,
|
||||
uts.machine, uts.release, uts.version);
|
||||
#else /* ifdef HAVE_UNAME */
|
||||
snprintf(unamebuf, sizeof(unamebuf), "unknown architecture");
|
||||
#endif /* ifdef HAVE_UNAME */
|
||||
unamep = unamebuf;
|
||||
}
|
||||
|
||||
char *
|
||||
const char *
|
||||
named_os_uname(void) {
|
||||
if (unamep == NULL) {
|
||||
getuname();
|
||||
|
||||
@@ -70,7 +70,7 @@ named_os_tzset(void);
|
||||
void
|
||||
named_os_started(void);
|
||||
|
||||
char *
|
||||
const char *
|
||||
named_os_uname(void);
|
||||
|
||||
#endif /* NAMED_OS_H */
|
||||
|
||||
@@ -393,7 +393,7 @@ named_os_started(void) {
|
||||
}
|
||||
|
||||
static char unamebuf[BUFSIZ];
|
||||
static char *unamep = NULL;
|
||||
static const char *unamep = NULL;
|
||||
|
||||
static void
|
||||
getuname(void) {
|
||||
@@ -462,7 +462,7 @@ err:
|
||||
* GetVersionEx() returns 6.2 (aka Windows 8.1) since it was obsoleted
|
||||
* so we had to switch to the recommended way to get the Windows version.
|
||||
*/
|
||||
char *
|
||||
const char *
|
||||
named_os_uname(void) {
|
||||
if (unamep == NULL) {
|
||||
getuname();
|
||||
|
||||
Reference in New Issue
Block a user