rpms/nss_ldap/devel nss_ldap-259-parse2.patch, NONE, 1.1 nss_ldap.spec, 1.90, 1.91 nss_ldap-246-parse.patch, 1.1, NONE nss_ldap-250-mock64.patch, 1.1, NONE nss_ldap-256-resolver.patch, 1.1, NONE nss_ldap-257-slash.patch, 1.1, NONE

Nalin Somabhai Dahyabhai (nalin) fedora-extras-commits at redhat.com
Tue Feb 26 20:52:38 UTC 2008


Author: nalin

Update of /cvs/pkgs/rpms/nss_ldap/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv2781

Modified Files:
	nss_ldap.spec 
Added Files:
	nss_ldap-259-parse2.patch 
Removed Files:
	nss_ldap-246-parse.patch nss_ldap-250-mock64.patch 
	nss_ldap-256-resolver.patch nss_ldap-257-slash.patch 
Log Message:
- update to nss_ldap 259
- update to revised proposed patch for #248


nss_ldap-259-parse2.patch:

--- NEW FILE nss_ldap-259-parse2.patch ---
diff -up nss_ldap-259/configure.in nss_ldap-259/configure.in
--- nss_ldap-259/configure.in	2008-02-26 13:58:44.000000000 -0500
+++ nss_ldap-259/configure.in	2008-02-26 13:34:06.000000000 -0500
@@ -278,6 +278,11 @@ if test -z "$with_ldap_lib"; then
   with_ldap_lib=auto
 fi
 
