diff --git a/kbx/backend-kbx.c b/kbx/backend-kbx.c
index 7f9ef358b..b8d39c2ed 100644
--- a/kbx/backend-kbx.c
+++ b/kbx/backend-kbx.c
@@ -15,7 +15,7 @@
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see .
- * SPDX-License-Identifier: GPL-3.0+
+ * SPDX-License-Identifier: GPL-3.0-or-later
*/
#include
diff --git a/kbx/kbxserver.c b/kbx/kbxserver.c
index 1f70ef779..a54444178 100644
--- a/kbx/kbxserver.c
+++ b/kbx/kbxserver.c
@@ -225,22 +225,34 @@ cmd_search (assuan_context_t ctx, char *line)
ctrl->server_local->search_any_found = 0;
- if (!*line && opt_more)
+ if (!*line)
{
- err = set_error (GPG_ERR_INV_ARG, "--more but no pattern");
- goto leave;
+ if (opt_more)
+ {
+ err = set_error (GPG_ERR_INV_ARG, "--more but no pattern");
+ goto leave;
+ }
+ else if (!*line && ctrl->server_local->search_expecting_more)
+ {
+ /* It would be too surprising to first set a pattern but
+ * finally add no pattern to search the entire DB. */
+ err = set_error (GPG_ERR_INV_ARG, "--more pending but no pattern");
+ goto leave;
+ }
+ else /* No pattern - return the first item. */
+ {
+ memset (&ctrl->server_local->search_desc, 0,
+ sizeof ctrl->server_local->search_desc);
+ ctrl->server_local->search_desc.mode = KEYDB_SEARCH_MODE_FIRST;
+ }
}
- else if (!*line && ctrl->server_local->search_expecting_more)
+ else
{
- /* It would be too surprising to first set a pattern but finally
- * add no pattern to search the entire DB. */
- err = set_error (GPG_ERR_INV_ARG, "--more pending but no pattern");
- goto leave;
+ err = classify_user_id (line, &ctrl->server_local->search_desc, 0);
+ if (err)
+ goto leave;
}
- err = classify_user_id (line, &ctrl->server_local->search_desc, 0);
- if (err)
- goto leave;
if (opt_more || ctrl->server_local->search_expecting_more)
{
/* More pattern are expected - store the current one and return