Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Jan 2010 15:20:09 +0000 (UTC)
From:      Ed Schouten <ed@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r202287 - head/lib/libc/gen
Message-ID:  <201001141520.o0EFK9L7068868@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ed
Date: Thu Jan 14 15:20:09 2010
New Revision: 202287
URL: http://svn.freebsd.org/changeset/base/202287

Log:
  Unbreak pututxline() on 32-bit architectures.
  
  I forgot to cast the size_t's back to off_t before negating them,
  causing all sorts of artifacts where the log files would grow to 2^32 -
  197 bytes.
  
  Reported by:	ume

Modified:
  head/lib/libc/gen/pututxline.c

Modified: head/lib/libc/gen/pututxline.c
==============================================================================
--- head/lib/libc/gen/pututxline.c	Thu Jan 14 15:07:18 2010	(r202286)
+++ head/lib/libc/gen/pututxline.c	Thu Jan 14 15:20:09 2010	(r202287)
@@ -87,7 +87,7 @@ utx_active_add(const struct futx *fu)
 		case DEAD_PROCESS:
 			/* Overwrite when ut_id matches. */
 			if (memcmp(fu->fu_id, fe.fu_id, sizeof fe.fu_id) == 0) {
-				fseeko(fp, -sizeof fe, SEEK_CUR);
+				fseeko(fp, -(off_t)sizeof fe, SEEK_CUR);
 				goto exact;
 			}
 			if (fe.fu_type != DEAD_PROCESS)
@@ -96,7 +96,7 @@ utx_active_add(const struct futx *fu)
 		default:
 			/* Allow us to overwrite unused records. */
 			if (partial == -1)
-				partial = ftello(fp) - sizeof fe;
+				partial = ftello(fp) - (off_t)sizeof fe;
 			break;
 		}
 	}
@@ -140,7 +140,7 @@ utx_active_remove(struct futx *fu)
 				fu->fu_tv = fe.fu_tv;
 
 			/* Terminate session. */
-			fseeko(fp, -sizeof fe, SEEK_CUR);
+			fseeko(fp, -(off_t)sizeof fe, SEEK_CUR);
 			fwrite(fu, sizeof *fu, 1, fp);
 			fclose(fp);
 			return (0);
@@ -181,7 +181,7 @@ utx_lastlogin_add(const struct futx *fu)
 			goto done;
 		
 		/* Found a previous lastlogin entry for this user. */
-		fseeko(fp, -sizeof fe, SEEK_CUR);
+		fseeko(fp, -(off_t)sizeof fe, SEEK_CUR);
 		break;
 	}
 	fwrite(fu, sizeof *fu, 1, fp);



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