+AC_CHECK_SIZEOF([unsigned int])
+AC_CHECK_SIZEOF([unsigned long])
+AC_CHECK_SIZEOF([uid_t],,[#include <pwd.h>])
+AC_CHECK_SIZEOF([gid_t],,[#include <grp.h>])
+
 AC_CHECK_LIB(dl, dlopen,[LIBS="-ldl $LIBS"],,$LIBS)
 dnl AC_CHECK_LIB(db, main,[LIBS="-ldb $LIBS"],,$LIBS)
 
diff -up nss_ldap-259/ldap-nss.h nss_ldap-259/ldap-nss.h
--- nss_ldap-259/ldap-nss.h	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/ldap-nss.h	2008-02-26 14:09:01.000000000 -0500
@@ -863,11 +863,11 @@ NSS_STATUS _nss_ldap_assign_userpassword
 
 NSS_STATUS _nss_ldap_oc_check (LDAPMessage * e, const char *oc);
 
+NSS_STATUS _nss_ldap_shadow_date(const char *val, long default_date,
+				 long *value);
 #if defined(HAVE_SHADOW_H)
-int _nss_ldap_shadow_date(const char *val);
 void _nss_ldap_shadow_handle_flag(struct spwd *sp);
 #else
-#define _nss_ldap_shadow_date(_v)		atol((_v))
 #define _nss_ldap_shadow_handle_flag(_sp)	do { /* nothing */ } while (0)
 #endif /* HAVE_SHADOW_H */
 
diff -up nss_ldap-259/ldap-nss.c nss_ldap-259/ldap-nss.c
--- nss_ldap-259/ldap-nss.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/ldap-nss.c	2008-02-26 14:09:14.000000000 -0500
@@ -3810,22 +3810,36 @@ _nss_ldap_oc_check (LDAPMessage * e, con
 }
 
 #ifdef HAVE_SHADOW_H
-int
-_nss_ldap_shadow_date (const char *val)
+NSS_STATUS
+_nss_ldap_shadow_date (const char *val, long default_date, long *value)
 {
   int date;
+  char *p;
+  long long ll;
 
+  if ((val == NULL) || (strlen(val) == 0))
+    {
+      *value = default_date;
+      return NSS_NOTFOUND;
+    }
+  ll = strtoll(val, &p, 10);
+  if ((p == NULL) || (p == val) || (*p != '\0'))
+    {
+      *value = default_date;
+      return NSS_NOTFOUND;
+    }
   if (__config->ldc_shadow_type == LS_AD_SHADOW)
     {
-      date = atoll (val) / 864000000000LL - 134774LL;
+      date = ll / 864000000000LL - 134774LL;
       date = (date > 99999) ? 99999 : date;
     }
   else
     {
-      date = atol (val);
+      date = ll;
     }
 
-  return date;
+  *value = date;
+  return NSS_SUCCESS;
 }
 
 void
diff -up nss_ldap-259/aix_authmeth.c nss_ldap-259/aix_authmeth.c
--- nss_ldap-259/aix_authmeth.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/aix_authmeth.c	2008-02-26 14:04:12.000000000 -0500
@@ -381,7 +381,12 @@ uess_get_pgrp (LDAPMessage * e, ldap_ues
 
   LA_INIT (a);
   LA_TYPE (a) = LA_TYPE_NUMBER;
-  LA_NUMBER (a) = atol(vals[0]);
+  stat = _nss_ldap_parse_long (vals[0], 0, &(LA_NUMBER(a)));
+  if (stat != NSS_SUCCESS)
+    {
+      ldap_value_free (vals);
+      return NSS_NOTFOUND;
+    }
 
   attrs[0] = ATM (LM_GROUP, cn);
   attrs[1] = NULL;
@@ -543,9 +548,12 @@ uess_get_int (LDAPMessage * e, ldap_uess
       return NSS_NOTFOUND;
     }
 
-  av->attr_un.au_int = atoi (vals[0]);
+  stat = _nss_ldap_parse_int(vals[0], 0, &av->attr_un.au_int);
   ldap_value_free (vals);
-  return NSS_SUCCESS;
+  if (stat == NSS_SUCCESS)
+    return NSS_SUCCESS;
+  else
+    return NSS_NOTFOUND;
 }
 
 /*
@@ -869,12 +877,15 @@ uess_get_pwuid(const char *user, uid_t *
       return NSS_NOTFOUND;
     }
 
-  *uid = atoi(vals[0]);
+  stat = _nss_ldap_parse_uid_t (vals[0], 0, uid);
 
   ldap_value_free (vals);
   ldap_msgfree (res);
 
-  return NSS_SUCCESS;
+  if (stat == 0)
+    return NSS_SUCCESS;
+  else
+    return NSS_NOTFOUND;
 }
 
 /*
diff -up nss_ldap-259/ldap-rpc.c nss_ldap-259/ldap-rpc.c
--- nss_ldap-259/ldap-rpc.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/ldap-rpc.c	2008-02-26 13:56:34.000000000 -0500
@@ -95,7 +95,10 @@ _nss_ldap_parse_rpc (LDAPMessage * e,
   if (stat != NSS_SUCCESS)
     return stat;
 
-  rpc->r_number = atol (number);
+  stat =
+    _nss_ldap_parse_int (number, 0, &rpc->r_number);
+  if (stat != NSS_SUCCESS)
+    return stat;
 
   stat =
     _nss_ldap_assign_attrvals (e, ATM (LM_RPC, cn), rpc->r_name,
diff -up nss_ldap-259/util.h nss_ldap-259/util.h
--- nss_ldap-259/util.h	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/util.h	2008-02-26 13:53:10.000000000 -0500
@@ -224,4 +224,16 @@ _nss_ldap_add_uri (ldap_config_t *result
 ldap_map_selector_t
 _nss_ldap_str2selector (const char *key);
 
+NSS_STATUS
+_nss_ldap_parse_long (const char *text, long default_value, long *value);
+NSS_STATUS
+_nss_ldap_parse_ulong (const char *text, unsigned long default_value,
+                       unsigned long *value);
+NSS_STATUS
+_nss_ldap_parse_int (const char *text, int default_value, int *value);
+NSS_STATUS
+_nss_ldap_parse_uid_t (const char *text, uid_t default_value, uid_t *value);
+NSS_STATUS
+_nss_ldap_parse_gid_t (const char *text, gid_t default_value, gid_t *value);
+
 #endif /* _LDAP_NSS_LDAP_UTIL_H */
diff -up nss_ldap-259/ldap-service.c nss_ldap-259/ldap-service.c
--- nss_ldap-259/ldap-service.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/ldap-service.c	2008-02-26 13:36:15.000000000 -0500
@@ -182,7 +182,10 @@ _nss_ldap_parse_serv (LDAPMessage * e,
       return stat;
     }
 
-  service->s_port = htons (atoi (port));
+  stat =
+    _nss_ldap_parse_int (port, 0, &service->s_port);
+  if (stat != NSS_SUCCESS)
+    return stat;
 
   return NSS_SUCCESS;
 }
diff -up nss_ldap-259/util.c nss_ldap-259/util.c
--- nss_ldap-259/util.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/util.c	2008-02-26 13:53:53.000000000 -0500
@@ -1634,3 +1634,111 @@ NSS_STATUS _nss_ldap_validateconfig (lda
   return NSS_SUCCESS;
 }
 
+/* Parse a text string into a long integer.  If we fail for any reason, store
+ * the passed-in default value and return an error. */
+NSS_STATUS
+_nss_ldap_parse_long (const char *text, long default_value, long *value)
+{
+  char *p;
+  long l;
+  if ((text == NULL) || (strlen(text) == 0)) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  l = strtol(text, &p, 10);
+  if ((p == NULL) || (p == text) || (*p != '\0')) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  *value = l;
+  return NSS_STATUS_SUCCESS;
+}
+
+NSS_STATUS
+_nss_ldap_parse_ulong (const char *text, unsigned long default_value,
+                       unsigned long *value)
+{
+  char *p;
+  unsigned long l;
+  if ((text == NULL) || (strlen(text) == 0)) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  l = strtoul(text, &p, 10);
+  if ((p == NULL) || (p == text) || (*p != '\0')) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  *value = l;
+  return NSS_STATUS_SUCCESS;
+}
+
+NSS_STATUS
+_nss_ldap_parse_int (const char *text, int default_value, int *value)
+{
+  char *p;
+  long l;
+  if ((text == NULL) || (strlen(text) == 0)) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  l = strtol(text, &p, 10);
+  if ((p == NULL) || (p == text) || (*p != '\0')) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  if ((l < INT_MIN) || (l > INT_MAX)) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  *value = l;
+  return NSS_STATUS_SUCCESS;
+}
+
+NSS_STATUS
+_nss_ldap_parse_uid_t (const char *text, uid_t default_value, uid_t *value)
+{
+  char *p;
+  unsigned long l;
+  if ((text == NULL) || (strlen(text) == 0)) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  l = strtoul(text, &p, 10);
+  if ((p == NULL) || (p == text) || (*p != '\0')) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+#if SIZEOF_UID_T == SIZEOF_UNSIGNED_INT
+  if (l > UINT_MAX) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+#endif
+  *value = l;
+  return NSS_STATUS_SUCCESS;
+}
+
+NSS_STATUS
+_nss_ldap_parse_gid_t (const char *text, gid_t default_value, gid_t *value)
+{
+  char *p;
+  unsigned long l;
+  if ((text == NULL) || (strlen(text) == 0)) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+  l = strtoul(text, &p, 10);
+  if ((p == NULL) || (p == text) || (*p != '\0')) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+#if SIZEOF_GID_T == SIZEOF_UNSIGNED_INT
+  if (l > UINT_MAX) {
+    *value = default_value;
+    return NSS_STATUS_NOTFOUND;
+  }
+#endif
+  *value = l;
+  return NSS_STATUS_SUCCESS;
+}
diff -up nss_ldap-259/ldap-pwd.c nss_ldap-259/ldap-pwd.c
--- nss_ldap-259/ldap-pwd.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/ldap-pwd.c	2008-02-26 13:51:27.000000000 -0500
@@ -122,7 +122,15 @@ _nss_ldap_parse_pw (LDAPMessage * e,
     _nss_ldap_assign_attrval (e, AT (uidNumber), &uid, &tmp, &tmplen);
   if (stat != NSS_SUCCESS)
     return stat;
-  pw->pw_uid = (*uid == '\0') ? UID_NOBODY : (uid_t) atol (uid);
+  if (*uid == '\0')
+    pw->pw_uid = UID_NOBODY;
+  else
+    {
+      stat =
+        _nss_ldap_parse_uid_t (uid, UID_NOBODY, &pw->pw_uid);
+      if (stat != NSS_SUCCESS)
+        return stat;
+    }
 
   tmp = tmpbuf;
   tmplen = sizeof (tmpbuf);
@@ -131,7 +139,15 @@ _nss_ldap_parse_pw (LDAPMessage * e,
                               &tmplen);
   if (stat != NSS_SUCCESS)
     return stat;
-  pw->pw_gid = (*gid == '\0') ? GID_NOBODY : (gid_t) atol (gid);
+  if (*gid == '\0')
+    pw->pw_gid = GID_NOBODY;
+  else
+    {
+      stat =
+        _nss_ldap_parse_gid_t (gid, GID_NOBODY, &pw->pw_gid);
+      if (stat != NSS_SUCCESS)
+        return stat;
+    }
 
   stat =
     _nss_ldap_assign_attrval (e, AT (gecos), &pw->pw_gecos, &buffer,
@@ -176,26 +193,42 @@ _nss_ldap_parse_pw (LDAPMessage * e,
  tmp = NULL;
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowMax), &tmp, &buffer, &buflen);
-  pw->pw_change = (stat == NSS_SUCCESS) ? atol(tmp) * (24*60*60) : 0;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, 0, &pw->pw_change);
+  else
+    pw->pw_change = 0;
 
   if (pw->pw_change > 0)
     {
+      long sp_change;
       tmp = NULL;
       stat =
         _nss_ldap_assign_attrval (e, AT (shadowLastChange), &tmp, &buffer,
 		    	          &buflen);
       if (stat == NSS_SUCCESS)
-        pw->pw_change += atol(tmp) * (24*60*60);
+	{
+	  stat = _nss_ldap_parse_long(tmp, 0, &sp_change);
+	  if (stat == NSS_SUCCESS)
+	    {
+	      pw->pw_change += sp_change;
+	      pw->pw_change *= (24 * 60 * 60);
+	    }
+	  else
+	    pw->pw_change = 0;
+	}
       else
 	pw->pw_change = 0;
     }
 #endif /* HAVE_PASSWD_PW_CHANGE */
 
 #ifdef HAVE_PASSWD_PW_EXPIRE
   tmp = NULL;
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowExpire), &tmp, &buffer, &buflen);
-  pw->pw_expire = (stat == NSS_SUCCESS) ? atol(tmp) * (24*60*60) : 0;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, 0, &pw->pw_expire);
+  else
+    pw->pw_expire = 0;
 #endif /* HAVE_PASSWD_PW_EXPIRE */
 
   return NSS_SUCCESS;
