On Thu, Jun 21, 2018 at 10:33:37AM +0200, Reyk Floeter wrote:
> Hi,
> 
> the _url code was broken and disabled in ypldap's aldap - I fixed it
> for ldap(1).  The other chunk is a DEBUG message fix, not compiled by
> default.
> 
> OK?

Looks good to me. OK claudio@
 
> Index: usr.sbin/ypldap/aldap.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ypldap/aldap.c,v
> retrieving revision 1.39
> diff -u -p -u -p -r1.39 aldap.c
> --- usr.sbin/ypldap/aldap.c   8 Feb 2018 18:02:06 -0000       1.39
> +++ usr.sbin/ypldap/aldap.c   21 Jun 2018 08:29:52 -0000
> @@ -1,5 +1,5 @@
> -/*   $Id: aldap.c,v 1.39 2018/02/08 18:02:06 jca Exp $ */
> -/*   $OpenBSD: aldap.c,v 1.39 2018/02/08 18:02:06 jca Exp $ */
> +/*   $Id: aldap.c,v 1.2 2018/06/21 08:27:35 reyk Exp $ */
> +/*   $OpenBSD: aldap.c,v 1.2 2018/06/21 08:27:35 reyk Exp $ */
>  
>  /*
>   * Copyright (c) 2008 Alexander Schrijver <[email protected]>
> @@ -693,16 +693,14 @@ aldap_free_attr(char **values)
>       return (1);
>  }
>  
> -#if 0
>  void
>  aldap_free_url(struct aldap_url *lu)
>  {
>       free(lu->buffer);
> -     free(lu->filter);
>  }
>  
>  int
> -aldap_parse_url(char *url, struct aldap_url *lu)
> +aldap_parse_url(const char *url, struct aldap_url *lu)
>  {
>       char            *p, *forward, *forward2;
>       const char      *errstr = NULL;
> @@ -712,10 +710,20 @@ aldap_parse_url(char *url, struct aldap_
>               return (-1);
>  
>       /* protocol */
> -     if (strncasecmp(LDAP_URL, p, strlen(LDAP_URL)) != 0)
> -             goto fail;
> -     lu->protocol = LDAP;
> -     p += strlen(LDAP_URL);
> +     if (strncasecmp(LDAP_URL, p, strlen(LDAP_URL)) == 0) {
> +             lu->protocol = LDAP;
> +             p += strlen(LDAP_URL);
> +     } else if (strncasecmp(LDAPS_URL, p, strlen(LDAPS_URL)) == 0) {
> +             lu->protocol = LDAPS;
> +             p += strlen(LDAPS_URL);
> +     } else if (strncasecmp(LDAPTLS_URL, p, strlen(LDAPTLS_URL)) == 0) {
> +             lu->protocol = LDAPTLS;
> +             p += strlen(LDAPTLS_URL);
> +     } else if (strncasecmp(LDAPI_URL, p, strlen(LDAPI_URL)) == 0) {
> +             lu->protocol = LDAPI;
> +             p += strlen(LDAPI_URL);
> +     } else
> +             lu->protocol = -1;
>  
>       /* host and optional port */
>       if ((forward = strchr(p, '/')) != NULL)
> @@ -795,7 +803,6 @@ aldap_parse_url(char *url, struct aldap_
>       if (p)
>               lu->filter = p;
>  done:
> -     free(url);
>       return (1);
>  fail:
>       free(lu->buffer);
> @@ -805,7 +812,7 @@ fail:
>  
>  int
>  aldap_search_url(struct aldap *ldap, char *url, int typesonly, int sizelimit,
> -    int timelimit)
> +    int timelimit, struct aldap_page_control *page)
>  {
>       struct aldap_url *lu;
>  
> @@ -816,7 +823,7 @@ aldap_search_url(struct aldap *ldap, cha
>               goto fail;
>  
>       if (aldap_search(ldap, lu->dn, lu->scope, lu->filter, lu->attributes,
> -         typesonly, sizelimit, timelimit) == -1)
> +         typesonly, sizelimit, timelimit, page) == -1)
>               goto fail;
>  
>       aldap_free_url(lu);
> @@ -825,7 +832,6 @@ fail:
>       aldap_free_url(lu);
>       return (-1);
>  }
> -#endif /* 0 */
>  
>  /*
>   * internal functions
> @@ -1277,7 +1283,7 @@ ldap_debug_elements(struct ber_element *
>                       fprintf(stderr, "<INVALID>\n");
>                       break;
>               }
> -             fprintf(stderr, "string \"%.*s\"\n",  len, buf);
> +             fprintf(stderr, "string \"%.*s\"\n",  (int)len, buf);
>               break;
>       case BER_TYPE_NULL:     /* no payload */
>       case BER_TYPE_EOC:
> Index: usr.sbin/ypldap/aldap.h
> ===================================================================
> RCS file: /cvs/src/usr.sbin/ypldap/aldap.h,v
> retrieving revision 1.10
> diff -u -p -u -p -r1.10 aldap.h
> --- usr.sbin/ypldap/aldap.h   30 May 2017 09:33:31 -0000      1.10
> +++ usr.sbin/ypldap/aldap.h   21 Jun 2018 08:29:52 -0000
> @@ -1,5 +1,5 @@
> -/*   $Id: aldap.h,v 1.10 2017/05/30 09:33:31 jmatthew Exp $ */
> -/*   $OpenBSD: aldap.h,v 1.10 2017/05/30 09:33:31 jmatthew Exp $ */
> +/*   $Id: aldap.h,v 1.1.1.1 2018/06/13 15:45:57 reyk Exp $ */
> +/*   $OpenBSD: aldap.h,v 1.1.1.1 2018/06/13 15:45:57 reyk Exp $ */
>  
>  /*
>   * Copyright (c) 2008 Alexander Schrijver <[email protected]>
> @@ -25,6 +25,10 @@
>  #include "ber.h"
>  
>  #define LDAP_URL             "ldap://";
> +#define LDAPS_URL            "ldaps://"
> +#define LDAPTLS_URL          "ldap+tls://"
> +#define LDAPI_URL            "ldapi://"
> +
>  #define LDAP_PORT            389
>  #define LDAPS_PORT           636
>  #define LDAP_PAGED_OID               "1.2.840.113556.1.4.319"
> @@ -79,7 +83,9 @@ struct aldap_message {
>  
>  enum aldap_protocol {
>       LDAP,
> -     LDAPS
> +     LDAPS,
> +     LDAPTLS,
> +     LDAPI
>  };
>  
>  struct aldap_url {
> @@ -222,11 +228,10 @@ char    *aldap_get_dn(struct aldap_message 
>  char *aldap_get_diagmsg(struct aldap_message *);
>  char **aldap_get_references(struct aldap_message *);
>  void  aldap_free_references(char **values);
> -#if 0
> -int   aldap_parse_url(char *, struct aldap_url *);
> +int   aldap_parse_url(const char *, struct aldap_url *);
>  void  aldap_free_url(struct aldap_url *);
> -int   aldap_search_url(struct aldap *, char *, int, int, int);
> -#endif
> +int   aldap_search_url(struct aldap *, char *, int, int, int,
> +         struct aldap_page_control *);
>  
>  int   aldap_count_attrs(struct aldap_message *);
>  int   aldap_match_attr(struct aldap_message *, char *, char ***);
> 

-- 
:wq Claudio

Reply via email to