]> granicus.if.org Git - linux-pam/commitdiff
Relevant BUGIDs: 119554
authorAndrew G. Morgan <morgan@kernel.org>
Sat, 25 Nov 2000 00:12:33 +0000 (00:12 +0000)
committerAndrew G. Morgan <morgan@kernel.org>
Sat, 25 Nov 2000 00:12:33 +0000 (00:12 +0000)
Purpose of commit: cleanup

Commit summary:
---------------
The pam_limits module did not allow support for a changed number
of limits recognized by the kernel.
Bug identified and resolved by Adam J. Richter of Yggdrasil.

CHANGELOG
modules/pam_limits/pam_limits.c

index 7dbf8129d1819dcf44d4915203d6889835df41f9..2420907cb619227d2efcd2d1e35841b581430976 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -35,6 +35,8 @@ Where you should replace XXXXX with a bug-id.
 0.73: please submit patches for this section with actual code/doc
       patches!
 
+* fix for pam_limit module not dealing with all limits Adam J. Richter
+  (Bug 119554 - agmorgan)
 * comment fix describing fail_delay callback in _pam_types.h (Bug
   112646 - agmorgan)
 * "likeauth" fix for pam_unix and pam_pwdb which (Bug 113596 - agmorgan)
index 8ecb56823ce5b09627400962ece2c32a97193d84..a61cdf0f89ed2e222a8a52c6bb4a8bef1e33d21c 100644 (file)
@@ -21,9 +21,6 @@
 
 #include <stdio.h>
 #include <unistd.h>
-#ifndef __USE_POSIX2
-#define __USE_POSIX2
-#endif /* __USE_POSIX2 */
 #include <string.h>
 #include <ctype.h>
 #include <stdlib.h>
@@ -32,6 +29,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/resource.h>
+
 #include <utmp.h>
 #ifndef UT_USER  /* some systems have ut_name instead of ut_user */
 #define UT_USER ut_user
@@ -228,52 +226,48 @@ static int is_on_group(const char *user_name, const char *group_name)
     
 static int init_limits(void)
 {
+    int i;
     int retval = PAM_SUCCESS;
 
     D(("called."));
 
-    retval |= getrlimit(RLIMIT_CPU,     &limits[RLIMIT_CPU].limit);
+    for(i = 0; i < RLIM_NLIMITS; i++) 
+       retval |= getrlimit(i, &limits[i].limit);
+    
     limits[RLIMIT_CPU].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_CPU].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_FSIZE,   &limits[RLIMIT_FSIZE].limit);
     limits[RLIMIT_FSIZE].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_FSIZE].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_DATA,    &limits[RLIMIT_DATA].limit);
     limits[RLIMIT_DATA].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_DATA].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_STACK,   &limits[RLIMIT_STACK].limit);
     limits[RLIMIT_STACK].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_STACK].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_CORE,    &limits[RLIMIT_CORE].limit);
     limits[RLIMIT_CORE].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_CORE].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_RSS,     &limits[RLIMIT_RSS].limit);
     limits[RLIMIT_RSS].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_RSS].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_NPROC,   &limits[RLIMIT_NPROC].limit);
     limits[RLIMIT_NPROC].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_NPROC].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_NOFILE,  &limits[RLIMIT_NOFILE].limit);
     limits[RLIMIT_NOFILE].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_NOFILE].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_MEMLOCK, &limits[RLIMIT_MEMLOCK].limit);
     limits[RLIMIT_MEMLOCK].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_MEMLOCK].src_hard = LIMITS_DEF_NONE;
 
-    retval |= getrlimit(RLIMIT_AS,      &limits[RLIMIT_AS].limit);
     limits[RLIMIT_AS].src_soft = LIMITS_DEF_NONE;
     limits[RLIMIT_AS].src_hard = LIMITS_DEF_NONE;
+
     priority = 0;
     login_limit = -2;
     login_limit_def = LIMITS_DEF_NONE;
+
     return retval;
 }