diff -up nss_ldap-259/ldap-spwd.c nss_ldap-259/ldap-spwd.c
--- nss_ldap-259/ldap-spwd.c	2007-10-29 09:30:12.000000000 -0400
+++ nss_ldap-259/ldap-spwd.c	2008-02-26 14:08:21.000000000 -0500
@@ -51,6 +51,7 @@ static char rcsId[] =
 
 #include "ldap-nss.h"
 #include "ldap-spwd.h"
+#include "util.h"
 
 #ifdef HAVE_PORT_AFTER_H
 #include <port_after.h>
@@ -86,34 +87,55 @@ _nss_ldap_parse_sp (LDAPMessage * e,
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowLastChange), &tmp, &buffer,
 			      &buflen);
-  sp->sp_lstchg = (stat == NSS_SUCCESS) ? _nss_ldap_shadow_date (tmp) : -1;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_shadow_date (tmp, -1, &sp->sp_lstchg);
+  else
+    sp->sp_lstchg = -1;
 
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowMax), &tmp, &buffer, &buflen);
-  sp->sp_max = (stat == NSS_SUCCESS) ? atol (tmp) : -1;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, -1, &sp->sp_max);
+  else
+    sp->sp_max = -1;
 
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowMin), &tmp, &buffer, &buflen);
-  sp->sp_min = (stat == NSS_SUCCESS) ? atol (tmp) : -1;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, -1, &sp->sp_min);
+  else
+    sp->sp_min = -1;
 
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowWarning), &tmp, &buffer,
 			      &buflen);
