Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 1 Sep 2020 08:17:29 +0000 (UTC)
From:      Alexey Dokuchaev <danfe@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r547244 - in head/net/yptransitd: . files
Message-ID:  <202009010817.0818HTGE034295@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: danfe
Date: Tue Sep  1 08:17:28 2020
New Revision: 547244
URL: https://svnweb.freebsd.org/changeset/ports/547244

Log:
  Split the patch in the "context diff" format added pack in r130923 which
  no longer applies by modern FreeBSD patch(1).  Patch was applied on the
  FreeBSD 8.4 and new patches generated with ``make makepatch''.  Repocopy
  was waived since three-way split would make the diff unnecessarily noisy
  and there's not much history to preserve anyways as the patch had not
  been modified since its inception.  While here, unbreak the build against
  modern compilers (Clang 11, GCC 10) by forcing the `-fcommon' mode.
  
  Reported by:	pkg-fallout

Added:
  head/net/yptransitd/files/patch-src_modules_ldap_cache.c   (contents, props changed)
  head/net/yptransitd/files/patch-src_modules_ldap_ldap.c   (contents, props changed)
  head/net/yptransitd/files/patch-src_modules_ldap_ldap.h   (contents, props changed)
Deleted:
  head/net/yptransitd/files/patch-freebsd-master-passwd
Modified:
  head/net/yptransitd/Makefile

Modified: head/net/yptransitd/Makefile
==============================================================================
--- head/net/yptransitd/Makefile	Tue Sep  1 08:12:09 2020	(r547243)
+++ head/net/yptransitd/Makefile	Tue Sep  1 08:17:28 2020	(r547244)
@@ -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,' \

Added: head/net/yptransitd/files/patch-src_modules_ldap_cache.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yptransitd/files/patch-src_modules_ldap_cache.c	Tue Sep  1 08:17:28 2020	(r547244)
@@ -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 */

Added: head/net/yptransitd/files/patch-src_modules_ldap_ldap.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yptransitd/files/patch-src_modules_ldap_ldap.c	Tue Sep  1 08:17:28 2020	(r547244)
@@ -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;
+ 

Added: head/net/yptransitd/files/patch-src_modules_ldap_ldap.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/yptransitd/files/patch-src_modules_ldap_ldap.h	Tue Sep  1 08:17:28 2020	(r547244)
@@ -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
+ 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202009010817.0818HTGE034295>