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
