From: Ondřej Kuzník Date: Fri, 25 Apr 2025 12:45:09 +0000 (+0100) Subject: ITS#10331 Add helpful error messages for usage errors X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f1556ba98a3d52578f5ef619360d36482de0afbb;p=thirdparty%2Fopenldap.git ITS#10331 Add helpful error messages for usage errors --- diff --git a/servers/slapd/slapcommon.c b/servers/slapd/slapcommon.c index f215acc970..cf418dd9af 100644 --- a/servers/slapd/slapcommon.c +++ b/servers/slapd/slapcommon.c @@ -423,27 +423,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 ); } @@ -465,6 +480,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; @@ -479,6 +495,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; @@ -486,6 +503,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; @@ -498,6 +516,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; @@ -520,6 +539,7 @@ slap_tool_init( if ( lutil_atou( &csnsid, optarg ) || csnsid > SLAP_SYNC_SID_MAX ) { + fputs( "Invalid serverid provided\n", stderr ); usage( tool, progname ); } break;