diff --git modules/taxonomy/taxonomy.pages.inc modules/taxonomy/taxonomy.pages.inc
index 43509ed..64f495c 100644
--- modules/taxonomy/taxonomy.pages.inc
+++ modules/taxonomy/taxonomy.pages.inc
@@ -75,10 +75,29 @@ function taxonomy_term_feed($term) {
 }
 
 /**
- * Helper function for autocompletion
+ * AJAX page callback for taxonomy tag autocompletion.
+ *
+ * @param $field_name
+ *   The name of the tag field.
+ * @param $tags_typed
+ *   A comma-separated list of tags that the user has entered into the field.
  */
 function taxonomy_autocomplete($field_name, $tags_typed = '') {
-  $field = field_info_field($field_name);
+  // Make sure the tag field exists.
+  if (!$field = field_info_field($field_name)) {
+    // Error string. The JavaScript handler will realize this is not JSON and
+    // will display it as debugging information.
+    print t('Field @field_name not found. Not possible to provide autocomplete.', array('@field_name' => $field_name));
+    exit;
+  }
+  // Make sure the field is a taxonomy field and that the user has access to it.
+  if (!field_access('view', $field)) {
+    return DRUPAL_ACCESS_DENIED;
+  }
+  if ($field['type'] !== 'taxonomy_term_reference') {
+    print t('Field @field_name is not a taxonomy term reference field.', array('@field_name' => $field_name));
+    exit;
+  }
 
   // The user enters a comma-separated list of tags. We only autocomplete the last tag.
   $tags_typed = drupal_explode_tags($tags_typed);
