diff --git a/src/FeaturesManager.php b/src/FeaturesManager.php
index 2d0c81c..ef173f0 100644
--- a/src/FeaturesManager.php
+++ b/src/FeaturesManager.php
@@ -520,10 +520,45 @@ class FeaturesManager implements FeaturesManagerInterface {
     elseif (isset($bundle) && isset($this->packages[$bundle->getFullName($machine_name)])) {
       return $this->packages[$bundle->getFullName($machine_name)];
     }
+    // Validate the candidate machine name.
+    if (!$this->validatePackageMachineName($machine_name, $bundle)) {
+      return FALSE;
+    }
     return $this->packages[$machine_name] = $this->getPackageObject($machine_name, $name, $description, $type, $bundle, $extension);
   }
 
   /**
+   * Validates a candidate package machine name.
+   *
+   * Ensures the machine name doesn't duplicate that of an existing
+   * non-feature module.
+   *
+   * @param string $machine_name
+   *   A candidate machine name.
+   * @param \Drupal\features\FeaturesBundleInterface $bundle
+   *   (optional) A features bundle.
+   *
+   * @return bool
+   *   TRUE if the package name passes validation; otherwise, FALSE.
+   *
+   * @todo Consult drupal.org module list data?
+   */
+  protected function validatePackageMachineName($machine_name, FeaturesBundleInterface $bundle = NULL) {
+    if (!$bundle) {
+      $bundle = $this->getAssigner()->getBundle();
+    }
+    $machine_name = $bundle->getFullName($machine_name);
+    $modules = $this->getAllModules();
+    if (isset($modules[$machine_name])) {
+      // We may be validating a name for an existing feature,
+      // so only a non-feature module should fail validation.
+      return $this->isFeatureModule($modules[$machine_name]);
+    }
+
+    return TRUE;
+  }
+
+  /**
    * {@inheritdoc}
    */
   public function initPackageFromExtension(Extension $extension) {
diff --git a/src/FeaturesManagerInterface.php b/src/FeaturesManagerInterface.php
index d134b29..284a3f7 100644
--- a/src/FeaturesManagerInterface.php
+++ b/src/FeaturesManagerInterface.php
@@ -279,6 +279,9 @@ interface FeaturesManagerInterface {
   /**
    * Initializes a configuration package.
    *
+   * Validation is done on the candidate machine name, with FALSE returned
+   * on validation failure.
+   *
    * @param string $machine_name
    *   Machine name of the package.
    * @param string $name
@@ -291,8 +294,9 @@ interface FeaturesManagerInterface {
    *   (optional) Bundle to use to add profile directories to the scan.
    * @param \Drupal\Core\Extension\Extension $extension
    *   (optional) An Extension object.
-   * @return \Drupal\features\Package
-   *   The created package array.
+   *
+   * @return \Drupal\features\Package|bool
+   *   The created package array, or FALSE if none created.
    */
   public function initPackage($machine_name, $name = NULL, $description = '', $type = 'module', FeaturesBundleInterface $bundle = NULL, Extension $extension = NULL);
 
