diff --git a/wp-includes/query.php b/wp-includes/query.php
index 04286aa..fb2d0dc 100644
--- a/wp-includes/query.php
+++ b/wp-includes/query.php
@@ -2528,6 +2528,13 @@ class WP_Query {
 			$where .= ')';
 		}
 
+		if ( isset( $q['has_password'] ) ) {
+			if ( is_bool( $q['has_password'] ) )
+				$where .= sprintf( " AND $wpdb->posts.post_password %s ''", $q['has_password'] ? '!=' : '=' );
+			elseif ( is_string( $q['has_password'] ) && ! empty( $q['has_password'] ) )
+				$where .= $wpdb->prepare( " AND $wpdb->posts.post_password = %s", $q['has_password'] );
+		}
+
 		if ( !empty( $this->meta_query->queries ) ) {
 			$clauses = $this->meta_query->get_sql( 'post', $wpdb->posts, 'ID', $this );
 			$join .= $clauses['join'];
