2003-12-22 Christian Hammers <ch@lathspell.de>

* configure.ac (and everywhere a regular file is opened for
          writing): use file permissions from configure rather than
          compiled-in umask.
This commit is contained in:
gdt 2003-12-22 20:15:53 +00:00
parent 47ce02a8f1
commit aa593d5e26
9 changed files with 77 additions and 10 deletions

View file

@ -1,3 +1,9 @@
2003-12-22 Christian Hammers <ch@lathspell.de>
* configure.ac (and everywhere a regular file is opened for
writing): use file permissions from configure rather than
compiled-in umask.
2003-12-22 Hasso Tepper <hasso@estpak.ee>
* lib/linklist.c: Revert microfix I commited while reverting

4
NEWS
View file

@ -8,6 +8,10 @@
directory from $(sysconfdir), easing NetBSD pkgsrc hierarchy rules
compliance.
- New configure options --enable-configfile-mask and
--enable-logfile-mask to set umask values for config and log
values. Masks default to 0600, matching previous behavior.
* Changes in Quagga 0.96.4
- Further fixes to ospfd, some relating to the PtP revert. Interface

View file

@ -95,6 +95,7 @@ bgp_dump_open_file (struct bgp_dump *bgp_dump)
struct tm *tm;
char fullpath[MAXPATHLEN];
char realpath[MAXPATHLEN];
mode_t oldumask;
time (&clock);
tm = localtime (&clock);
@ -117,10 +118,15 @@ bgp_dump_open_file (struct bgp_dump *bgp_dump)
fclose (bgp_dump->fp);
oldumask = umask(0777 & ~LOGFILE_MASK);
bgp_dump->fp = fopen (realpath, "w");
if (bgp_dump->fp == NULL)
return NULL;
{
umask(oldumask);
return NULL;
}
umask(oldumask);
return bgp_dump->fp;
}

View file

@ -115,6 +115,10 @@ AC_ARG_ENABLE(quagga_group,
[ --enable-group=ARG group to run Quagga suite as (default quagga)])
AC_ARG_ENABLE(vty_group,
[ --enable-vty-group=ARG set vty sockets to have specified group as owner])
AC_ARG_ENABLE(configfile_mask,
[ --enable-configfile-mask=ARG set mask for config files])
AC_ARG_ENABLE(logfile_mask,
[ --enable-logfile-mask=ARG set mask for log files])
AC_ARG_ENABLE(rtadv,
[ --disable-rtadv disable IPV6 router advertisement feature])
@ -176,6 +180,12 @@ elif test x"${enable_vty_group}" != x""; then
fi
fi
enable_configfile_mask=${enable_configfile_mask:-0600}
AC_DEFINE_UNQUOTED(CONFIGFILE_MASK, ${enable_configfile_mask}, Mask for config files)
enable_logfile_mask=${enable_logfile_mask:-0600}
AC_DEFINE_UNQUOTED(LOGFILE_MASK, ${enable_logfile_mask}, Mask for log files)
changequote(, )dnl
MULTIPATH_NUM=1
@ -1073,6 +1083,8 @@ example directory : `eval echo \`echo ${exampledir}\``
user to run as : ${enable_user}
group to run as : ${enable_group}
group for vty sockets : ${enable_vty_group}
config file mask : ${enable_configfile_mask}
log file mask : ${enable_logfile_mask}
The above user and group must have read/write access to the state file
directory and to the config files in the config file directory.

View file

