From 083455be6bd75c21bf5b8cdc69206d6ba8b26d09 Mon Sep 17 00:00:00 2001 From: Hallvard Furuseth Date: Tue, 9 Mar 1999 07:49:56 +0000 Subject: [PATCH] Bugfix: Move handling of boolean options in front of invalue==NULL error check --- libraries/libldap/options.c | 44 +++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/libraries/libldap/options.c b/libraries/libldap/options.c index 3c99686ff3..17259264cd 100644 --- a/libraries/libldap/options.c +++ b/libraries/libldap/options.c @@ -239,17 +239,35 @@ ldap_set_option( openldap_ldap_initialize(); } - if(invalue == NULL) { - /* no place to set from */ - return -1; - } - if(ld == NULL) { lo = &openldap_ldap_global_options; } else { lo = &ld->ld_options; } + switch(option) { + case LDAP_OPT_REFERRALS: + if(invalue == LDAP_OPT_ON) { + LDAP_BOOL_SET(lo, LDAP_BOOL_REFERRALS); + } else { + LDAP_BOOL_CLR(lo, LDAP_BOOL_REFERRALS); + } + return 0; + + case LDAP_OPT_RESTART: + if(invalue == LDAP_OPT_ON) { + LDAP_BOOL_SET(lo, LDAP_BOOL_RESTART); + } else { + LDAP_BOOL_CLR(lo, LDAP_BOOL_RESTART); + } + return 0; + } + + if(invalue == NULL) { + /* no place to set from */ + return -1; + } + switch(option) { case LDAP_OPT_API_INFO: case LDAP_OPT_DESC: @@ -268,22 +286,6 @@ ldap_set_option( lo->ldo_timelimit = * (int *) invalue; return 0; - case LDAP_OPT_REFERRALS: - if(invalue == LDAP_OPT_ON) { - LDAP_BOOL_SET(lo, LDAP_BOOL_REFERRALS); - } else { - LDAP_BOOL_CLR(lo, LDAP_BOOL_REFERRALS); - } - return 0; - - case LDAP_OPT_RESTART: - if(invalue == LDAP_OPT_ON) { - LDAP_BOOL_SET(lo, LDAP_BOOL_RESTART); - } else { - LDAP_BOOL_CLR(lo, LDAP_BOOL_RESTART); - } - return 0; - case LDAP_OPT_PROTOCOL_VERSION: { int vers = * (int *) invalue; if (vers < LDAP_VERSION_MIN || vers > LDAP_VERSION_MAX) { -- 2.39.5