Index: src/wp-admin/includes/ajax-actions.php
===================================================================
--- src/wp-admin/includes/ajax-actions.php	(revision 33934)
+++ src/wp-admin/includes/ajax-actions.php	(working copy)
@@ -1212,13 +1212,38 @@
 					$x->send();
 				}
 
-				if ( !$mid = add_meta( $pid ) )
-					wp_die( __( 'Please provide a custom field value.' ) );
+				if ( !$mid = add_meta( $pid ) ) {
+					// If adding meta failed, tell the user why.
+					$metakeyselect = isset($_POST['metakeyselect']) ? wp_unslash( trim( $_POST['metakeyselect'] ) ) : '';
+					$metakeyinput = isset($_POST['metakeyinput']) ? wp_unslash( trim( $_POST['metakeyinput'] ) ) : '';
+					$metavalue = isset($_POST['metavalue']) ? $_POST['metavalue'] : '';
+					if ( '#NONE#' != $metakeyselect )
+						$metakey = $metakeyselect;
+					if ( $metakeyinput )
+						$metakey = $metakeyinput;
+					if ( is_protected_meta( $metakey, 'post' ) || ! current_user_can( 'add_post_meta', $pid, $metakey ) ) {
+						wp_die( __( 'You are not allowed to edit this custom field.' ) );
+					} else {
+						wp_die( __( 'Please provide a custom field value.' ) );
+					}
+				}
 			} else {
 				wp_die( 0 );
 			}
 		} elseif ( ! $mid = add_meta( $pid ) ) {
-			wp_die( __( 'Please provide a custom field value.' ) );
+			// If adding meta failed, tell the user why.
+			$metakeyselect = isset($_POST['metakeyselect']) ? wp_unslash( trim( $_POST['metakeyselect'] ) ) : '';
+			$metakeyinput = isset($_POST['metakeyinput']) ? wp_unslash( trim( $_POST['metakeyinput'] ) ) : '';
+			$metavalue = isset($_POST['metavalue']) ? $_POST['metavalue'] : '';
+			if ( '#NONE#' != $metakeyselect )
+				$metakey = $metakeyselect;
+			if ( $metakeyinput )
+				$metakey = $metakeyinput;
+			if ( is_protected_meta( $metakey, 'post' ) || ! current_user_can( 'add_post_meta', $pid, $metakey ) ) {
+				wp_die( __( 'You are not allowed to edit this custom field.' ) );
+			} else {
+				wp_die( __( 'Please provide a custom field value.' ) );
+			}
 		}
 
 		$meta = get_metadata_by_mid( 'post', $mid );