@ -2552,6 +2552,14 @@ DEFUN (config_write_file,
free (config_file_sav);
free (config_file_tmp);
if (chmod (config_file, CONFIGFILE_MASK) != 0)
{
vty_out (vty, "Can't chmod configuration file %s: %s (%d).%s",
config_file, strerror(errno), errno, VTY_NEWLINE);
return CMD_WARNING;
}
vty_out (vty, "Configuration saved to %s%s", config_file,
VTY_NEWLINE);
return CMD_SUCCESS;

View file

@ -365,6 +365,7 @@ int
zlog_set_file (struct zlog *zl, int flags, char *filename)
{
FILE *fp;
mode_t oldumask;
/* There is opend file. */
zlog_reset_file (zl);
@ -374,9 +375,14 @@ zlog_set_file (struct zlog *zl, int flags, char *filename)
zl = zlog_default;
/* Open file. */
oldumask = umask (0777 & ~LOGFILE_MASK);
fp = fopen (filename, "a");
if (fp == NULL)
return 0;
{
umask(oldumask);
return 0;
}
umask(oldumask);
/* Set flags. */
zl->filename = strdup (filename);
@ -421,9 +427,16 @@ zlog_rotate (struct zlog *zl)
if (zl->filename)
{
mode_t oldumask;
oldumask = umask (0777 & ~LOGFILE_MASK);
fp = fopen (zl->filename, "a");
if (fp == NULL)
return -1;
{
umask(oldumask);
return -1;
}
umask(oldumask);
zl->fp = fp;
}

View file

@ -32,16 +32,20 @@ pid_output (char *path)
#ifndef HAVE_FCNTL
FILE *fp;
pid_t pid;
mask_t oldumask;
pid = getpid();
oldumask = umask(0777 & ~LOGFILE_MASK);
fp = fopen (path, "w");
if (fp != NULL)
{
fprintf (fp, "%d\n", (int) pid);
fclose (fp);
umask(oldumask);
return -1;
}
umask(oldumask);
return pid;
#else
return pid_output_lock(path);
@ -57,18 +61,23 @@ pid_output_lock (char *path)
pid_t pid;
char buf[16];
struct flock lock;
mode_t oldumask;
pid = getpid ();
fd = open (path, O_RDWR | O_CREAT, 0644);
oldumask = umask(0777 & ~LOGFILE_MASK);
zlog_err( "old umask %d %d", oldumask, 0777 & ~LOGFILE_MASK);
fd = open (path, O_RDWR | O_CREAT, LOGFILE_MASK);
if (fd < 0)
{
zlog_err( "Can't creat pid lock file %s (%s), exit",
path, strerror(errno));
umask(oldumask);
exit (-1);
}
else
{
umask(oldumask);
memset (&lock, 0, sizeof(lock));
lock.l_type = F_WRLCK;

View file

@ -2185,6 +2185,14 @@ vty_use_backup_config (char *fullpath)
close (sav);
close (tmp);
if (chmod(fullpath_tmp, CONFIGFILE_MASK) != 0)
{
free (fullpath_sav);
free (fullpath_tmp);
unlink (fullpath_tmp);
return NULL;
}
if (link (fullpath_tmp, fullpath) == 0)
ret = fopen (fullpath, "r");

View file

@ -1287,14 +1287,10 @@ DEFUN (no_vtysh_write_config,
int write_config_integrated(void)
{
int ret;
mode_t old_umask;
char line[] = "write terminal\n";
FILE *fp;
char *integrate_sav = NULL;
/* config files have 0600 perms... */
old_umask = umask (0077);
integrate_sav = malloc (strlen (integrate_default)
+ strlen (CONF_BACKUP_EXT) + 1);
strcpy (integrate_sav, integrate_default);
@ -1312,7 +1308,6 @@ int write_config_integrated(void)
if (fp == NULL)
{
fprintf (stdout,"%% Can't open configuration file %s.\n", integrate_default);
umask (old_umask);
return CMD_SUCCESS;
}
@ -1329,11 +1324,17 @@ int write_config_integrated(void)
fclose (fp);
if (chmod (integrate_default, CONFIGFILE_MASK) != 0)
{
fprintf (stdout,"%% Can't chmod configuration file %s: %s (%d)\n",
integrate_default, strerror(errno), errno);
return CMD_WARNING;
}
fprintf(stdout,"Integrated configuration saved to %s\n",integrate_default);
fprintf (stdout,"[OK]\n");
umask (old_umask);
return CMD_SUCCESS;
}