diff --git a/includes/form.inc b/includes/form.inc
index 2392184d50226b7bf1a5615d6855f7a19386b396..0bbc0486748e16f5383492dc366828d5373b63d7 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -295,7 +295,9 @@ function drupal_process_form($form_id, &$form, &$form_state) {
   $form_state['values'] = array();
 
   $form = form_builder($form_id, $form, $form_state);
-  if ((!empty($form['#programmed'])) || (!empty($form['#post']) && (($form['#post']['form_id'] == $form_id)))) {
+  // Only process the form if it is programmed or the form_id coming
+  // from the POST data is set and matches the current form_id.
+  if ((!empty($form['#programmed'])) || (!empty($form['#post']) && (isset($form['#post']['form_id']) && ($form['#post']['form_id'] == $form_id)))) {
     drupal_validate_form($form_id, $form, $form_state);
 
     if ((!empty($form_state['submitted'])) && !form_get_errors() && empty($form_state['rebuild'])) {