]> git.sur5r.net Git - openldap/commitdiff
Wrap request/response bervals in a sequence.
authorKurt Zeilenga <kurt@openldap.org>
Sat, 11 Dec 1999 19:33:45 +0000 (19:33 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sat, 11 Dec 1999 19:33:45 +0000 (19:33 +0000)
clients/tools/ldappasswd.c
include/ldap.h
servers/slapd/passwd.c

index 43e93fc1309f7eac94519e8c4bea7d0d568404d4..04b4d469c99f0d5e9e8d55435c6e6de421601578 100644 (file)
@@ -246,6 +246,8 @@ main( int argc, char *argv[] )
                        return EXIT_FAILURE;
                }
 
+               ber_printf( ber, "{" /*}*/ );
+
                if( dn != NULL ) {
                        ber_printf( ber, "ts",
                                LDAP_TAG_EXOP_X_MODIFY_PASSWD_ID, dn );
@@ -264,6 +266,8 @@ main( int argc, char *argv[] )
                        free(newpw);
                }
 
+               ber_printf( ber, /*{*/ "}" );
+
                rc = ber_flatten( ber, &bv );
 
                if( rc < 0 ) {
@@ -294,7 +298,7 @@ main( int argc, char *argv[] )
                }
 
                /* we should check the tag */
-               tag = ber_scanf( ber, "a", &s);
+               tag = ber_scanf( ber, "{a}", &s);
 
                if( tag == LBER_ERROR ) {
                        perror( "ber_scanf" );
index e9352f9dbc30f47ec73e21899615a5a26484aa2c..9b4a009b03d420e3625235c98d59c8c312242be3 100644 (file)
@@ -184,6 +184,7 @@ typedef struct ldapcontrol {
 #define LDAP_TAG_EXOP_X_MODIFY_PASSWD_ID       ((ber_tag_t) 0x80U)
 #define LDAP_TAG_EXOP_X_MODIFY_PASSWD_OLD      ((ber_tag_t) 0x81U)
 #define LDAP_TAG_EXOP_X_MODIFY_PASSWD_NEW      ((ber_tag_t) 0x82U)
+#define LDAP_TAG_EXOP_X_MODIFY_PASSWD_GEN      ((ber_tag_t) 0x80U)
 
 /* 
  * specific LDAP instantiations of BER types we know about
index 7a57bce12927cf3bd3a9a6d538bc80c554cd863c..d75926d1d145bdceae20cf972977cc140b9bea94 100644 (file)
@@ -75,7 +75,11 @@ int slap_passwd_parse( struct berval *reqdata,
                return LDAP_PROTOCOL_ERROR;
        }
 
-       tag = ber_peek_tag( ber, &len );
+       tag = ber_scanf( ber, "{" /*}*/ );
+
+       if( tag != LBER_ERROR ) {
+               tag = ber_peek_tag( ber, &len );
+       }
 
        if( tag == LDAP_TAG_EXOP_X_MODIFY_PASSWD_ID ) {
                if( id == NULL ) {
@@ -183,8 +187,8 @@ struct berval * slap_passwd_return(
 
        if( ber == NULL ) return NULL;
        
-       rc = ber_printf( ber, "tO",
-               LDAP_TAG_EXOP_X_MODIFY_PASSWD_NEW, cred );
+       rc = ber_printf( ber, "{tO}",
+               LDAP_TAG_EXOP_X_MODIFY_PASSWD_GEN, cred );
 
        if( rc == -1 ) {
                ber_free( ber, 1 );
@@ -226,6 +230,11 @@ slap_passwd_check(
 struct berval * slap_passwd_generate( void )
 {
        Debug( LDAP_DEBUG_TRACE, "slap_passwd_generate\n", 0, 0, 0 );
+
+       /*
+        * generate passwords of only 8 characters as some getpass(3)
+        * implementations truncate at 8 characters.
+        */
        return lutil_passwd_generate( 8 );
 }