From b571f0b229be93889a68c7e8489ab6bf0a286459 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 7 Mar 2012 13:18:00 -0800 Subject: [PATCH] Forbid mailing list names contianing spaces or commas Summary: They end up in "CCs:" fields where they can't be parsed. Not bothering to migrate since I think only Dropbox has hit this. Also improved another error condition's handling. Test Plan: Tried to save a mailing list with spaces and commas in the name. Reviewers: btrahan, Makinde Reviewed By: btrahan CC: aran, epriestley Maniphest Tasks: T947 Differential Revision: https://secure.phabricator.com/D1813 --- ...bricatorMetaMTAMailingListEditController.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/applications/metamta/controller/mailinglistedit/PhabricatorMetaMTAMailingListEditController.php b/src/applications/metamta/controller/mailinglistedit/PhabricatorMetaMTAMailingListEditController.php index 8c75707436..3d40143bf5 100644 --- a/src/applications/metamta/controller/mailinglistedit/PhabricatorMetaMTAMailingListEditController.php +++ b/src/applications/metamta/controller/mailinglistedit/PhabricatorMetaMTAMailingListEditController.php @@ -47,6 +47,9 @@ class PhabricatorMetaMTAMailingListEditController $list->setEmail($request->getStr('email')); $list->setURI($request->getStr('uri')); + $e_email = null; + $e_name = null; + if (!strlen($list->getEmail())) { $e_email = 'Required'; $errors[] = 'Email is required.'; @@ -55,6 +58,9 @@ class PhabricatorMetaMTAMailingListEditController if (!strlen($list->getName())) { $e_name = 'Required'; $errors[] = 'Name is required.'; + } else if (preg_match('/[ ,]/', $list->getName())) { + $e_name = 'Invalid'; + $errors[] = 'Name must not contain spaces or commas.'; } if ($list->getURI()) { @@ -65,9 +71,14 @@ class PhabricatorMetaMTAMailingListEditController } if (!$errors) { - $list->save(); - return id(new AphrontRedirectResponse()) - ->setURI('/mail/lists/'); + try { + $list->save(); + return id(new AphrontRedirectResponse()) + ->setURI('/mail/lists/'); + } catch (AphrontQueryDuplicateKeyException $ex) { + $e_email = 'Duplicate'; + $errors[] = 'Another mailing list already uses that address.'; + } } }