telnetd: Stop defining the same variables concurrently in bss and data

auth_level and require_secure_login were defined in two places:

 - global.c that picked it from headers and removed 'extern'
 - telnetd.c that initialized it to 0

line was defined twice: in global.c and sys_term.c with a non-zero value.
Remove the definition and initialization from sys_term.c and initialize
the variable early in main().

Detected during the build of telned with Address Sanitizer (MKSANITIZER).

Reviewed by <mrg>
This commit is contained in:
kamil 2019-08-15 01:15:21 +00:00
parent 4cfa5c766e
commit d9a1e5d37f
2 changed files with 8 additions and 19 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: sys_term.c,v 1.48 2018/12/13 04:29:18 maya Exp $ */ /* $NetBSD: sys_term.c,v 1.49 2019/08/15 01:15:21 kamil Exp $ */
/* /*
* Copyright (c) 1989, 1993 * Copyright (c) 1989, 1993
@ -34,7 +34,7 @@
#if 0 #if 0
static char sccsid[] = "@(#)sys_term.c 8.4+1 (Berkeley) 5/30/95"; static char sccsid[] = "@(#)sys_term.c 8.4+1 (Berkeley) 5/30/95";
#else #else
__RCSID("$NetBSD: sys_term.c,v 1.48 2018/12/13 04:29:18 maya Exp $"); __RCSID("$NetBSD: sys_term.c,v 1.49 2019/08/15 01:15:21 kamil Exp $");
#endif #endif
#endif /* not lint */ #endif /* not lint */
@ -177,13 +177,6 @@ spcset(int func, cc_t *valp, cc_t **valpp)
* *
* Returns the file descriptor of the opened pty. * Returns the file descriptor of the opened pty.
*/ */
#ifndef __GNUC__
char *line = NULL16STR;
#else
static char Xline[] = NULL16STR;
char *line = Xline;
#endif
static int ptyslavefd; /* for cleanopen() */ static int ptyslavefd; /* for cleanopen() */

View File

@ -1,4 +1,4 @@
/* $NetBSD: telnetd.c,v 1.55 2014/02/27 18:20:21 joerg Exp $ */ /* $NetBSD: telnetd.c,v 1.56 2019/08/15 01:15:21 kamil Exp $ */
/* /*
* Copyright (C) 1997 and 1998 WIDE Project. * Copyright (C) 1997 and 1998 WIDE Project.
@ -65,7 +65,7 @@ __COPYRIGHT("@(#) Copyright (c) 1989, 1993\
#if 0 #if 0
static char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95"; static char sccsid[] = "@(#)telnetd.c 8.4 (Berkeley) 5/30/95";
#else #else
__RCSID("$NetBSD: telnetd.c,v 1.55 2014/02/27 18:20:21 joerg Exp $"); __RCSID("$NetBSD: telnetd.c,v 1.56 2019/08/15 01:15:21 kamil Exp $");
#endif #endif
#endif /* not lint */ #endif /* not lint */
@ -86,18 +86,10 @@ __RCSID("$NetBSD: telnetd.c,v 1.55 2014/02/27 18:20:21 joerg Exp $");
#include <krb5/com_err.h> #include <krb5/com_err.h>
#endif #endif
#ifdef AUTHENTICATION
int auth_level = 0;
#endif
#if defined(AUTHENTICATION) || defined(ENCRYPTION) #if defined(AUTHENTICATION) || defined(ENCRYPTION)
#include <libtelnet/misc.h> #include <libtelnet/misc.h>
#endif #endif
#ifdef SECURELOGIN
int require_secure_login = 0;
#endif
extern int require_hwpreauth; extern int require_hwpreauth;
#ifdef KRB5 #ifdef KRB5
extern krb5_context telnet_context; extern krb5_context telnet_context;
@ -164,6 +156,8 @@ struct sockaddr_storage from;
int int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
static char Xline[] = NULL16STR;
socklen_t fromlen; socklen_t fromlen;
int on = 1; int on = 1;
int ch; int ch;
@ -171,6 +165,8 @@ main(int argc, char *argv[])
int tos = -1; int tos = -1;
#endif #endif
line = Xline;
pfrontp = pbackp = ptyobuf; pfrontp = pbackp = ptyobuf;
netip = netibuf; netip = netibuf;
nfrontp = nbackp = netobuf; nfrontp = nbackp = netobuf;