diff options
-rw-r--r-- | NEWS | 11 | ||||
-rw-r--r-- | env.c | 26 |
2 files changed, 26 insertions, 11 deletions
@@ -65,11 +65,12 @@ removed from a 6.5.0 or newer release.) fetchmail-6.4.1 (released 2019-09-28, 27459 LoC): -## REGRESSION FIX: -* The bug fix Debian Bug#941129 was incomplete and caused a regression - in the default file locations, so that fetchmail was no longer able to - find it configuration files in some situations. - Reported by Cy Schubert. +## REGRESSION FIXES: +* The bug fix Debian Bug#941129 was incomplete and caused + + a regression in the default file locations, so that fetchmail was no longer + able to find it configuration files in some situations. + Reported by Cy Schubert. + + a regression under _FORTIFY_SOURCE where PATH_MAX > minimal _POSIX_PATH_MAX. -------------------------------------------------------------------------------- @@ -137,9 +137,16 @@ void envquery(int argc, char **argv) * without changing behaviour. */ { - static char _home_abs[_POSIX_PATH_MAX]; - char *tmp = realpath(home, _home_abs); - if (tmp) home = _home_abs; + static char *_home_abs; + char *tmp; + if (_home_abs) free(_home_abs), _home_abs = 0; + tmp = realpath(home, NULL); + if (tmp) { + home = _home_abs = tmp; + } else { + report(stderr, GT_("Cannot find absolute path for user's home directory.\n")); + exit(PS_UNDEFINED); + } } /* compute fetchmail's home directory */ @@ -154,9 +161,16 @@ void envquery(int argc, char **argv) * This is to fix Debian Bug#941129 by Alex Andreotti. */ { - static char _fmhome_abs[_POSIX_PATH_MAX]; - char *tmp = realpath(fmhome, _fmhome_abs); - if (tmp) fmhome = _fmhome_abs; + static char *_fmhome_abs; + char *tmp; + if (_fmhome_abs) free(_fmhome_abs), _fmhome_abs = 0; + tmp = realpath(fmhome, NULL); + if (tmp) { + fmhome = _fmhome_abs = tmp; + } else { + report(stderr, GT_("Cannot find absolute path for fetchmail's home directory.\n")); + exit(PS_UNDEFINED); + } } #define RCFILE_NAME "fetchmailrc" |