-  sp->sp_warn = (stat == NSS_SUCCESS) ? atol (tmp) : -1;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, -1, &sp->sp_warn);
+  else
+    sp->sp_warn = -1;
 
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowInactive), &tmp, &buffer,
 			      &buflen);
-  sp->sp_inact = (stat == NSS_SUCCESS) ? atol (tmp) : -1;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, -1, &sp->sp_inact);
+  else
+    sp->sp_inact = -1;
 
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowExpire), &tmp, &buffer,
 			      &buflen);
-  sp->sp_expire = (stat == NSS_SUCCESS) ? _nss_ldap_shadow_date (tmp) : -1;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_long (tmp, -1, &sp->sp_expire);
+  else
+    sp->sp_expire = -1;
 
   stat =
     _nss_ldap_assign_attrval (e, AT (shadowFlag), &tmp, &buffer, &buflen);
-  sp->sp_flag = (stat == NSS_SUCCESS) ? atol (tmp) : 0;
+  if (stat == NSS_SUCCESS)
+    _nss_ldap_parse_ulong (tmp, -1, &sp->sp_flag);
+  else
+    sp->sp_flag = -1;
 
   _nss_ldap_shadow_handle_flag(sp);
 


Index: nss_ldap.spec
===================================================================
RCS file: /cvs/pkgs/rpms/nss_ldap/devel/nss_ldap.spec,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- nss_ldap.spec	19 Feb 2008 15:55:52 -0000	1.90
+++ nss_ldap.spec	26 Feb 2008 20:52:05 -0000	1.91
@@ -1,8 +1,8 @@
 %define pam_ldap_version 184
 Summary: NSS library and PAM module for LDAP
 Name: nss_ldap
