diff options
Diffstat (limited to 'nslcd/netgroup.c')
-rw-r--r-- | nslcd/netgroup.c | 189 |
1 files changed, 94 insertions, 95 deletions
diff --git a/nslcd/netgroup.c b/nslcd/netgroup.c index 535bc27..29cd91a 100644 --- a/nslcd/netgroup.c +++ b/nslcd/netgroup.c @@ -5,7 +5,7 @@ Copyright (C) 1997-2005 Luke Howard Copyright (C) 2006 West Consulting - Copyright (C) 2006, 2007, 2009, 2010, 2011 Arthur de Jong + Copyright (C) 2006, 2007, 2009, 2010, 2011, 2012 Arthur de Jong This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -63,149 +63,148 @@ const char *attmap_netgroup_memberNisNetgroup = "memberNisNetgroup"; static const char *netgroup_attrs[4]; static int mkfilter_netgroup_byname(const char *name, - char *buffer,size_t buflen) + char *buffer, size_t buflen) { char safename[300]; /* escape attribute */ - if (myldap_escape(name,safename,sizeof(safename))) + if (myldap_escape(name, safename, sizeof(safename))) return -1; /* build filter */ - return mysnprintf(buffer,buflen, - "(&%s(%s=%s))", - netgroup_filter, - attmap_netgroup_cn,safename); + return mysnprintf(buffer, buflen, "(&%s(%s=%s))", + netgroup_filter, attmap_netgroup_cn, safename); } void netgroup_init(void) { int i; /* set up search bases */ - if (netgroup_bases[0]==NULL) - for (i=0;i<NSS_LDAP_CONFIG_MAX_BASES;i++) - netgroup_bases[i]=nslcd_cfg->ldc_bases[i]; + if (netgroup_bases[0] == NULL) + for (i = 0; i < NSS_LDAP_CONFIG_MAX_BASES; i++) + netgroup_bases[i] = nslcd_cfg->ldc_bases[i]; /* set up scope */ - if (netgroup_scope==LDAP_SCOPE_DEFAULT) - netgroup_scope=nslcd_cfg->ldc_scope; + if (netgroup_scope == LDAP_SCOPE_DEFAULT) + netgroup_scope = nslcd_cfg->ldc_scope; /* set up attribute list */ - netgroup_attrs[0]=attmap_netgroup_cn; - netgroup_attrs[1]=attmap_netgroup_nisNetgroupTriple; - netgroup_attrs[2]=attmap_netgroup_memberNisNetgroup; - netgroup_attrs[3]=NULL; + netgroup_attrs[0] = attmap_netgroup_cn; + netgroup_attrs[1] = attmap_netgroup_nisNetgroupTriple; + netgroup_attrs[2] = attmap_netgroup_memberNisNetgroup; + netgroup_attrs[3] = NULL; } -static int write_string_stripspace_len(TFILE *fp,const char *str,int len) +static int write_string_stripspace_len(TFILE *fp, const char *str, int len) { int32_t tmpint32; - int i,j; - DEBUG_PRINT("WRITE_STRING: var="__STRING(str)" string=\"%s\"",str); - if (str==NULL) + int i, j; + DEBUG_PRINT("WRITE_STRING: var=" __STRING(str) " string=\"%s\"", str); + if (str == NULL) { - WRITE_INT32(fp,0); + WRITE_INT32(fp, 0); } else { /* skip leading spaces */ - for (i=0;(str[i]!='\0')&&(isspace(str[i]));i++) - /* nothing else to do */ ; + for (i = 0; (str[i] != '\0') && (isspace(str[i])); i++) + /* nothing */ ; /* skip trailing spaces */ - for (j=len;(j>i)&&(isspace(str[j-1]));j--) - /* nothing else to do */ ; + for (j = len; (j > i) && (isspace(str[j - 1])); j--) + /* nothing */ ; /* write length of string */ - WRITE_INT32(fp,j-i); + WRITE_INT32(fp, j - i); /* write string itself */ - if (j>i) + if (j > i) { - WRITE(fp,str+i,j-i); + WRITE(fp, str + i, j - i); } } /* we're done */ return 0; } -#define WRITE_STRING_STRIPSPACE_LEN(fp,str,len) \ - if (write_string_stripspace_len(fp,str,len)) \ +#define WRITE_STRING_STRIPSPACE_LEN(fp, str, len) \ + if (write_string_stripspace_len(fp, str, len)) \ return -1; -#define WRITE_STRING_STRIPSPACE(fp,str) \ - WRITE_STRING_STRIPSPACE_LEN(fp,str,strlen(str)) +#define WRITE_STRING_STRIPSPACE(fp, str) \ + WRITE_STRING_STRIPSPACE_LEN(fp, str, strlen(str)) -static int write_netgroup_triple(TFILE *fp,MYLDAP_ENTRY *entry,const char *triple) +static int write_netgroup_triple(TFILE *fp, MYLDAP_ENTRY *entry, + const char *triple) { int32_t tmpint32; int i; - int hostb,hoste,userb,usere,domainb,domaine; + int hostb, hoste, userb, usere, domainb, domaine; /* skip leading spaces */ - for (i=0;(triple[i]!='\0')&&(isspace(triple[i]));i++) - /* nothing else to do */ ; + for (i = 0; (triple[i] != '\0') && (isspace(triple[i])); i++) + /* nothing */ ; /* we should have a bracket now */ - if (triple[i]!='(') + if (triple[i] != '(') { - log_log(LOG_WARNING,"%s: %s: does not begin with '('", - myldap_get_dn(entry),attmap_netgroup_nisNetgroupTriple); + log_log(LOG_WARNING, "%s: %s: does not begin with '('", + myldap_get_dn(entry), attmap_netgroup_nisNetgroupTriple); return 0; } i++; - hostb=i; + hostb = i; /* find comma (end of host string) */ - for (;(triple[i]!='\0')&&(triple[i]!=',');i++) - /* nothing else to do */ ; - if (triple[i]!=',') + for (; (triple[i] != '\0') && (triple[i] != ','); i++) + /* nothing */ ; + if (triple[i] != ',') { - log_log(LOG_WARNING,"%s: %s: missing ','", - myldap_get_dn(entry),attmap_netgroup_nisNetgroupTriple); + log_log(LOG_WARNING, "%s: %s: missing ','", + myldap_get_dn(entry), attmap_netgroup_nisNetgroupTriple); return 0; } - hoste=i; + hoste = i; i++; - userb=i; + userb = i; /* find comma (end of user string) */ - for (;(triple[i]!='\0')&&(triple[i]!=',');i++) - /* nothing else to do */ ; - if (triple[i]!=',') + for (; (triple[i] != '\0') && (triple[i] != ','); i++) + /* nothing */ ; + if (triple[i] != ',') { - log_log(LOG_WARNING,"%s: %s: missing ','", - myldap_get_dn(entry),attmap_netgroup_nisNetgroupTriple); + log_log(LOG_WARNING, "%s: %s: missing ','", + myldap_get_dn(entry), attmap_netgroup_nisNetgroupTriple); return 0; } - usere=i; + usere = i; i++; - domainb=i; + domainb = i; /* find closing bracket (end of domain string) */ - for (;(triple[i]!='\0')&&(triple[i]!=')');i++) - /* nothing else to do */ ; - if (triple[i]!=')') + for (; (triple[i] != '\0') && (triple[i] != ')'); i++) + /* nothing */ ; + if (triple[i] != ')') { - log_log(LOG_WARNING,"%s: %s: missing ')'", - myldap_get_dn(entry),attmap_netgroup_nisNetgroupTriple); + log_log(LOG_WARNING, "%s: %s: missing ')'", + myldap_get_dn(entry), attmap_netgroup_nisNetgroupTriple); return 0; } - domaine=i; + domaine = i; i++; /* skip trailing spaces */ - for (;(triple[i]!='\0')&&(isspace(triple[i]));i++) - /* nothing else to do */ ; + for (; (triple[i] != '\0') && (isspace(triple[i])); i++) + /* nothing */ ; /* if anything is left in the string we have a problem */ - if (triple[i]!='\0') + if (triple[i] != '\0') { - log_log(LOG_WARNING,"%s: %s: contains trailing data", - myldap_get_dn(entry),attmap_netgroup_nisNetgroupTriple); + log_log(LOG_WARNING, "%s: %s: contains trailing data", + myldap_get_dn(entry), attmap_netgroup_nisNetgroupTriple); return 0; } /* write strings */ - WRITE_INT32(fp,NSLCD_RESULT_BEGIN); - WRITE_INT32(fp,NSLCD_NETGROUP_TYPE_TRIPLE); - WRITE_STRING_STRIPSPACE_LEN(fp,triple+hostb,hoste-hostb) - WRITE_STRING_STRIPSPACE_LEN(fp,triple+userb,usere-userb) - WRITE_STRING_STRIPSPACE_LEN(fp,triple+domainb,domaine-domainb) + WRITE_INT32(fp, NSLCD_RESULT_BEGIN); + WRITE_INT32(fp, NSLCD_NETGROUP_TYPE_TRIPLE); + WRITE_STRING_STRIPSPACE_LEN(fp, triple + hostb, hoste - hostb); + WRITE_STRING_STRIPSPACE_LEN(fp, triple + userb, usere - userb); + WRITE_STRING_STRIPSPACE_LEN(fp, triple + domainb, domaine - domainb); /* we're done */ return 0; } -#define WRITE_NETGROUP_TRIPLE(fp,entry,triple) \ - if (write_netgroup_triple(fp,entry,triple)) \ +#define WRITE_NETGROUP_TRIPLE(fp, entry, triple) \ + if (write_netgroup_triple(fp, entry, triple)) \ return -1; -static int write_netgroup(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname) +static int write_netgroup(TFILE *fp, MYLDAP_ENTRY *entry, const char *reqname) { int32_t tmpint32; int i; @@ -213,48 +212,48 @@ static int write_netgroup(TFILE *fp,MYLDAP_ENTRY *entry,const char *reqname) const char **triples; const char **members; /* get the netgroup name */ - names=myldap_get_values(entry,attmap_netgroup_cn); - if ((names==NULL)||(names[0]==NULL)) + names = myldap_get_values(entry, attmap_netgroup_cn); + if ((names == NULL) || (names[0] == NULL)) { - log_log(LOG_WARNING,"%s: %s: missing", - myldap_get_dn(entry),attmap_netgroup_cn); + log_log(LOG_WARNING, "%s: %s: missing", + myldap_get_dn(entry), attmap_netgroup_cn); return 0; } - for (i=0;(names[i]!=NULL)&&(STR_CMP(reqname,names[i])!=0);i++) - /* nothing here */ ; - if (names[i]==NULL) + for (i = 0; (names[i] != NULL) && (STR_CMP(reqname, names[i]) != 0); i++) + /* nothing */ ; + if (names[i] == NULL) return 0; /* the name was not found */ /* get the netgroup triples and member */ - triples=myldap_get_values(entry,attmap_netgroup_nisNetgroupTriple); - members=myldap_get_values(entry,attmap_netgroup_memberNisNetgroup); + triples = myldap_get_values(entry, attmap_netgroup_nisNetgroupTriple); + members = myldap_get_values(entry, attmap_netgroup_memberNisNetgroup); /* write the netgroup triples */ - if (triples!=NULL) - for (i=0;triples[i]!=NULL;i++) + if (triples != NULL) + for (i = 0; triples[i] != NULL; i++) { - WRITE_NETGROUP_TRIPLE(fp,entry,triples[i]); + WRITE_NETGROUP_TRIPLE(fp, entry, triples[i]); } /* write netgroup members */ - if (members!=NULL) - for (i=0;members[i]!=NULL;i++) + if (members != NULL) + for (i = 0; members[i] != NULL; i++) { /* write the result code */ - WRITE_INT32(fp,NSLCD_RESULT_BEGIN); + WRITE_INT32(fp, NSLCD_RESULT_BEGIN); /* write triple indicator */ - WRITE_INT32(fp,NSLCD_NETGROUP_TYPE_NETGROUP); + WRITE_INT32(fp, NSLCD_NETGROUP_TYPE_NETGROUP); /* write netgroup name */ - WRITE_STRING_STRIPSPACE(fp,members[i]); + WRITE_STRING_STRIPSPACE(fp, members[i]); } /* we're done */ return 0; } NSLCD_HANDLE( - netgroup,byname, + netgroup, byname, char name[256]; char filter[4096]; - READ_STRING(fp,name); - log_setrequest("netgroup=\"%s\"",name);, + READ_STRING(fp, name); + log_setrequest("netgroup=\"%s\"", name);, NSLCD_ACTION_NETGROUP_BYNAME, - mkfilter_netgroup_byname(name,filter,sizeof(filter)), - write_netgroup(fp,entry,name) + mkfilter_netgroup_byname(name, filter, sizeof(filter)), + write_netgroup(fp, entry, name) ) |