On 8/28/24 12:41 PM, minf...@apache.org wrote:
> Author: minfrin
> Date: Wed Aug 28 10:41:28 2024
> New Revision: 1920247
> 
> URL: http://svn.apache.org/viewvc?rev=1920247&view=rev
> Log:
> apr_ldap: Add support for RFC4522 binary encoding option.
> 
> Modified:
>     apr/apr/trunk/ldap/apr_ldap.c
> 
> Modified: apr/apr/trunk/ldap/apr_ldap.c
> URL: 
> http://svn.apache.org/viewvc/apr/apr/trunk/ldap/apr_ldap.c?rev=1920247&r1=1920246&r2=1920247&view=diff
> ==============================================================================
> --- apr/apr/trunk/ldap/apr_ldap.c (original)
> +++ apr/apr/trunk/ldap/apr_ldap.c Wed Aug 28 10:41:28 2024
> @@ -1568,16 +1568,32 @@ APU_DECLARE_LDAP(apr_status_t) apr_ldap_
>  
>                  if (vals) {
>  
> -                    int k, nvals;
> +                    int k, nvals, binary = 0;
> +
> +                    char *sc = attr;
> +
> +                    /* support for RFC4522 binary encoding option */
> +                    while ((sc = strchr(sc, ';'))) {
> +                        if (!strcasecmp(sc, ";binary") && (sc[7] == 0 || 
> sc[7] == ';')) {
> +                            binary = 1;
> +                            break;
> +                        }
> +                    }
>  
>                      nvals = ldap_count_values_len(vals);
>  
>                      for (k = 0; k < nvals; k++) {
>  
>                          apr_buffer_t buf;
> +                        char *str = NULL;
>  
> -                        apr_buffer_mem_set(&buf, vals[k]->bv_val, 
> vals[k]->bv_len);
> -// fixme - tell cb if binary
> +                        if (binary) {
> +                            apr_buffer_mem_set(&buf, vals[k]->bv_val, 
> vals[k]->bv_len);
> +                        }
> +                        else {
> +                            str = strndup(vals[k]->bv_val, vals[k]->bv_len);

Why do we need the strndup?

> +                            apr_buffer_str_set(&buf, str, vals[k]->bv_len);
> +                        }
>  
>                          if (res->entry_cb.search) {
>                              status = res->entry_cb.search(ldap, dn, 
> res->nentries, nattrs, j,

Regards

RĂ¼diger

Reply via email to