-Version: 257
-Release: 7%{?dist}
+Version: 259
+Release: 0%{?dist}
 Source0: ftp://ftp.padl.com/pub/nss_ldap-%{version}.tar.gz
 Source1: ftp://ftp.padl.com/pub/pam_ldap-%{pam_ldap_version}.tar.gz
 Source3: nss_ldap.versions
@@ -12,15 +12,12 @@
 Source7: dlopen.sh
 Patch0: pam_ldap-176-dnsconfig.patch
 Patch1: pam_ldap-180-local_users.patch
-Patch2: nss_ldap-246-parse.patch
+Patch2: nss_ldap-259-parse2.patch
 Patch3: pam_ldap-180-install-perms.patch
 Patch4: pam_ldap-180-bind.patch
-Patch5: nss_ldap-250-mock64.patch
 Patch6: nss_ldap-257-over-recursion.patch
 Patch7: pam_ldap-182-manpointer.patch
 Patch8: nss_ldap-254-soname.patch
-Patch9: nss_ldap-256-resolver.patch
-Patch10: nss_ldap-257-slash.patch
 Patch11: nss_ldap-257-initgroups-minimum_uid.patch
 Patch12: pam_ldap-184-referral-passwd.patch
 Patch13: pam_ldap-176-exop-modify.patch
@@ -64,12 +61,9 @@
 
 pushd nss_ldap-%{version}
 # Upstream #248
-%patch2 -p1 -b .parse
-%patch5 -p1 -b .mock64
+%patch2 -p1 -b .parse2
 #%patch6 -p1 -b .over-recursion
 %patch8 -p1 -b .soname
-%patch9 -p1 -b .resolver
-%patch10 -p1 -b .slash
 #%patch11 -p1 -b .initgroups-minimum_uid
 #%patch15 -p1 -b .mozldap
 autoreconf
@@ -197,6 +191,10 @@
 %doc pam_ldap-%{pam_ldap_version}/ldapns.schema
 
 %changelog
+* Tue Feb 26 2008 Nalin Dahyabhai <nalin at redhat.com> - 259-1
+- update to nss_ldap 259
+- update to revised proposed patch for #248
+
 * Tue Feb 19 2008 Fedora Release Engineering <rel-eng at fedoraproject.org> - 257-7
 - Autorebuild for GCC 4.3
 


--- nss_ldap-246-parse.patch DELETED ---


--- nss_ldap-250-mock64.patch DELETED ---


--- nss_ldap-256-resolver.patch DELETED ---


--- nss_ldap-257-slash.patch DELETED ---




More information about the fedora-extras-commits mailing list