diff options
author | Alexey Dokuchaev <danfe@FreeBSD.org> | 2020-09-01 08:17:28 +0000 |
---|---|---|
committer | Alexey Dokuchaev <danfe@FreeBSD.org> | 2020-09-01 08:17:28 +0000 |
commit | 262b2a3ac1ce7a86d0474d4cfbb791c10a064d2b (patch) | |
tree | 7d316e75ea26762a616b15febc58ed6e1d7fc8f9 | |
parent | 143cf447045ad2e22748aadb483247df66b6f15f (diff) |
Notes
-rw-r--r-- | net/yptransitd/Makefile | 2 | ||||
-rw-r--r-- | net/yptransitd/files/patch-freebsd-master-passwd | 227 | ||||
-rw-r--r-- | net/yptransitd/files/patch-src_modules_ldap_cache.c | 177 | ||||
-rw-r--r-- | net/yptransitd/files/patch-src_modules_ldap_ldap.c | 13 | ||||
-rw-r--r-- | net/yptransitd/files/patch-src_modules_ldap_ldap.h | 12 |
5 files changed, 203 insertions, 228 deletions
diff --git a/net/yptransitd/Makefile b/net/yptransitd/Makefile index 95dbccd538bd..7a99a79bd130 100644 --- a/net/yptransitd/Makefile +++ b/net/yptransitd/Makefile @@ -28,7 +28,7 @@ post-patch: ${WRKSRC}/Makefile.in @${REINPLACE_CMD} -e 's,=gcc,=@CC@,' \ ${WRKSRC}/lib/Makefile.in - @${REINPLACE_CMD} -e 's,-O2 -g,@CFLAGS@, ; \ + @${REINPLACE_CMD} -e 's,-O2 -g,@CFLAGS@ -fcommon, ; \ s, $${BINDIR}, $${DESTDIR}$${BINDIR},' \ ${WRKSRC}/src/Makefile.in @${REINPLACE_CMD} -E 's,^([[:blank:]]+)\([^\)]+\) ,\1,' \ diff --git a/net/yptransitd/files/patch-freebsd-master-passwd b/net/yptransitd/files/patch-freebsd-master-passwd deleted file mode 100644 index 76ee47d5ba8f..000000000000 --- a/net/yptransitd/files/patch-freebsd-master-passwd +++ /dev/null @@ -1,227 +0,0 @@ -diff -rc /services/build/usr/ports/net/yptransitd/work/yptransitd-0.5/src/modules/ldap/cache.c ./src/modules/ldap/cache.c -*** /services/build/usr/ports/net/yptransitd/work/yptransitd-0.5/src/modules/ldap/cache.c Tue Oct 9 10:34:51 2001 ---- ./src/modules/ldap/cache.c Wed May 5 01:51:16 2004 -*************** -*** 278,285 **** - } else - if(!strcasecmp(attr, "userpassword")) - { -! pwinfo->userpassword = fix_password(values); -! pwinfo->size += strlen(pwinfo->userpassword); - } else - if(!strcasecmp(attr, "uidnumber")) - { ---- 278,285 ---- - } else - if(!strcasecmp(attr, "userpassword")) - { -! pwinfo->userpassword = safe_strdup("*"); -! pwinfo->size += strlen("*"); - } else - if(!strcasecmp(attr, "uidnumber")) - { -*************** -*** 322,327 **** ---- 322,394 ---- - return (rval); - } - -+ int assemble_master_passwd(valdat *val, LDAPMessage *user, struct pwinfo *pwinfo) -+ { -+ ypstat rval; -+ char *attr; -+ BerElement *ber = NULL; -+ -+ rval = YP_YPERR; -+ fill_pwinfo(pwinfo); -+ -+ for (attr = ldap_first_attribute (ldaprefs.ldap, user, &ber); attr; attr = ldap_next_attribute (ldaprefs.ldap, user, ber)) -+ { -+ char **values; -+ -+ values = ldap_get_values (ldaprefs.ldap, user, attr); -+ if (values) -+ { -+ if(!strcasecmp(attr, "uid")) -+ { -+ pwinfo->uid = safe_strdup(values[0]); -+ pwinfo->size += strlen(values[0]); -+ } else -+ if(!strcasecmp(attr, "userpassword")) -+ { -+ pwinfo->userpassword = fix_password(values); -+ pwinfo->size += strlen(pwinfo->userpassword); -+ } else -+ if(!strcasecmp(attr, "uidnumber")) -+ { -+ pwinfo->uidnumber = safe_strdup(values[0]); -+ pwinfo->size += strlen(values[0]); -+ } else -+ if(!strcasecmp(attr, "gidnumber")) -+ { -+ pwinfo->gidnumber = safe_strdup(values[0]); -+ pwinfo->size += strlen(values[0]); -+ } else -+ if(!strcasecmp(attr, "gecos")) -+ { -+ pwinfo->gecos = safe_strdup(values[0]); -+ pwinfo->size += strlen(values[0]); -+ } else -+ if(!strcasecmp(attr, "homedirectory")) -+ { -+ pwinfo->homedirectory = safe_strdup(values[0]); -+ pwinfo->size += strlen(values[0]); -+ } else -+ if(!strcasecmp(attr, "loginshell")) -+ { -+ pwinfo->loginshell = safe_strdup(values[0]); -+ pwinfo->size += strlen(values[0]); -+ } -+ ldap_value_free(values); -+ } -+ } -+ if (check_pwinfo(pwinfo) == YP_TRUE) -+ { -+ val->valdat_len = pwinfo->size + MPWLINE_SIZE; -+ val->valdat_val = safe_malloc(val->valdat_len + 1); -+ sprintf(val->valdat_val, MPWLINE, pwinfo->uid, pwinfo->userpassword, pwinfo->uidnumber, pwinfo->gidnumber, pwinfo->gecos, pwinfo->homedirectory, pwinfo->loginshell); -+ rval = YP_TRUE; -+ } else { -+ rval = YP_NOKEY; -+ } -+ -+ return (rval); -+ } -+ - int assemble_group(valdat *val, LDAPMessage *group, struct gwinfo *gwinfo) - { - ypstat rval; -*************** -*** 538,548 **** - free(filter); - free(base); - } - else if (!strcmp((char *) mapcache_current->map, "group.byname")) - { - /* XXX Add preferences for filter and basedn */ - base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Group,") + 1); - sprintf(base, "%s%s", "ou=Group,", ldaprefs.basedn); - filter = safe_strdup("(objectClass=posixGroup)"); - - if(ldap_search_s(ldaprefs.ldap, ---- 605,689 ---- - free(filter); - free(base); - } -+ else if (!strcmp((char *) mapcache_current->map, "master.passwd.byname")) -+ { -+ /* XXX Add preferences for filter and basedn */ -+ base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Staffs,") + 1); -+ sprintf(base, "%s%s", "ou=Staffs,", ldaprefs.basedn); -+ filter = safe_strdup("(objectClass=posixAccount)"); -+ -+ if(ldap_search_s(ldaprefs.ldap, -+ base, -+ LDAP_SCOPE_ONELEVEL, -+ filter, -+ user_attributes, -+ 0, -+ &ldapreturn) != -1) -+ { -+ for (record = ldap_first_entry(ldaprefs.ldap, ldapreturn); record; record = ldap_next_entry(ldaprefs.ldap, record)) -+ { -+ pwinfo = safe_malloc(sizeof(struct pwinfo)); -+ rval = assemble_master_passwd(val, record, pwinfo); -+ if(rval == YP_TRUE); -+ { -+ if(check_unique(mapcache_current, pwinfo->uid) == YP_NOKEY) -+ { -+ mapentry_current = safe_malloc(sizeof(struct mapentry)); -+ mapentry_current->key = safe_strdup(pwinfo->uid); -+ mapentry_current->val = val->valdat_val; -+ mapentry_current->next = mapcache_current->mapentry; -+ mapcache_current->mapentry = mapentry_current; -+ } -+ } -+ clean_pwinfo(pwinfo); -+ } -+ } -+ ldap_msgfree(ldapreturn); -+ free(filter); -+ free(base); -+ } -+ else if (!strcmp((char *) mapcache_current->map, "master.passwd.byuid")) -+ { -+ /* XXX Add preferences for filter and basedn */ -+ base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Staffs,") + 1); -+ sprintf(base, "%s%s", "ou=Staffs,", ldaprefs.basedn); -+ filter = safe_strdup("(objectClass=posixAccount)"); -+ -+ if(ldap_search_s(ldaprefs.ldap, -+ base, -+ LDAP_SCOPE_ONELEVEL, -+ filter, -+ user_attributes, -+ 0, -+ &ldapreturn) != -1) -+ { -+ for (record = ldap_first_entry(ldaprefs.ldap, ldapreturn); record; record = ldap_next_entry(ldaprefs.ldap, record)) -+ { -+ pwinfo = safe_malloc(sizeof(struct pwinfo)); -+ rval = assemble_master_passwd(val, record, pwinfo); -+ if(rval == YP_TRUE); -+ { -+ if(check_unique(mapcache_current, pwinfo->uidnumber) == YP_NOKEY) -+ { -+ mapentry_current = safe_malloc(sizeof(struct mapentry)); -+ mapentry_current->key = safe_strdup(pwinfo->uidnumber); -+ mapentry_current->val = val->valdat_val; -+ mapentry_current->next = mapcache_current->mapentry; -+ mapcache_current->mapentry = mapentry_current; -+ } -+ } -+ clean_pwinfo(pwinfo); -+ } -+ } -+ ldap_msgfree(ldapreturn); -+ free(filter); -+ free(base); -+ } - else if (!strcmp((char *) mapcache_current->map, "group.byname")) - { - /* XXX Add preferences for filter and basedn */ - base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Group,") + 1); - sprintf(base, "%s%s", "ou=Group,", ldaprefs.basedn); - filter = safe_strdup("(objectClass=posixGroup)"); - - if(ldap_search_s(ldaprefs.ldap, -diff -rc /services/build/usr/ports/net/yptransitd/work/yptransitd-0.5/src/modules/ldap/ldap.c ./src/modules/ldap/ldap.c -*** /services/build/usr/ports/net/yptransitd/work/yptransitd-0.5/src/modules/ldap/ldap.c Wed Oct 3 09:45:29 2001 ---- ./src/modules/ldap/ldap.c Wed May 5 01:39:20 2004 -*************** -*** 60,66 **** ---- 60,69 ---- - #include "cache.h" - - #define CONFIG_FILE CONFDIR "/ldap.conf" -+ /* - #define MAPS "auto.home auto_home amd.home passwd.byname passwd.byuid group.byname group.bygid" -+ */ -+ #define MAPS "auto.home auto_home amd.home master.passwd.byname master.passwd.byuid passwd.byname passwd.byuid group.byname group.bygid" - - struct ldaprefs ldaprefs; - -diff -rc /services/build/usr/ports/net/yptransitd/work/yptransitd-0.5/src/modules/ldap/ldap.h ./src/modules/ldap/ldap.h -*** /services/build/usr/ports/net/yptransitd/work/yptransitd-0.5/src/modules/ldap/ldap.h Wed Oct 3 08:59:53 2001 ---- ./src/modules/ldap/ldap.h Wed May 5 01:49:57 2004 -*************** -*** 42,47 **** ---- 42,50 ---- - #define PWLINE "%s:%s:%s:%s:%s:%s:%s" - #define PWLINE_SIZE 6 - -+ #define MPWLINE "%s:%s:%s:%s::0:0:%s:%s:%s" -+ #define MPWLINE_SIZE 11 -+ - #define GWLINE "%s:%s:%s:%s" - #define GWLINE_SIZE 3 diff --git a/net/yptransitd/files/patch-src_modules_ldap_cache.c b/net/yptransitd/files/patch-src_modules_ldap_cache.c new file mode 100644 index 000000000000..b0dca21a3a8e --- /dev/null +++ b/net/yptransitd/files/patch-src_modules_ldap_cache.c @@ -0,0 +1,177 @@ +--- src/modules/ldap/cache.c.orig 2001-10-09 02:34:51 UTC ++++ src/modules/ldap/cache.c +@@ -278,8 +278,8 @@ int assemble_passwd(valdat *val, LDAPMes + } else + if(!strcasecmp(attr, "userpassword")) + { +- pwinfo->userpassword = fix_password(values); +- pwinfo->size += strlen(pwinfo->userpassword); ++ pwinfo->userpassword = safe_strdup("*"); ++ pwinfo->size += strlen("*"); + } else + if(!strcasecmp(attr, "uidnumber")) + { +@@ -322,6 +322,73 @@ int assemble_passwd(valdat *val, LDAPMes + return (rval); + } + ++int assemble_master_passwd(valdat *val, LDAPMessage *user, struct pwinfo *pwinfo) ++{ ++ ypstat rval; ++ char *attr; ++ BerElement *ber = NULL; ++ ++ rval = YP_YPERR; ++ fill_pwinfo(pwinfo); ++ ++ for (attr = ldap_first_attribute (ldaprefs.ldap, user, &ber); attr; attr = ldap_next_attribute (ldaprefs.ldap, user, ber)) ++ { ++ char **values; ++ ++ values = ldap_get_values (ldaprefs.ldap, user, attr); ++ if (values) ++ { ++ if(!strcasecmp(attr, "uid")) ++ { ++ pwinfo->uid = safe_strdup(values[0]); ++ pwinfo->size += strlen(values[0]); ++ } else ++ if(!strcasecmp(attr, "userpassword")) ++ { ++ pwinfo->userpassword = fix_password(values); ++ pwinfo->size += strlen(pwinfo->userpassword); ++ } else ++ if(!strcasecmp(attr, "uidnumber")) ++ { ++ pwinfo->uidnumber = safe_strdup(values[0]); ++ pwinfo->size += strlen(values[0]); ++ } else ++ if(!strcasecmp(attr, "gidnumber")) ++ { ++ pwinfo->gidnumber = safe_strdup(values[0]); ++ pwinfo->size += strlen(values[0]); ++ } else ++ if(!strcasecmp(attr, "gecos")) ++ { ++ pwinfo->gecos = safe_strdup(values[0]); ++ pwinfo->size += strlen(values[0]); ++ } else ++ if(!strcasecmp(attr, "homedirectory")) ++ { ++ pwinfo->homedirectory = safe_strdup(values[0]); ++ pwinfo->size += strlen(values[0]); ++ } else ++ if(!strcasecmp(attr, "loginshell")) ++ { ++ pwinfo->loginshell = safe_strdup(values[0]); ++ pwinfo->size += strlen(values[0]); ++ } ++ ldap_value_free(values); ++ } ++ } ++ if (check_pwinfo(pwinfo) == YP_TRUE) ++ { ++ val->valdat_len = pwinfo->size + MPWLINE_SIZE; ++ val->valdat_val = safe_malloc(val->valdat_len + 1); ++ sprintf(val->valdat_val, MPWLINE, pwinfo->uid, pwinfo->userpassword, pwinfo->uidnumber, pwinfo->gidnumber, pwinfo->gecos, pwinfo->homedirectory, pwinfo->loginshell); ++ rval = YP_TRUE; ++ } else { ++ rval = YP_NOKEY; ++ } ++ ++ return (rval); ++} ++ + int assemble_group(valdat *val, LDAPMessage *group, struct gwinfo *gwinfo) + { + ypstat rval; +@@ -452,7 +519,7 @@ struct mapcache *create_cache (ypmaplist + valdat *val; + int rval; + +- (void *) mapcache_current = (void *) mapcache_head = (void *) ldapreturn = (void *) record = NULL; ++ mapcache_current = mapcache_head = ldapreturn = record = NULL; + val = safe_malloc(sizeof(valdat)); + + for(maplist_current = maps; maplist_current; maplist_current = maplist_current->next) +@@ -538,6 +605,80 @@ struct mapcache *create_cache (ypmaplist + free(filter); + free(base); + } ++ else if (!strcmp((char *) mapcache_current->map, "master.passwd.byname")) ++ { ++ /* XXX Add preferences for filter and basedn */ ++ base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Staffs,") + 1); ++ sprintf(base, "%s%s", "ou=Staffs,", ldaprefs.basedn); ++ filter = safe_strdup("(objectClass=posixAccount)"); ++ ++ if(ldap_search_s(ldaprefs.ldap, ++ base, ++ LDAP_SCOPE_ONELEVEL, ++ filter, ++ user_attributes, ++ 0, ++ &ldapreturn) != -1) ++ { ++ for (record = ldap_first_entry(ldaprefs.ldap, ldapreturn); record; record = ldap_next_entry(ldaprefs.ldap, record)) ++ { ++ pwinfo = safe_malloc(sizeof(struct pwinfo)); ++ rval = assemble_master_passwd(val, record, pwinfo); ++ if(rval == YP_TRUE); ++ { ++ if(check_unique(mapcache_current, pwinfo->uid) == YP_NOKEY) ++ { ++ mapentry_current = safe_malloc(sizeof(struct mapentry)); ++ mapentry_current->key = safe_strdup(pwinfo->uid); ++ mapentry_current->val = val->valdat_val; ++ mapentry_current->next = mapcache_current->mapentry; ++ mapcache_current->mapentry = mapentry_current; ++ } ++ } ++ clean_pwinfo(pwinfo); ++ } ++ } ++ ldap_msgfree(ldapreturn); ++ free(filter); ++ free(base); ++ } ++ else if (!strcmp((char *) mapcache_current->map, "master.passwd.byuid")) ++ { ++ /* XXX Add preferences for filter and basedn */ ++ base = safe_malloc(strlen(ldaprefs.basedn) + strlen("ou=Staffs,") + 1); ++ sprintf(base, "%s%s", "ou=Staffs,", ldaprefs.basedn); ++ filter = safe_strdup("(objectClass=posixAccount)"); ++ ++ if(ldap_search_s(ldaprefs.ldap, ++ base, ++ LDAP_SCOPE_ONELEVEL, ++ filter, ++ user_attributes, ++ 0, ++ &ldapreturn) != -1) ++ { ++ for (record = ldap_first_entry(ldaprefs.ldap, ldapreturn); record; record = ldap_next_entry(ldaprefs.ldap, record)) ++ { ++ pwinfo = safe_malloc(sizeof(struct pwinfo)); ++ rval = assemble_master_passwd(val, record, pwinfo); ++ if(rval == YP_TRUE); ++ { ++ if(check_unique(mapcache_current, pwinfo->uidnumber) == YP_NOKEY) ++ { ++ mapentry_current = safe_malloc(sizeof(struct mapentry)); ++ mapentry_current->key = safe_strdup(pwinfo->uidnumber); ++ mapentry_current->val = val->valdat_val; ++ mapentry_current->next = mapcache_current->mapentry; ++ mapcache_current->mapentry = mapentry_current; ++ } ++ } ++ clean_pwinfo(pwinfo); ++ } ++ } ++ ldap_msgfree(ldapreturn); ++ free(filter); ++ free(base); ++ } + else if (!strcmp((char *) mapcache_current->map, "group.byname")) + { + /* XXX Add preferences for filter and basedn */ diff --git a/net/yptransitd/files/patch-src_modules_ldap_ldap.c b/net/yptransitd/files/patch-src_modules_ldap_ldap.c new file mode 100644 index 000000000000..dcd48524fbcd --- /dev/null +++ b/net/yptransitd/files/patch-src_modules_ldap_ldap.c @@ -0,0 +1,13 @@ +--- src/modules/ldap/ldap.c.orig 2001-10-03 01:45:29 UTC ++++ src/modules/ldap/ldap.c +@@ -60,7 +60,10 @@ + #include "cache.h" + + #define CONFIG_FILE CONFDIR "/ldap.conf" ++/* + #define MAPS "auto.home auto_home amd.home passwd.byname passwd.byuid group.byname group.bygid" ++*/ ++#define MAPS "auto.home auto_home amd.home master.passwd.byname master.passwd.byuid passwd.byname passwd.byuid group.byname group.bygid" + + struct ldaprefs ldaprefs; + diff --git a/net/yptransitd/files/patch-src_modules_ldap_ldap.h b/net/yptransitd/files/patch-src_modules_ldap_ldap.h new file mode 100644 index 000000000000..3da35cd5e533 --- /dev/null +++ b/net/yptransitd/files/patch-src_modules_ldap_ldap.h @@ -0,0 +1,12 @@ +--- src/modules/ldap/ldap.h.orig 2001-10-03 00:59:53 UTC ++++ src/modules/ldap/ldap.h +@@ -42,6 +42,9 @@ + #define PWLINE "%s:%s:%s:%s:%s:%s:%s" + #define PWLINE_SIZE 6 + ++#define MPWLINE "%s:%s:%s:%s::0:0:%s:%s:%s" ++#define MPWLINE_SIZE 11 ++ + #define GWLINE "%s:%s:%s:%s" + #define GWLINE_SIZE 3 + |