[policycoreutils/f16] Add listing of distribution equivalence class from semanage fcontext -l Add checking to semanage fco
Daniel J Walsh
dwalsh at fedoraproject.org
Wed Nov 16 20:44:11 UTC 2011
commit d3b43fe3963492cf4e9ce8c50600771f37a05f1c
Author: Dan Walsh <dwalsh at redhat.com>
Date: Wed Nov 16 15:44:06 2011 -0500
Add listing of distribution equivalence class from semanage fcontext -l
Add checking to semanage fcontext -a to guarantee a file specification will not be masked by an equivalence
Update to latest sepolgen
Allow ~ as a valid part of a filename in sepolgen
policycoreutils-f17.patch | 144 +++++++++++++++++++++++++++++++++------------
policycoreutils.spec | 8 ++-
2 files changed, 111 insertions(+), 41 deletions(-)
---
diff --git a/policycoreutils-f17.patch b/policycoreutils-f17.patch
index 85cd9ab..6e1fa7e 100644
--- a/policycoreutils-f17.patch
+++ b/policycoreutils-f17.patch
@@ -1,6 +1,6 @@
diff -up policycoreutils-2.1.4/audit2allow/audit2allow.f17 policycoreutils-2.1.4/audit2allow/audit2allow
---- policycoreutils-2.1.4/audit2allow/audit2allow.f17 2011-10-31 11:12:36.857781128 -0400
-+++ policycoreutils-2.1.4/audit2allow/audit2allow 2011-10-31 11:12:37.170780967 -0400
+--- policycoreutils-2.1.4/audit2allow/audit2allow.f17 2011-11-16 11:31:29.915038771 -0500
++++ policycoreutils-2.1.4/audit2allow/audit2allow 2011-11-16 11:31:30.303038032 -0500
@@ -104,7 +104,7 @@ class AuditToPolicy:
if name:
options.requires = True
@@ -12,7 +12,7 @@ diff -up policycoreutils-2.1.4/audit2allow/audit2allow.f17 policycoreutils-2.1.4
# Make -M and -o conflict
diff -up policycoreutils-2.1.4/.gitignore.f17 policycoreutils-2.1.4/.gitignore
--- policycoreutils-2.1.4/.gitignore.f17 2011-08-18 06:52:31.000000000 -0400
-+++ policycoreutils-2.1.4/.gitignore 2011-10-31 11:12:37.170780967 -0400
++++ policycoreutils-2.1.4/.gitignore 2011-11-16 11:31:30.305038028 -0500
@@ -9,6 +9,7 @@ semodule_deps/semodule_deps
semodule_expand/semodule_expand
semodule_link/semodule_link
@@ -23,7 +23,7 @@ diff -up policycoreutils-2.1.4/.gitignore.f17 policycoreutils-2.1.4/.gitignore
setfiles/setfiles
diff -up policycoreutils-2.1.4/mcstrans/man/Makefile.f17 policycoreutils-2.1.4/mcstrans/man/Makefile
--- policycoreutils-2.1.4/mcstrans/man/Makefile.f17 2011-08-18 06:52:31.000000000 -0400
-+++ policycoreutils-2.1.4/mcstrans/man/Makefile 2011-10-31 11:12:37.170780967 -0400
++++ policycoreutils-2.1.4/mcstrans/man/Makefile 2011-11-16 11:31:30.306038026 -0500
@@ -1,7 +1,9 @@
# Installation directories.
MAN8DIR ?= $(DESTDIR)/usr/share/man/man8
@@ -36,8 +36,8 @@ diff -up policycoreutils-2.1.4/mcstrans/man/Makefile.f17 policycoreutils-2.1.4/m
install -m 644 man8/*.8 $(MAN8DIR)
diff -up policycoreutils-2.1.4/newrole/newrole.c.f17 policycoreutils-2.1.4/newrole/newrole.c
---- policycoreutils-2.1.4/newrole/newrole.c.f17 2011-10-31 11:12:36.858781127 -0400
-+++ policycoreutils-2.1.4/newrole/newrole.c 2011-10-31 11:12:37.171780966 -0400
+--- policycoreutils-2.1.4/newrole/newrole.c.f17 2011-11-16 11:31:29.918038765 -0500
++++ policycoreutils-2.1.4/newrole/newrole.c 2011-11-16 11:31:30.307038024 -0500
@@ -543,13 +543,13 @@ static int restore_environment(int prese
#if defined(AUDIT_LOG_PRIV) && !defined(NAMESPACE_PRIV)
static int drop_capabilities(int full)
@@ -56,16 +56,16 @@ diff -up policycoreutils-2.1.4/newrole/newrole.c.f17 policycoreutils-2.1.4/newro
if (setresuid(uid, uid, uid)) {
fprintf(stderr, _("Error changing uid, aborting.\n"));
diff -up policycoreutils-2.1.4/restorecond/restorecond_user.conf.f17 policycoreutils-2.1.4/restorecond/restorecond_user.conf
---- policycoreutils-2.1.4/restorecond/restorecond_user.conf.f17 2011-10-31 11:13:23.396756853 -0400
-+++ policycoreutils-2.1.4/restorecond/restorecond_user.conf 2011-10-31 11:13:31.549752558 -0400
+--- policycoreutils-2.1.4/restorecond/restorecond_user.conf.f17 2011-11-16 11:31:29.926038751 -0500
++++ policycoreutils-2.1.4/restorecond/restorecond_user.conf 2011-11-16 11:31:30.308038022 -0500
@@ -5,3 +5,4 @@
~/.fonts/*
~/.cache/*
~/.config/*
+~/.local/share/*
diff -up policycoreutils-2.1.4/restorecond/user.c.f17 policycoreutils-2.1.4/restorecond/user.c
---- policycoreutils-2.1.4/restorecond/user.c.f17 2011-10-31 11:14:22.239725545 -0400
-+++ policycoreutils-2.1.4/restorecond/user.c 2011-10-31 11:14:33.495719482 -0400
+--- policycoreutils-2.1.4/restorecond/user.c.f17 2011-11-16 11:31:29.927038749 -0500
++++ policycoreutils-2.1.4/restorecond/user.c 2011-11-16 11:31:30.309038021 -0500
@@ -123,6 +123,11 @@ io_channel_callback
sizeof (buffer),
&bytes_read);
@@ -110,8 +110,8 @@ diff -up policycoreutils-2.1.4/restorecond/user.c.f17 policycoreutils-2.1.4/rest
read_config(master_fd, watch_file);
diff -up policycoreutils-2.1.4/sandbox/sandbox.8.f17 policycoreutils-2.1.4/sandbox/sandbox.8
---- policycoreutils-2.1.4/sandbox/sandbox.8.f17 2011-11-11 15:27:33.999851089 -0500
-+++ policycoreutils-2.1.4/sandbox/sandbox.8 2011-11-11 15:27:39.190859121 -0500
+--- policycoreutils-2.1.4/sandbox/sandbox.8.f17 2011-11-16 11:31:29.932038739 -0500
++++ policycoreutils-2.1.4/sandbox/sandbox.8 2011-11-16 11:31:30.310038020 -0500
@@ -3,11 +3,11 @@
sandbox \- Run cmd under an SELinux sandbox
.SH SYNOPSIS
@@ -137,8 +137,8 @@ diff -up policycoreutils-2.1.4/sandbox/sandbox.8.f17 policycoreutils-2.1.4/sandb
Use control groups to control this copy of sandbox. Specify parameters in /etc/sysconfig/sandbox. Max memory usage and cpu usage are to be specified in percent. You can specify which CPUs to use by numbering them 0,1,2... etc.
.TP
diff -up policycoreutils-2.1.4/sandbox/sandbox.f17 policycoreutils-2.1.4/sandbox/sandbox
---- policycoreutils-2.1.4/sandbox/sandbox.f17 2011-10-31 11:12:36.860781127 -0400
-+++ policycoreutils-2.1.4/sandbox/sandbox 2011-11-11 15:28:06.707901631 -0500
+--- policycoreutils-2.1.4/sandbox/sandbox.f17 2011-11-16 11:31:29.931038741 -0500
++++ policycoreutils-2.1.4/sandbox/sandbox 2011-11-16 11:31:30.311038018 -0500
@@ -118,10 +118,30 @@ def reserve(level):
sock.bind("\0%s" % level)
fcntl.fcntl(sock.fileno(), fcntl.F_SETFD, fcntl.FD_CLOEXEC)
@@ -240,8 +240,8 @@ diff -up policycoreutils-2.1.4/sandbox/sandbox.f17 policycoreutils-2.1.4/sandbox
cmds += [ "--" ] + self.__paths
return subprocess.Popen(cmds).wait()
diff -up policycoreutils-2.1.4/sandbox/sandbox.init.f17 policycoreutils-2.1.4/sandbox/sandbox.init
---- policycoreutils-2.1.4/sandbox/sandbox.init.f17 2011-10-31 11:12:36.861781127 -0400
-+++ policycoreutils-2.1.4/sandbox/sandbox.init 2011-11-11 15:26:49.845782455 -0500
+--- policycoreutils-2.1.4/sandbox/sandbox.init.f17 2011-11-16 11:31:29.933038737 -0500
++++ policycoreutils-2.1.4/sandbox/sandbox.init 2011-11-16 11:31:30.312038016 -0500
@@ -13,7 +13,7 @@
# description: sandbox, xguest and other apps that want to use pam_namespace \
# require this script be run at boot. This service script does \
@@ -272,8 +272,8 @@ diff -up policycoreutils-2.1.4/sandbox/sandbox.init.f17 policycoreutils-2.1.4/sa
touch $LOCKFILE
mount --make-rshared / || return $?
diff -up policycoreutils-2.1.4/sandbox/seunshare.c.f17 policycoreutils-2.1.4/sandbox/seunshare.c
---- policycoreutils-2.1.4/sandbox/seunshare.c.f17 2011-10-31 11:12:36.862781127 -0400
-+++ policycoreutils-2.1.4/sandbox/seunshare.c 2011-10-31 11:12:37.171780966 -0400
+--- policycoreutils-2.1.4/sandbox/seunshare.c.f17 2011-11-16 11:31:29.937038729 -0500
++++ policycoreutils-2.1.4/sandbox/seunshare.c 2011-11-16 11:31:30.313038014 -0500
@@ -5,8 +5,9 @@
#define _GNU_SOURCE
@@ -343,8 +343,8 @@ diff -up policycoreutils-2.1.4/sandbox/seunshare.c.f17 policycoreutils-2.1.4/san
}
diff -up policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c.f17 policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c
---- policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c.f17 2011-10-31 11:12:36.863781126 -0400
-+++ policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c 2011-10-31 11:23:38.392773952 -0400
+--- policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c.f17 2011-11-16 11:31:29.941038721 -0500
++++ policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c 2011-11-16 11:31:30.314038012 -0500
@@ -52,8 +52,6 @@ static PyMethodDef methods[] = {
PyMODINIT_FUNC
initdefault_encoding_utf8(void)
@@ -357,7 +357,7 @@ diff -up policycoreutils-2.1.4/semanage/default_encoding/default_encoding.c.f17
}
diff -up policycoreutils-2.1.4/semanage/semanage.8.f17 policycoreutils-2.1.4/semanage/semanage.8
--- policycoreutils-2.1.4/semanage/semanage.8.f17 2011-08-18 06:52:31.000000000 -0400
-+++ policycoreutils-2.1.4/semanage/semanage.8 2011-10-31 11:12:37.171780966 -0400
++++ policycoreutils-2.1.4/semanage/semanage.8 2011-11-16 11:31:30.315038010 -0500
@@ -163,6 +163,9 @@ SELinux Type for the object
.I \-i, \-\-input
Take a set of commands from a specified file and load them in a single
@@ -369,8 +369,8 @@ diff -up policycoreutils-2.1.4/semanage/semanage.8.f17 policycoreutils-2.1.4/sem
.SH EXAMPLE
.nf
diff -up policycoreutils-2.1.4/semanage/semanage.f17 policycoreutils-2.1.4/semanage/semanage
---- policycoreutils-2.1.4/semanage/semanage.f17 2011-10-31 11:12:36.863781126 -0400
-+++ policycoreutils-2.1.4/semanage/semanage 2011-10-31 11:12:37.171780966 -0400
+--- policycoreutils-2.1.4/semanage/semanage.f17 2011-11-16 11:31:29.944038715 -0500
++++ policycoreutils-2.1.4/semanage/semanage 2011-11-16 11:31:30.317038006 -0500
@@ -575,3 +575,5 @@ Object-specific Options (see above):
errorExit(error.args[1])
except OSError, error:
@@ -378,8 +378,8 @@ diff -up policycoreutils-2.1.4/semanage/semanage.f17 policycoreutils-2.1.4/seman
+ except RuntimeError, error:
+ errorExit(error.args[0])
diff -up policycoreutils-2.1.4/semanage/seobject.py.f17 policycoreutils-2.1.4/semanage/seobject.py
---- policycoreutils-2.1.4/semanage/seobject.py.f17 2011-10-31 11:12:36.864781125 -0400
-+++ policycoreutils-2.1.4/semanage/seobject.py 2011-10-31 11:12:37.172780966 -0400
+--- policycoreutils-2.1.4/semanage/seobject.py.f17 2011-11-16 11:31:29.947038710 -0500
++++ policycoreutils-2.1.4/semanage/seobject.py 2011-11-16 15:42:22.719523501 -0500
@@ -1,5 +1,5 @@
#! /usr/bin/python -E
-# Copyright (C) 2005, 2006, 2007, 2008, 2009 Red Hat
@@ -495,7 +495,53 @@ diff -up policycoreutils-2.1.4/semanage/seobject.py.f17 policycoreutils-2.1.4/se
if is_mls_enabled:
for k in keys:
print "%-30s %s:%s:%s:%s " % (k,ddict[k][0], ddict[k][1],ddict[k][2], translate(ddict[k][3], False))
-@@ -1793,8 +1818,11 @@ class fcontextRecords(semanageRecords):
+@@ -1506,6 +1531,7 @@ class fcontextRecords(semanageRecords):
+ def __init__(self, store = ""):
+ semanageRecords.__init__(self, store)
+ self.equiv = {}
++ self.equiv_dist = {}
+ self.equal_ind = False
+ try:
+ fd = open(selinux.selinux_file_context_subs_path(), "r")
+@@ -1515,6 +1541,14 @@ class fcontextRecords(semanageRecords):
+ fd.close()
+ except IOError:
+ pass
++ try:
++ fd = open(selinux.selinux_file_context_subs_dist_path(), "r")
++ for i in fd.readlines():
++ src, dst = i.split()
++ self.equiv_dist[src] = dst
++ fd.close()
++ except IOError:
++ pass
+
+ def commit(self):
+ if self.equal_ind:
+@@ -1570,12 +1604,21 @@ class fcontextRecords(semanageRecords):
+
+ return con
+
++ def check_equiv(self, target, fdict):
++ for i in fdict:
++ if target.startswith(i+"/"):
++ t = re.sub(i, fdict[i], target)
++ raise ValueError(_("File spec %s conflicts with equivalency rule '%s %s'; Try adding '%s' instead") % (target, i, fdict[i], t))
++
++
+ def validate(self, target):
+ if target == "" or target.find("\n") >= 0:
+ raise ValueError(_("Invalid file specification"))
+ if target.find(" ") != -1:
+ raise ValueError(_("File specification can not include spaces"))
+-
++ self.check_equiv(target, self.equiv)
++ self.check_equiv(target, self.equiv_dist)
++
+ def __add(self, target, type, ftype = "", serange = "", seuser = "system_u"):
+ self.validate(target)
+
+@@ -1793,8 +1836,11 @@ class fcontextRecords(semanageRecords):
def list(self, heading = 1, locallist = 0 ):
fcon_dict = self.get_all(locallist)
keys = fcon_dict.keys()
@@ -508,7 +554,27 @@ diff -up policycoreutils-2.1.4/semanage/seobject.py.f17 policycoreutils-2.1.4/se
print "%-50s %-18s %s\n" % (_("SELinux fcontext"), _("type"), _("Context"))
for k in keys:
if fcon_dict[k]:
-@@ -1977,11 +2005,13 @@ class booleanRecords(semanageRecords):
+@@ -1804,9 +1850,17 @@ class fcontextRecords(semanageRecords):
+ print "%-50s %-18s %s:%s:%s " % (k[0], k[1], fcon_dict[k][0], fcon_dict[k][1],fcon_dict[k][2])
+ else:
+ print "%-50s %-18s <<None>>" % (k[0], k[1])
+- if len(self.equiv.keys()) > 0:
++
++
++ if len(self.equiv_dist):
++ if not locallist:
++ if heading:
++ print _("\nSELinux Distribution fcontext Equivalence \n")
++ for src in self.equiv_dist.keys():
++ print "%s = %s" % (src, self.equiv_dist[src])
++ if len(self.equiv):
+ if heading:
+- print _("\nSELinux fcontext Equivalence \n")
++ print _("\nSELinux Local fcontext Equivalence \n")
+
+ for src in self.equiv.keys():
+ print "%s = %s" % (src, self.equiv[src])
+@@ -1977,11 +2031,13 @@ class booleanRecords(semanageRecords):
if ddict[k]:
print "%s=%s" % (k, ddict[k][2])
return
@@ -527,8 +593,8 @@ diff -up policycoreutils-2.1.4/semanage/seobject.py.f17 policycoreutils-2.1.4/se
-
+ print "%-30s (%-5s,%5s) %s" % (k, on_off[selinux.security_get_boolean_active(k)], on_off[ddict[k][2]], self.get_desc(k))
diff -up policycoreutils-2.1.4/semodule_package/Makefile.f17 policycoreutils-2.1.4/semodule_package/Makefile
---- policycoreutils-2.1.4/semodule_package/Makefile.f17 2011-10-31 11:12:36.864781125 -0400
-+++ policycoreutils-2.1.4/semodule_package/Makefile 2011-10-31 11:12:37.172780966 -0400
+--- policycoreutils-2.1.4/semodule_package/Makefile.f17 2011-11-16 11:31:29.947038710 -0500
++++ policycoreutils-2.1.4/semodule_package/Makefile 2011-11-16 11:31:30.320038000 -0500
@@ -24,7 +24,7 @@ install: all
relabel:
@@ -539,8 +605,8 @@ diff -up policycoreutils-2.1.4/semodule_package/Makefile.f17 policycoreutils-2.1
indent:
../../scripts/Lindent $(wildcard *.[ch])
diff -up policycoreutils-2.1.4/semodule/semodule.8.f17 policycoreutils-2.1.4/semodule/semodule.8
---- policycoreutils-2.1.4/semodule/semodule.8.f17 2011-10-31 11:22:08.388701102 -0400
-+++ policycoreutils-2.1.4/semodule/semodule.8 2011-10-31 11:22:17.530705316 -0400
+--- policycoreutils-2.1.4/semodule/semodule.8.f17 2011-08-18 06:52:31.000000000 -0400
++++ policycoreutils-2.1.4/semodule/semodule.8 2011-11-16 11:31:30.321037998 -0500
@@ -41,6 +41,9 @@ disable existing module
.B \-e,\-\-enable=MODULE_NAME
enable existing module
@@ -552,8 +618,8 @@ diff -up policycoreutils-2.1.4/semodule/semodule.8.f17 policycoreutils-2.1.4/sem
remove existing module
.TP
diff -up policycoreutils-2.1.4/setfiles/restore.c.f17 policycoreutils-2.1.4/setfiles/restore.c
---- policycoreutils-2.1.4/setfiles/restore.c.f17 2011-10-31 11:12:36.866781124 -0400
-+++ policycoreutils-2.1.4/setfiles/restore.c 2011-10-31 11:15:32.342687398 -0400
+--- policycoreutils-2.1.4/setfiles/restore.c.f17 2011-11-16 11:31:29.952038700 -0500
++++ policycoreutils-2.1.4/setfiles/restore.c 2011-11-16 11:31:30.322037996 -0500
@@ -1,5 +1,6 @@
#include "restore.h"
#include <glob.h>
@@ -776,7 +842,7 @@ diff -up policycoreutils-2.1.4/setfiles/restore.c.f17 policycoreutils-2.1.4/setf
*/
diff -up policycoreutils-2.1.4/setfiles/restorecon.8.f17 policycoreutils-2.1.4/setfiles/restorecon.8
--- policycoreutils-2.1.4/setfiles/restorecon.8.f17 2011-08-18 06:52:32.000000000 -0400
-+++ policycoreutils-2.1.4/setfiles/restorecon.8 2011-10-31 11:12:37.172780966 -0400
++++ policycoreutils-2.1.4/setfiles/restorecon.8 2011-11-16 11:31:30.323037994 -0500
@@ -4,22 +4,27 @@ restorecon \- restore file(s) default SE
.SH "SYNOPSIS"
@@ -835,8 +901,8 @@ diff -up policycoreutils-2.1.4/setfiles/restorecon.8.f17 policycoreutils-2.1.4/s
.SH "ARGUMENTS"
.B pathname...
diff -up policycoreutils-2.1.4/setfiles/restore.h.f17 policycoreutils-2.1.4/setfiles/restore.h
---- policycoreutils-2.1.4/setfiles/restore.h.f17 2011-10-31 11:12:36.866781124 -0400
-+++ policycoreutils-2.1.4/setfiles/restore.h 2011-10-31 11:12:37.172780966 -0400
+--- policycoreutils-2.1.4/setfiles/restore.h.f17 2011-11-16 11:31:29.953038698 -0500
++++ policycoreutils-2.1.4/setfiles/restore.h 2011-11-16 11:31:30.324037992 -0500
@@ -40,6 +40,7 @@ struct restore_opts {
int fts_flags; /* Flags to fts, e.g. follow links, follow mounts */
const char *selabel_opt_validate;
@@ -847,7 +913,7 @@ diff -up policycoreutils-2.1.4/setfiles/restore.h.f17 policycoreutils-2.1.4/setf
void restore_init(struct restore_opts *opts);
diff -up policycoreutils-2.1.4/setfiles/setfiles.8.f17 policycoreutils-2.1.4/setfiles/setfiles.8
--- policycoreutils-2.1.4/setfiles/setfiles.8.f17 2011-08-18 06:52:32.000000000 -0400
-+++ policycoreutils-2.1.4/setfiles/setfiles.8 2011-10-31 11:12:37.173780966 -0400
++++ policycoreutils-2.1.4/setfiles/setfiles.8 2011-11-16 11:31:30.325037990 -0500
@@ -4,7 +4,7 @@ setfiles \- set file SELinux security co
.SH "SYNOPSIS"
@@ -894,8 +960,8 @@ diff -up policycoreutils-2.1.4/setfiles/setfiles.8.f17 policycoreutils-2.1.4/set
.B \-W
display warnings about entries that had no matching files.
diff -up policycoreutils-2.1.4/setfiles/setfiles.c.f17 policycoreutils-2.1.4/setfiles/setfiles.c
---- policycoreutils-2.1.4/setfiles/setfiles.c.f17 2011-10-31 11:12:36.866781124 -0400
-+++ policycoreutils-2.1.4/setfiles/setfiles.c 2011-10-31 11:12:37.173780966 -0400
+--- policycoreutils-2.1.4/setfiles/setfiles.c.f17 2011-11-16 11:31:29.954038696 -0500
++++ policycoreutils-2.1.4/setfiles/setfiles.c 2011-11-16 11:31:30.326037988 -0500
@@ -39,7 +39,7 @@ void usage(const char *const name)
{
if (iamrestorecon) {
diff --git a/policycoreutils.spec b/policycoreutils.spec
index b17eb61..9fcb86b 100644
--- a/policycoreutils.spec
+++ b/policycoreutils.spec
@@ -7,7 +7,7 @@
Summary: SELinux policy core utilities
Name: policycoreutils
Version: 2.1.4
-Release: 9%{?dist}
+Release: 10%{?dist}
License: GPLv2
Group: System Environment/Base
# Based on git repository with tag 20101221
@@ -354,7 +354,11 @@ fi
/bin/systemctl try-restart restorecond.service >/dev/null 2>&1 || :
%changelog
-* Wed Nov 16 2011 Dan Walsh <dwalsh at redhat.com> - 2.1.8-5
+* Wed Nov 16 2011 Dan Walsh <dwalsh at redhat.com> - 2.1.4-10
+- Add listing of distribution equivalence class from semanage fcontext -l
+- Add checking to semanage fcontext -a to guarantee a file specification will not be masked by an equivalence
+
+* Wed Nov 16 2011 Dan Walsh <dwalsh at redhat.com> - 2.1.4-9
- Update to latest sepolgen
- Allow ~ as a valid part of a filename in sepolgen
More information about the scm-commits
mailing list