diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/src/alpined.d/alpined.c | 43 | ||||
-rw-r--r-- | web/src/alpined.d/ldap.c | 61 | ||||
-rw-r--r-- | web/src/alpined.d/ldap.h | 5 |
3 files changed, 57 insertions, 52 deletions
diff --git a/web/src/alpined.d/alpined.c b/web/src/alpined.d/alpined.c index f75f03da..6936de9d 100644 --- a/web/src/alpined.d/alpined.c +++ b/web/src/alpined.d/alpined.c @@ -450,7 +450,7 @@ char **sml_getmsgs(void); void sml_seen(void); #ifdef ENABLE_LDAP int peLdapQueryResults(Tcl_Interp *); -int peLdapStrlist(Tcl_Interp *, Tcl_Obj *, char **); +int peLdapStrlist(Tcl_Interp *, Tcl_Obj *, struct berval **); int init_ldap_pname(struct pine *); #endif /* ENABLE_LDAP */ char *strqchr(char *, int, int *, int); @@ -10815,7 +10815,7 @@ peLoadConfig(struct pine *pine_state) peInitVars(pine_state); - if(s = peAuthException()) + if((s = peAuthException()) != NULL) return(s); else if(ps_global->c_client_error[0]) return(ps_global->c_client_error); @@ -11763,7 +11763,7 @@ peDoPost(METAENV *metaenv, BODY *body, char *fcc, CONTEXT_S **fcc_cntxtp, char * if((recipients = (metaenv->env->to || metaenv->env->cc || metaenv->env->bcc)) && call_mailer(metaenv, body, NULL, 0, NULL, NULL) < 0){ - if(s = peAuthException()){ + if((s = peAuthException()) != NULL){ strcpy(errp, s); } else if(ps_global->last_error[0]){ @@ -12396,7 +12396,7 @@ peMsgCollector(Tcl_Interp *interp, priority = "Lowest"; if(priority){ - if(pf = set_priority_header(md.metaenv, priority)) + if((pf = set_priority_header(md.metaenv, priority)) != NULL) pf->text = &pf->textbuf; } } @@ -15209,7 +15209,8 @@ PELdapCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST ob * {"dn" {{attrib {val, ...}}, ...}} */ char *whichrec = Tcl_GetStringFromObj(objv[3], NULL); - char *tmpstr, *tmp, *tmp2, **vals, *a; + char *tmpstr, *tmp, *tmp2, *a; + struct berval **vals; WPLDAPRES_S *curres; LDAP_CHOOSE_S *winning_e = NULL; LDAP_SERV_RES_S *trl; @@ -15280,14 +15281,14 @@ PELdapCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST ob winning_e->info_used), -1)) != TCL_OK) return(TCL_ERROR); resObj = Tcl_NewListObj(0, NULL); - vals = ldap_get_values(winning_e->ld, winning_e->selected_entry, a); + vals = ldap_get_values_len(winning_e->ld, winning_e->selected_entry, a); if(vals){ for(i = 0; vals[i]; i++){ if(Tcl_ListObjAppendElement(interp, resObj, - Tcl_NewStringObj(vals[i], -1)) != TCL_OK) + Tcl_NewStringObj(vals[i]->bv_val, -1)) != TCL_OK) return(TCL_ERROR); } - ldap_value_free(vals); + ldap_value_free_len(vals); if(Tcl_ListObjAppendElement(interp, secObj, resObj) != TCL_OK) return(TCL_ERROR); } @@ -15517,7 +15518,7 @@ peLdapQueryResults(Tcl_Interp *interp) e != NULL; e = ldap_next_entry(trl->ld, e)){ char *dn; - char **cn, **org, **unit, **title, **mail, **sn; + struct berval **cn, **org, **unit, **title, **mail, **sn; dn = NULL; cn = org = title = unit = mail = sn = NULL; @@ -15527,15 +15528,15 @@ peLdapQueryResults(Tcl_Interp *interp) &mail, &sn); if(cn){ if(Tcl_ListObjAppendElement(interp, itemObj, - Tcl_NewStringObj(cn[0], -1)) != TCL_OK) + Tcl_NewStringObj(cn[0]->bv_val, -1)) != TCL_OK) return(TCL_ERROR); - ldap_value_free(cn); + ldap_value_free_len(cn); } else if(sn){ if(Tcl_ListObjAppendElement(interp, itemObj, - Tcl_NewStringObj(sn[0], -1)) != TCL_OK) + Tcl_NewStringObj(sn[0]->bv_val, -1)) != TCL_OK) return(TCL_ERROR); - ldap_value_free(sn); + ldap_value_free_len(sn); } else{ dn = ldap_get_dn(trl->ld, e); @@ -15563,13 +15564,13 @@ peLdapQueryResults(Tcl_Interp *interp) if(Tcl_ListObjAppendElement(interp, resObj, itemObj) != TCL_OK) return(TCL_ERROR); if(title) - ldap_value_free(title); + ldap_value_free_len(title); if(unit) - ldap_value_free(unit); + ldap_value_free_len(unit); if(org) - ldap_value_free(org); + ldap_value_free_len(org); if(mail) - ldap_value_free(mail); + ldap_value_free_len(mail); } } if(Tcl_ListObjAppendElement(interp, secObj, resObj) != TCL_OK) @@ -15582,16 +15583,16 @@ peLdapQueryResults(Tcl_Interp *interp) } int -peLdapStrlist(Tcl_Interp *interp, Tcl_Obj *itemObj, char **strl) +peLdapStrlist(Tcl_Interp *interp, Tcl_Obj *itemObj, struct berval **strl) { Tcl_Obj *strlObj; int i; strlObj = Tcl_NewListObj(0, NULL); if(strl){ - for(i = 0; strl[i] && strl[i][0]; i++){ + for(i = 0; ALPINE_LDAP_usable(strl, i); i++){ if(Tcl_ListObjAppendElement(interp, strlObj, - Tcl_NewStringObj(strl[i], -1)) != TCL_OK) + Tcl_NewStringObj(strl[i]->bv_val, -1)) != TCL_OK) return(TCL_ERROR); } } @@ -16265,7 +16266,7 @@ peRssFetch(Tcl_Interp *interp, char *link) so_puts(feed_so, p); } else{ /* in header, grok fields */ - if(q = strchr(p,':')){ + if((q = strchr(p,':')) != NULL){ int l = q - p; *q++ = '\0'; diff --git a/web/src/alpined.d/ldap.c b/web/src/alpined.d/ldap.c index 3e6bf99f..4107b375 100644 --- a/web/src/alpined.d/ldap.c +++ b/web/src/alpined.d/ldap.c @@ -40,7 +40,8 @@ ldap_addr_select(ps, ac, result, style, wp_err, srchstr) { LDAP_SERV_RES_S *res_list, *tmp_rl; LDAPMessage *e, *tmp_e; - char **mail = NULL, *a; + struct berval **mail = NULL; + char *a; int got_n_entries = 0, retval = -5; BerElement *ber; @@ -59,11 +60,11 @@ ldap_addr_select(ps, ac, result, style, wp_err, srchstr) a != NULL; a = ldap_next_attribute(tmp_rl->ld, tmp_e, ber)){ if(strcmp(a, tmp_rl->info_used->mailattr) == 0){ - mail = ldap_get_values(tmp_rl->ld, tmp_e, a); + mail = ldap_get_values_len(tmp_rl->ld, tmp_e, a); break; } } - if(mail && mail[0] && mail[0][0]){ + if(ALPINE_LDAP_can_use(mail)){ retval = 0; if(result){ (*result) = @@ -91,7 +92,8 @@ peLdapPname(mailbox, host) char *host; { char *retstr = NULL; - char adrstr[1024], **cn; + char adrstr[1024]; + struct berval **cn = NULL; int ecnt; CUSTOM_FILT_S *filter; WP_ERR_S wp_err; @@ -125,8 +127,8 @@ peLdapPname(mailbox, host) peLdapEntryParse(trl, e, &cn, NULL, NULL, NULL, NULL, NULL); if(cn){ - retstr = cpystr(cn[0]); - ldap_value_free(cn); + retstr = cpystr(cn[0]->bv_val); + ldap_value_free_len(cn); } } } @@ -138,14 +140,15 @@ peLdapEntryParse(trl, e, ret_cn, ret_org, ret_unit, ret_title, ret_mail, ret_sn) LDAP_SERV_RES_S *trl; LDAPMessage *e; - char ***ret_cn; - char ***ret_org; - char ***ret_unit; - char ***ret_title; - char ***ret_mail; - char ***ret_sn; + struct berval ***ret_cn; + struct berval ***ret_org; + struct berval ***ret_unit; + struct berval ***ret_title; + struct berval ***ret_mail; + struct berval ***ret_sn; { - char *a, **cn, **org, **unit, **title, **mail, **sn; + char *a; + struct berval **cn, **org, **unit, **title, **mail, **sn; BerElement *ber; cn = org = title = unit = mail = sn = NULL; @@ -156,28 +159,28 @@ peLdapEntryParse(trl, e, ret_cn, ret_org, ret_unit, dprint((9, " %s", a)); if(strcmp(a, trl->info_used->cnattr) == 0){ if(!cn) - cn = ldap_get_values(trl->ld, e, a); + cn = ldap_get_values_len(trl->ld, e, a); - if(cn && !(cn[0] && cn[0][0])){ - ldap_value_free(cn); + if(cn && !ALPINE_LDAP_can_use(cn)){ + ldap_value_free_len(cn); cn = NULL; } } else if(strcmp(a, trl->info_used->mailattr) == 0){ if(!mail) - mail = ldap_get_values(trl->ld, e, a); + mail = ldap_get_values_len(trl->ld, e, a); } else if(strcmp(a, "o") == 0){ if(!org) - org = ldap_get_values(trl->ld, e, a); + org = ldap_get_values_len(trl->ld, e, a); } else if(strcmp(a, "ou") == 0){ if(!unit) - unit = ldap_get_values(trl->ld, e, a); + unit = ldap_get_values_len(trl->ld, e, a); } else if(strcmp(a, "title") == 0){ if(!title) - title = ldap_get_values(trl->ld, e, a); + title = ldap_get_values_len(trl->ld, e, a); } our_ldap_memfree(a); @@ -190,10 +193,10 @@ peLdapEntryParse(trl, e, ret_cn, ret_org, ret_unit, if(strcmp(a, trl->info_used->snattr) == 0){ if(!sn) - sn = ldap_get_values(trl->ld, e, a); + sn = ldap_get_values_len(trl->ld, e, a); - if(sn && !(sn[0] && sn[0][0])){ - ldap_value_free(sn); + if(sn && !ALPINE_LDAP_can_use(sn)){ + ldap_value_free_len(sn); sn = NULL; } } @@ -202,22 +205,22 @@ peLdapEntryParse(trl, e, ret_cn, ret_org, ret_unit, } if(ret_cn) (*ret_cn) = cn; - else if(cn) ldap_value_free(cn); + else if(cn) ldap_value_free_len(cn); if(ret_org) (*ret_org) = org; - else if(org) ldap_value_free(org); + else if(org) ldap_value_free_len(org); if(ret_unit) (*ret_unit) = unit; - else if(unit) ldap_value_free(unit); + else if(unit) ldap_value_free_len(unit); if(ret_title) (*ret_title) = title; - else if(title) ldap_value_free(title); + else if(title) ldap_value_free_len(title); if(ret_mail) (*ret_mail) = mail; - else if(mail) ldap_value_free(mail); + else if(mail) ldap_value_free_len(mail); if(ret_sn) (*ret_sn) = sn; - else if(sn) ldap_value_free(sn); + else if(sn) ldap_value_free_len(sn); return 0; } diff --git a/web/src/alpined.d/ldap.h b/web/src/alpined.d/ldap.h index 2ada2908..6084c7c2 100644 --- a/web/src/alpined.d/ldap.h +++ b/web/src/alpined.d/ldap.h @@ -39,8 +39,9 @@ extern WPLDAP_S *wpldap_global; char *peLdapPname(char *, char *); int peLdapEntryParse(LDAP_SERV_RES_S *, LDAPMessage *, - char ***, char ***, char ***, char ***, - char ***, char ***); + struct berval ***, struct berval ***, + struct berval ***, struct berval ***, + struct berval ***, struct berval ***); WPLDAPRES_S *free_wpldapres(WPLDAPRES_S *); #endif /* ENABLE_LDAP */ |