svn commit: r202287 - head/lib/libc/gen
Ed Schouten
ed at FreeBSD.org
Thu Jan 14 15:20:09 UTC 2010
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);
More information about the svn-src-all
mailing list