From 65d5d06b109bdbee54c30c6ec23a5b81f3294a5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Fri, 25 Apr 2025 13:45:09 +0100 Subject: [PATCH] ITS#10331 Add helpful error messages for usage errors --- servers/slapd/slapcommon.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c index ca57e76ae8..bd1b1d3d7d 100644 --- a/servers/slapd/slapcommon.c +++ b/servers/slapd/slapcommon.c @@ -425,27 +425,42 @@ slap_tool_init( rc = ldap_url_parse_ext( optarg, &ludp, LDAP_PVT_URL_PARSE_NOEMPTY_HOST | LDAP_PVT_URL_PARSE_NOEMPTY_DN ); if ( rc != LDAP_URL_SUCCESS ) { + fprintf( stderr, "Cannot parse '%s' as LDAP URI.\n", optarg ); usage( tool, progname ); } /* don't accept host, port, attrs, extensions */ if ( ldap_pvt_url_scheme2proto( ludp->lud_scheme ) != LDAP_PROTO_TCP ) { + fprintf( stderr, "%s URIs need to use ldap:// scheme.\n", + progname ); usage( tool, progname ); } if ( ludp->lud_host != NULL ) { + fprintf( stderr, "%s URIs cannot carry a host. " + "Only base, scope and filter are accepted\n", + progname ); usage( tool, progname ); } if ( ludp->lud_port != 0 ) { + fprintf( stderr, "%s URIs cannot carry a port. " + "Only base, scope and filter are accepted\n", + progname ); usage( tool, progname ); } if ( ludp->lud_attrs != NULL ) { + fprintf( stderr, "%s URIs cannot carry an attribute specification. " + "Only base, scope and filter are accepted\n", + progname ); usage( tool, progname ); } if ( ludp->lud_exts != NULL ) { + fprintf( stderr, "%s URIs cannot carry an extension specification. " + "Only base, scope and filter are accepted\n", + progname ); usage( tool, progname ); } @@ -467,6 +482,7 @@ slap_tool_init( case 'j': /* jump to linenumber */ if ( lutil_atoul( &jumpline, optarg ) ) { + fprintf( stderr, "Invalid line number '%s'\n", optarg ); usage( tool, progname ); } break; @@ -481,6 +497,7 @@ slap_tool_init( case 'N': if ( dn_mode && dn_mode != SLAP_TOOL_LDAPDN_NORMAL ) { + fputs( "Invalid combination of -N/-P provided\n", stderr ); usage( tool, progname ); } dn_mode = SLAP_TOOL_LDAPDN_NORMAL; @@ -488,6 +505,7 @@ slap_tool_init( case 'n': /* which config file db to index */ if ( lutil_atoi( &dbnum, optarg ) || dbnum < 0 ) { + fputs( "Invalid database index provided\n", stderr ); usage( tool, progname ); } break; @@ -500,6 +518,7 @@ slap_tool_init( case 'P': if ( dn_mode && dn_mode != SLAP_TOOL_LDAPDN_PRETTY ) { + fputs( "Invalid combination of -N/-P provided\n", stderr ); usage( tool, progname ); } dn_mode = SLAP_TOOL_LDAPDN_PRETTY; @@ -522,6 +541,7 @@ slap_tool_init( if ( lutil_atou( &csnsid, optarg ) || csnsid > SLAP_SYNC_SID_MAX ) { + fputs( "Invalid serverid provided\n", stderr ); usage( tool, progname ); } break; -- 2.47.2