7150536 ftp (proftpd) service times out and goes to maintenance on T5220 and DEBUG kernel s11-sru
authorWilliam.Johnston <William.Johnston@Sun.Com>
Fri, 13 Jul 2012 15:21:02 -0700
branchs11-sru
changeset 2309 e2f60f60237d
parent 2308 c6a2a926ecea
child 2310 b6f711809a62
7150536 ftp (proftpd) service times out and goes to maintenance on T5220 and DEBUG kernel
components/proftpd/Makefile
components/proftpd/patches/mod_auth_unix_getgrp.patch
--- a/components/proftpd/Makefile	Wed Jul 11 15:59:30 2012 -0700
+++ b/components/proftpd/Makefile	Fri Jul 13 15:21:02 2012 -0700
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
 #
 
 include ../../make-rules/shared-macros.mk
@@ -29,9 +29,11 @@
 COMPONENT_VERSION=	1.3.3
 COMPONENT_SUBVERSION=	g
 HUMAN_VERSION=		$(COMPONENT_VERSION)$(COMPONENT_SUBVERSION)
+COMPONENT_PROJECT_URL=	http://www.proftpd.org/
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(HUMAN_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.gz
-COMPONENT_ARCHIVE_HASH=	sha1:11c2951526476d9f52307aa714851463aa76aa61
+COMPONENT_ARCHIVE_HASH=	\
+    sha256:1705192f8053978fdfc02d89ff500b385d7703555ac311d31c0d1c3accaaec76
 COMPONENT_ARCHIVE_URL=	ftp://ftp.proftpd.org/distrib/source/$(COMPONENT_ARCHIVE)
 
 # mod_gss subcomponent
@@ -39,7 +41,8 @@
 COMPONENT_VERSION_1=	$(COMPONENT_VERSION)
 COMPONENT_SRC_1=	$(COMPONENT_NAME_1)-$(COMPONENT_VERSION_1)
 COMPONENT_ARCHIVE_1=	$(COMPONENT_SRC_1).tar.gz
-COMPONENT_ARCHIVE_HASH_1= sha1:b17015a49e41ee643f1891940f9f3f8a7d77e522
+COMPONENT_ARCHIVE_HASH_1= \
+    sha256:24702cf0333720730cc269eb30529061365b1384fdce274bc3d46ccfc300934e
 COMPONENT_ARCHIVE_URL_1= http://downloads.sourceforge.net/gssmod/$(COMPONENT_ARCHIVE_1)
 
 include ../../make-rules/prep.mk
@@ -52,7 +55,7 @@
 # instead of 'e'.
 IPS_COMPONENT_VERSION=  $(COMPONENT_VERSION).0.7
 
-CONFIGURE_OPTIONS +=	CFLAGS="$(CFLAGS) -I/usr/include/kerberosv5 -DHAVE_KRB5_H=1 -DKRB5_DLLIMP="
+CONFIGURE_OPTIONS +=	CFLAGS="$(CFLAGS) -I/usr/include/kerberosv5 -DHAVE_KRB5_H=1 -DKRB5_DLLIMP= -DHAVE__GETGRPSBYMEMBER"
 # Force immediate binding because of chroot().
 CONFIGURE_OPTIONS +=	LDFLAGS="-z guidance=nolazyload -z nolazyload -lbsm"
 CONFIGURE_OPTIONS +=	install_user=$(LOGNAME)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/proftpd/patches/mod_auth_unix_getgrp.patch	Fri Jul 13 15:21:02 2012 -0700
@@ -0,0 +1,66 @@
+--- old/modules/mod_auth_unix.c	Fri May 25 08:31:35 2012
++++ new/modules/mod_auth_unix.c	Fri May 25 08:31:35 2012
+@@ -896,6 +896,13 @@
+ 
+   return gr ? mod_create_data(cmd, (void *) &gr->gr_gid) : PR_DECLINED(cmd);
+ }
++#ifdef HAVE__GETGRPSBYMEMBER
++  extern int _getgroupsbymember
++  (
++	const char* username, gid_t gid_array[],
++	int maxgids, int numgids
++  ); 
++#endif /* HAVE__GETGRPSBYMEMBER */
+ 
+ /* cmd->argv[0] = name
+  * cmd->argv[1] = (array_header **) group_ids
+@@ -1065,7 +1072,40 @@
+     }
+ 
+     free(ptr);
+-#else
++#else /* !HAVE_GETGRSET */
++#ifdef HAVE__GETGRPSBYMEMBER
++    gid_t group_ids[NGROUPS_MAX];
++    int ngroups = NGROUPS_MAX;
++    register unsigned int i;
++
++    pr_trace_msg("auth", 4,
++      "using _getgroupsbymember() to look up group membership");
++
++    memset(group_ids, 0, sizeof(group_ids));
++
++    group_ids[0]=pw->pw_gid;
++    ngroups=
++      _getgroupsbymember(pw->pw_name, group_ids, NGROUPS_MAX, 1);
++
++    if (ngroups < 0) {
++	pr_log_pri(PR_LOG_ERR,
++	    "_getgroupsbymember error: %s", strerror(errno));
++	return PR_DECLINED(cmd);
++    }
++
++    for (i = 0; i < ngroups; i++) {
++      gr = my_getgrgid(group_ids[i]);
++      if (gr) {
++        if (gids && pw->pw_gid != gr->gr_gid)
++          *((gid_t *) push_array(gids)) = gr->gr_gid;
++
++        if (groups && pw->pw_gid != gr->gr_gid) {
++          *((char **) push_array(groups)) = pstrdup(session.pool,
++            gr->gr_name);
++        }
++      }
++    }
++#else /* !HAVE__GETGRPSBYMEMBER */
+     char **gr_member = NULL;
+ 
+     /* This is where things get slow, expensive, and ugly.  Loop through
+@@ -1091,6 +1131,7 @@
+         }
+       }
+     }
++#endif /* !HAVE__GETGROUPSBYMEMBER */
+ #endif /* !HAVE_GETGRSET */
+   }
+