6e8f608
diff -up shadow-4.1.4.3/src/faillog.c.underflow shadow-4.1.4.3/src/faillog.c
6e8f608
--- shadow-4.1.4.3/src/faillog.c.underflow	2011-02-13 12:58:16.000000000 -0500
6e8f608
+++ shadow-4.1.4.3/src/faillog.c	2011-05-30 17:48:55.000000000 -0400
59e397e
@@ -106,8 +106,8 @@ static void print_one (/*@null@*/const s
59e397e
 		return;
59e397e
 	}
59e397e
 
59e397e
-	offset = pw->pw_uid * sizeof (fl);
59e397e
-	if (offset <= (statbuf.st_size - sizeof (fl))) {
59e397e
+	offset = (off_t) pw->pw_uid * sizeof (fl);
59e397e
+	if (offset + sizeof (fl) <= statbuf.st_size) {
59e397e
 		/* fseeko errors are not really relevant for us. */
59e397e
 		int err = fseeko (fail, offset, SEEK_SET);
59e397e
 		assert (0 == err);
59e397e
@@ -206,8 +206,8 @@ static bool reset_one (uid_t uid)
59e397e
 	off_t offset;
59e397e
 	struct faillog fl;
59e397e
 
59e397e
-	offset = uid * sizeof (fl);
59e397e
-	if (offset <= (statbuf.st_size - sizeof (fl))) {
59e397e
+	offset = (off_t) uid * sizeof (fl);
59e397e
+	if (offset + sizeof (fl) <= statbuf.st_size) {
59e397e
 		/* fseeko errors are not really relevant for us. */
59e397e
 		int err = fseeko (fail, offset, SEEK_SET);
59e397e
 		assert (0 == err);
59e397e
@@ -294,7 +294,7 @@ static bool setmax_one (uid_t uid, int m
59e397e
 	struct faillog fl;
59e397e
 
59e397e
 	offset = (off_t) uid * sizeof (fl);
59e397e
-	if (offset <= (statbuf.st_size - sizeof (fl))) {
59e397e
+	if (offset + sizeof (fl) <= statbuf.st_size) {
59e397e
 		/* fseeko errors are not really relevant for us. */
59e397e
 		int err = fseeko (fail, offset, SEEK_SET);
59e397e
 		assert (0 == err);
59e397e
@@ -385,7 +385,7 @@ static bool set_locktime_one (uid_t uid,
59e397e
 	struct faillog fl;
59e397e
 
59e397e
 	offset = (off_t) uid * sizeof (fl);
59e397e
-	if (offset <= (statbuf.st_size - sizeof (fl))) {
59e397e
+	if (offset + sizeof (fl) <= statbuf.st_size) {
59e397e
 		/* fseeko errors are not really relevant for us. */
59e397e
 		int err = fseeko (fail, offset, SEEK_SET);
59e397e
 		assert (0 == err);
6e8f608
diff -up shadow-4.1.4.3/src/lastlog.c.underflow shadow-4.1.4.3/src/lastlog.c
6e8f608
--- shadow-4.1.4.3/src/lastlog.c.underflow	2011-05-31 03:52:25.000000000 -0400
6e8f608
+++ shadow-4.1.4.3/src/lastlog.c	2011-05-31 03:53:32.000000000 -0400
6e8f608
@@ -102,9 +102,8 @@ static void print_one (/*@null@*/const s
6e8f608
 	}
6e8f608
 
6e8f608
 
6e8f608
-	offset = pw->pw_uid * sizeof (ll);
6e8f608
-
6e8f608
-	if (offset <= (statbuf.st_size - sizeof (ll))) {
6e8f608
+	offset = (off_t) pw->pw_uid * sizeof (ll);
4d00d71
+	if (offset + sizeof (ll) <= statbuf.st_size) {
6e8f608
 		/* fseeko errors are not really relevant for us. */
6e8f608
 		int err = fseeko (lastlogfile, offset, SEEK_SET);
6e8f608
 		assert (0 == err);