diff options
author | Phil Davis <phil.davis@inf.org> | 2016-01-18 22:03:53 +0545 |
---|---|---|
committer | Phil Davis <phil.davis@inf.org> | 2016-01-18 22:03:53 +0545 |
commit | f8bf3fe860c63b0a4f02093fe15e2874f8e52156 (patch) | |
tree | f7869aceab1bf2a533051e1a7dee4e3d0ef6cf4c /src/usr | |
parent | b12cb9535d0822ebfbcb64e0c865864e1e079a68 (diff) | |
download | pfsense-f8bf3fe860c63b0a4f02093fe15e2874f8e52156.zip pfsense-f8bf3fe860c63b0a4f02093fe15e2874f8e52156.tar.gz |
Fix #5778 do not save changes if interface description matches an alias name
See https://redmine.pfsense.org/issues/5778 for details of how to reproduce the problem.
Note that similar code to make the "Sorry, an alias with the name XXX already exists" message is also at the top of interfaces.inc - it compares the current interface descr from the config with the currently existing alias names. That check would help warn the user if someone managed to add an alias name that matched the interface name. I guess it was there from some time in the past when the alias edit code did not cross-validate the alias name with the interface descriptions. I have left that check there - it does no harm to have it "just in case".
The new code that I added checks the proposed interface description in $_POST against the existing alias names and will give an input_error if there is a match.
Diffstat (limited to 'src/usr')
-rw-r--r-- | src/usr/local/www/interfaces.php | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/usr/local/www/interfaces.php b/src/usr/local/www/interfaces.php index 0d82dd5..f25bbeb 100644 --- a/src/usr/local/www/interfaces.php +++ b/src/usr/local/www/interfaces.php @@ -540,6 +540,16 @@ if ($_POST['apply']) { break; } } + + /* Is the description already used as an alias name? */ + if (is_array($config['aliases']['alias'])) { + foreach ($config['aliases']['alias'] as $alias) { + if ($alias['name'] == $_POST['descr']) { + $input_errors[] = sprintf(gettext("Sorry, an alias with the name %s already exists."), $_POST['descr']); + } + } + } + if (is_numeric($_POST['descr'])) { $input_errors[] = gettext("The interface description cannot contain only numbers."); } |