2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-09-02 15:25:48 +00:00

[master] GCC 9 compilation errors fixed.

Merge branch '15-confpars-c-has-invalid-error-messages-when-memory-allocation-fails'
This commit is contained in:
Thomas Markwalder
2019-06-12 10:06:30 -04:00
8 changed files with 43 additions and 28 deletions

View File

@@ -135,6 +135,10 @@ by Eric Young (eay@cryptsoft.com).
and submitting a patch. and submitting a patch.
[ISC-Bugs #13,!7 git dfcbe359ab278cad70015994ca73ef50d626b23a] [ISC-Bugs #13,!7 git dfcbe359ab278cad70015994ca73ef50d626b23a]
- Made minor changes to eliminate warnings when compiled with GCC 9.
Thanks to Brett Neumeier for bringing the matter to our attention.
[ISC-Bugs #15,!10 git c138f38bd00ceca4e1e51a4db7542a15ef79babd]
Changes since 4.4.0 (New Features) Changes since 4.4.0 (New Features)
- none - none
Changes since 4.4.0 (Bug Fixes) Changes since 4.4.0 (Bug Fixes)

View File

@@ -643,7 +643,9 @@ discover_interfaces(int state) {
log_fatal("Error allocating interface %s: %s", log_fatal("Error allocating interface %s: %s",
info.name, isc_result_totext(status)); info.name, isc_result_totext(status));
} }
strncpy(tmp->name, info.name, sizeof(tmp->name) - 1);
memcpy(tmp->name, info.name, sizeof(tmp->name));
interface_snorf(tmp, ir); interface_snorf(tmp, ir);
interface_dereference(&tmp, MDL); interface_dereference(&tmp, MDL);
tmp = interfaces; /* XXX */ tmp = interfaces; /* XXX */

View File

@@ -3,7 +3,7 @@
Common parser code for dhcpd and dhclient. */ Common parser code for dhcpd and dhclient. */
/* /*
* Copyright (c) 2004-2017 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 2004-2019 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1995-2003 by Internet Software Consortium * Copyright (c) 1995-2003 by Internet Software Consortium
* *
* This Source Code Form is subject to the terms of the Mozilla Public * This Source Code Form is subject to the terms of the Mozilla Public
@@ -5566,19 +5566,25 @@ int parse_warn (struct parse *cfile, const char *fmt, ...)
{ {
va_list list; va_list list;
char lexbuf [256]; char lexbuf [256];
char mbuf [1024]; char mbuf [1024]; /* errorwarn.c CVT_BUF_MAX + 1 */
char fbuf [1024]; char fbuf [2048];
char final[4096];
unsigned i, lix; unsigned i, lix;
do_percentm (mbuf, fmt); /* Replace %m in fmt with errno error text */
do_percentm (mbuf, sizeof(mbuf), fmt);
/* %Audit% This is log output. %2004.06.17,Safe% /* %Audit% This is log output. %2004.06.17,Safe%
* If we truncate we hope the user can get a hint from the log. * If we truncate we hope the user can get a hint from the log.
*/ */
/* Prepend the file and line number */
snprintf (fbuf, sizeof fbuf, "%s line %d: %s", snprintf (fbuf, sizeof fbuf, "%s line %d: %s",
cfile -> tlname, cfile -> lexline, mbuf); cfile -> tlname, cfile -> lexline, mbuf);
/* Now add the var args to the format for the final log message. */
va_start (list, fmt); va_start (list, fmt);
vsnprintf (mbuf, sizeof mbuf, fbuf, list); vsnprintf (final, sizeof final, fbuf, list);
va_end (list); va_end (list);
lix = 0; lix = 0;
@@ -5594,14 +5600,14 @@ int parse_warn (struct parse *cfile, const char *fmt, ...)
lexbuf [lix] = 0; lexbuf [lix] = 0;
#ifndef DEBUG #ifndef DEBUG
syslog (LOG_ERR, "%s", mbuf); syslog (LOG_ERR, "%s", final);
syslog (LOG_ERR, "%s", cfile -> token_line); syslog (LOG_ERR, "%s", cfile -> token_line);
if (cfile -> lexchar < 81) if (cfile -> lexchar < 81)
syslog (LOG_ERR, "%s^", lexbuf); syslog (LOG_ERR, "%s^", lexbuf);
#endif #endif
if (log_perror) { if (log_perror) {
IGNORE_RET (write (STDERR_FILENO, mbuf, strlen (mbuf))); IGNORE_RET (write (STDERR_FILENO, final, strlen (final)));
IGNORE_RET (write (STDERR_FILENO, "\n", 1)); IGNORE_RET (write (STDERR_FILENO, "\n", 1));
IGNORE_RET (write (STDERR_FILENO, cfile -> token_line, IGNORE_RET (write (STDERR_FILENO, cfile -> token_line,
strlen (cfile -> token_line))); strlen (cfile -> token_line)));

View File

@@ -3,7 +3,7 @@
Definitions for dhcpd... */ Definitions for dhcpd... */
/* /*
* Copyright (c) 2004-2018 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 2004-2019 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996-2003 by Internet Software Consortium * Copyright (c) 1996-2003 by Internet Software Consortium
* *
* This Source Code Form is subject to the terms of the Mozilla Public * This Source Code Form is subject to the terms of the Mozilla Public
@@ -1393,6 +1393,7 @@ struct interface_info {
unsigned remote_id_len; /* Length of Remote ID. */ unsigned remote_id_len; /* Length of Remote ID. */
char name [IFNAMSIZ]; /* Its name... */ char name [IFNAMSIZ]; /* Its name... */
int index; /* Its if_nametoindex(). */ int index; /* Its if_nametoindex(). */
int rfdesc; /* Its read file descriptor. */ int rfdesc; /* Its read file descriptor. */
int wfdesc; /* Its write file descriptor, if int wfdesc; /* Its write file descriptor, if

View File

@@ -288,7 +288,8 @@ int log_info (const char *, ...)
__attribute__((__format__(__printf__,1,2))); __attribute__((__format__(__printf__,1,2)));
int log_debug (const char *, ...) int log_debug (const char *, ...)
__attribute__((__format__(__printf__,1,2))); __attribute__((__format__(__printf__,1,2)));
void do_percentm (char *obuf, const char *ibuf);
void do_percentm (char *obuf, size_t obufsize, const char *ibuf);
isc_result_t uerr2isc (int); isc_result_t uerr2isc (int);
isc_result_t ns_rcode_to_isc (int); isc_result_t ns_rcode_to_isc (int);

View File

@@ -54,7 +54,7 @@ void log_fatal (const char * fmt, ... )
{ {
va_list list; va_list list;
do_percentm (fbuf, fmt); do_percentm (fbuf, sizeof fbuf, fmt);
/* %Audit% This is log output. %2004.06.17,Safe% /* %Audit% This is log output. %2004.06.17,Safe%
* If we truncate we hope the user can get a hint from the log. * If we truncate we hope the user can get a hint from the log.
@@ -93,7 +93,7 @@ int log_error (const char * fmt, ...)
{ {
va_list list; va_list list;
do_percentm (fbuf, fmt); do_percentm (fbuf, sizeof fbuf, fmt);
/* %Audit% This is log output. %2004.06.17,Safe% /* %Audit% This is log output. %2004.06.17,Safe%
* If we truncate we hope the user can get a hint from the log. * If we truncate we hope the user can get a hint from the log.
@@ -120,7 +120,7 @@ int log_info (const char *fmt, ...)
{ {
va_list list; va_list list;
do_percentm (fbuf, fmt); do_percentm (fbuf, sizeof fbuf, fmt);
/* %Audit% This is log output. %2004.06.17,Safe% /* %Audit% This is log output. %2004.06.17,Safe%
* If we truncate we hope the user can get a hint from the log. * If we truncate we hope the user can get a hint from the log.
@@ -147,7 +147,7 @@ int log_debug (const char *fmt, ...)
{ {
va_list list; va_list list;
do_percentm (fbuf, fmt); do_percentm (fbuf, sizeof fbuf, fmt);
/* %Audit% This is log output. %2004.06.17,Safe% /* %Audit% This is log output. %2004.06.17,Safe%
* If we truncate we hope the user can get a hint from the log. * If we truncate we hope the user can get a hint from the log.
@@ -170,8 +170,9 @@ int log_debug (const char *fmt, ...)
/* Find %m in the input string and substitute an error message string. */ /* Find %m in the input string and substitute an error message string. */
void do_percentm (obuf, ibuf) void do_percentm (obuf, obufsize, ibuf)
char *obuf; char *obuf;
size_t obufsize;
const char *ibuf; const char *ibuf;
{ {
const char *s = ibuf; const char *s = ibuf;
@@ -191,13 +192,13 @@ void do_percentm (obuf, ibuf)
if (!m) if (!m)
m = "<unknown error>"; m = "<unknown error>";
len += strlen (m); len += strlen (m);
if (len > CVT_BUF_MAX) if (len > obufsize - 1)
goto out; goto out;
strcpy (p - 1, m); strcpy (p - 1, m);
p += strlen (p); p += strlen (p);
++s; ++s;
} else { } else {
if (++len > CVT_BUF_MAX) if (++len > obufsize - 1)
goto out; goto out;
*p++ = *s++; *p++ = *s++;
} }
@@ -205,7 +206,7 @@ void do_percentm (obuf, ibuf)
} else { } else {
if (*s == '%') if (*s == '%')
infmt = 1; infmt = 1;
if (++len > CVT_BUF_MAX) if (++len > obufsize - 1)
goto out; goto out;
*p++ = *s++; *p++ = *s++;
} }

View File

@@ -3,7 +3,7 @@
DHCP/BOOTP Relay Agent. */ DHCP/BOOTP Relay Agent. */
/* /*
* Copyright(c) 2004-2018 by Internet Systems Consortium, Inc.("ISC") * Copyright(c) 2004-2019 by Internet Systems Consortium, Inc.("ISC")
* Copyright(c) 1997-2003 by Internet Software Consortium * Copyright(c) 1997-2003 by Internet Software Consortium
* *
* This Source Code Form is subject to the terms of the Mozilla Public * This Source Code Form is subject to the terms of the Mozilla Public
@@ -2119,7 +2119,7 @@ void request_v4_interface(const char* name, int flags) {
(flags & INTERFACE_UPSTREAM ? 'Y' : 'N'), (flags & INTERFACE_UPSTREAM ? 'Y' : 'N'),
(flags & INTERFACE_DOWNSTREAM ? 'Y' : 'N')); (flags & INTERFACE_DOWNSTREAM ? 'Y' : 'N'));
strncpy(tmp->name, name, len); memcpy(tmp->name, name, len);
interface_snorf(tmp, (INTERFACE_REQUESTED | flags)); interface_snorf(tmp, (INTERFACE_REQUESTED | flags));
interface_dereference(&tmp, MDL); interface_dereference(&tmp, MDL);
} }

View File

@@ -3,7 +3,7 @@
Parser for dhcpd config file... */ Parser for dhcpd config file... */
/* /*
* Copyright (c) 2004-2017 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 2004-2019 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1995-2003 by Internet Software Consortium * Copyright (c) 1995-2003 by Internet Software Consortium
* *
* This Source Code Form is subject to the terms of the Mozilla Public * This Source Code Form is subject to the terms of the Mozilla Public
@@ -911,7 +911,7 @@ void parse_failover_peer (cfile, group, type)
if (is_identifier (token) || token == STRING) { if (is_identifier (token) || token == STRING) {
name = dmalloc (strlen (val) + 1, MDL); name = dmalloc (strlen (val) + 1, MDL);
if (!name) if (!name)
log_fatal ("no memory for peer name %s", name); log_fatal ("no memory for peer name %s", val);
strcpy (name, val); strcpy (name, val);
} else { } else {
parse_warn (cfile, "expecting failover peer name."); parse_warn (cfile, "expecting failover peer name.");
@@ -1226,7 +1226,7 @@ void parse_failover_state_declaration (struct parse *cfile,
name = dmalloc (strlen (val) + 1, MDL); name = dmalloc (strlen (val) + 1, MDL);
if (!name) if (!name)
log_fatal ("failover peer name %s: no memory", log_fatal ("failover peer name %s: no memory",
name); val);
strcpy (name, val); strcpy (name, val);
} else { } else {
parse_warn (cfile, "expecting failover peer name."); parse_warn (cfile, "expecting failover peer name.");