X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftinfo%2Fcomp_error.c;h=48ab9777a2c767ae8edb310e2ea5e923a0743470;hp=24b85675795f352008059fade9157b96ffd7d01d;hb=f8f67d02e909c4d165fbed2ba2810c94f2862548;hpb=8e25fff6a5f576b6dc35eb02b9783fa58680d07b;ds=sidebyside diff --git a/ncurses/tinfo/comp_error.c b/ncurses/tinfo/comp_error.c index 24b85675..48ab9777 100644 --- a/ncurses/tinfo/comp_error.c +++ b/ncurses/tinfo/comp_error.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * + * Copyright (c) 1998-2016,2019 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -41,7 +41,7 @@ #include -MODULE_ID("$Id: comp_error.c,v 1.32 2011/07/29 00:40:41 tom Exp $") +MODULE_ID("$Id: comp_error.c,v 1.39 2019/01/20 02:31:22 tom Exp $") NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE; NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */ @@ -66,12 +66,14 @@ _nc_set_source(const char *const name) NCURSES_EXPORT(void) _nc_set_type(const char *const name) { +#define MY_SIZE (size_t) MAX_NAME_SIZE if (TermType == 0) - TermType = typeMalloc(char, MAX_NAME_SIZE + 1); + TermType = typeMalloc(char, MY_SIZE + 1); if (TermType != 0) { TermType[0] = '\0'; - if (name) - strncat(TermType, name, MAX_NAME_SIZE); + if (name) { + _nc_STRNCAT(TermType, name, MY_SIZE, MY_SIZE); + } } } @@ -85,7 +87,7 @@ _nc_get_type(char *name) } #endif if (name != 0) - strcpy(name, TermType != 0 ? TermType : ""); + _nc_STRCPY(name, TermType != 0 ? TermType : "", MAX_NAME_SIZE); } static NCURSES_INLINE void @@ -103,7 +105,7 @@ where_is_problem(void) } NCURSES_EXPORT(void) -_nc_warning(const char *const fmt,...) +_nc_warning(const char *const fmt, ...) { va_list argp; @@ -118,7 +120,7 @@ _nc_warning(const char *const fmt,...) } NCURSES_EXPORT(void) -_nc_err_abort(const char *const fmt,...) +_nc_err_abort(const char *const fmt, ...) { va_list argp; @@ -131,7 +133,7 @@ _nc_err_abort(const char *const fmt,...) } NCURSES_EXPORT(void) -_nc_syserr_abort(const char *const fmt,...) +_nc_syserr_abort(const char *const fmt, ...) { va_list argp; @@ -141,14 +143,25 @@ _nc_syserr_abort(const char *const fmt,...) fprintf(stderr, "\n"); va_end(argp); +#if defined(TRACE) || !defined(NDEBUG) /* If we're debugging, try to show where the problem occurred - this * will dump core. */ -#if defined(TRACE) || !defined(NDEBUG) - abort(); -#else +#ifndef USE_ROOT_ENVIRON + if (getuid() != ROOT_UID) +#endif + abort(); +#endif /* Dumping core in production code is not a good idea. */ exit(EXIT_FAILURE); -#endif } + +#if NO_LEAKS +NCURSES_EXPORT(void) +_nc_comp_error_leaks(void) +{ + FreeAndNull(SourceName); + FreeAndNull(TermType); +} +#endif