Mon Oct 15 15:29:11 2012 UTC ()
xlock -mode dclock would segfault on OSes with sizeof(time_t)>sizeof(long);
this includes NetBSD-6 on 32bit systems.
As a result, xlock -mode random (the default) would eventually unlock
the screen, without the user being aware of this (as she/he's can be
presumed to have left the monitor).
The reason was that some variables in dclock.c were declared long, but
contain essentially time_t values. In on case, a pointer to such a
variable was casted to (struct time_t *) and passed to localtime(),
and the resulting pointer is not checked for error before being used.
The variables have been changed to time_t and the typecast has been
removed.
(is)
diff -r1.99 -r1.100 pkgsrc/x11/xlockmore/Makefile
diff -r1.48 -r1.49 pkgsrc/x11/xlockmore/distinfo
diff -r1.15 -r1.16 pkgsrc/x11/xlockmore-lite/Makefile
diff -r0 -r1.1 pkgsrc/x11/xlockmore/patches/patch-modes_dclock.c
--- pkgsrc/x11/xlockmore/Makefile 2012/10/08 23:02:40 1.99
+++ pkgsrc/x11/xlockmore/Makefile 2012/10/15 15:29:09 1.100
| @@ -1,17 +1,17 @@ | | | @@ -1,17 +1,17 @@ |
1 | # $NetBSD: Makefile,v 1.99 2012/10/08 23:02:40 adam Exp $ | | 1 | # $NetBSD: Makefile,v 1.100 2012/10/15 15:29:09 is Exp $ |
2 | | | 2 | |
3 | .include "Makefile.common" | | 3 | .include "Makefile.common" |
4 | PKGREVISION= 5 | | 4 | PKGREVISION= 6 |
5 | | | 5 | |
6 | COMMENT= Like the XLock session-locker/screensaver, but with more | | 6 | COMMENT= Like the XLock session-locker/screensaver, but with more |
7 | | | 7 | |
8 | CONFIGURE_ARGS+= --with-opengl | | 8 | CONFIGURE_ARGS+= --with-opengl |
9 | CONFIGURE_ARGS+= --with-mesa | | 9 | CONFIGURE_ARGS+= --with-mesa |
10 | CONFIGURE_ARGS+= --without-ttf | | 10 | CONFIGURE_ARGS+= --without-ttf |
11 | XPM_ENV= no_xpm= xpm_includes=${BUILDLINK_PREFIX.libXpm}/include xpm_libraries=${BUILDLINK_PREFIX.libXpm}/lib | | 11 | XPM_ENV= no_xpm= xpm_includes=${BUILDLINK_PREFIX.libXpm}/include xpm_libraries=${BUILDLINK_PREFIX.libXpm}/lib |
12 | CONFIGURE_ENV+= ac_cv_path_xpm=${XPM_ENV:Q} | | 12 | CONFIGURE_ENV+= ac_cv_path_xpm=${XPM_ENV:Q} |
13 | OPENGL_ENV= no_opengl= ac_opengl_includes=${BUILDLINK_PREFIX.MesaLib}/include ac_opengl_libraries=${BUILDLINK_PREFIX.MesaLib}/lib | | 13 | OPENGL_ENV= no_opengl= ac_opengl_includes=${BUILDLINK_PREFIX.MesaLib}/include ac_opengl_libraries=${BUILDLINK_PREFIX.MesaLib}/lib |
14 | CONFIGURE_ENV+= ac_cv_path_opengl=${OPENGL_ENV:Q} | | 14 | CONFIGURE_ENV+= ac_cv_path_opengl=${OPENGL_ENV:Q} |
15 | MESA_ENV= no_mesa= ac_mesa_includes=${BUILDLINK_PREFIX.MesaLib}/include ac_mesa_libraries=${BUILDLINK_PREFIX.MesaLib}/lib | | 15 | MESA_ENV= no_mesa= ac_mesa_includes=${BUILDLINK_PREFIX.MesaLib}/include ac_mesa_libraries=${BUILDLINK_PREFIX.MesaLib}/lib |
16 | CONFIGURE_ENV+= ac_cv_path_mesa=${MESA_ENV:Q} | | 16 | CONFIGURE_ENV+= ac_cv_path_mesa=${MESA_ENV:Q} |
17 | #BUILDLINK_TRANSFORM+= l:MesaGL:GL | | 17 | #BUILDLINK_TRANSFORM+= l:MesaGL:GL |
--- pkgsrc/x11/xlockmore/distinfo 2012/02/13 11:46:13 1.48
+++ pkgsrc/x11/xlockmore/distinfo 2012/10/15 15:29:09 1.49
| @@ -1,10 +1,11 @@ | | | @@ -1,10 +1,11 @@ |
1 | $NetBSD: distinfo,v 1.48 2012/02/13 11:46:13 drochner Exp $ | | 1 | $NetBSD: distinfo,v 1.49 2012/10/15 15:29:09 is Exp $ |
2 | | | 2 | |
3 | SHA1 (xlockmore-5.38.tar.bz2) = 5a0fd27209dfc0966a1ec691f9ea4416587082bf | | 3 | SHA1 (xlockmore-5.38.tar.bz2) = 5a0fd27209dfc0966a1ec691f9ea4416587082bf |
4 | RMD160 (xlockmore-5.38.tar.bz2) = 227a2c13c8cf1ddb027138dc520874accf5c0f72 | | 4 | RMD160 (xlockmore-5.38.tar.bz2) = 227a2c13c8cf1ddb027138dc520874accf5c0f72 |
5 | Size (xlockmore-5.38.tar.bz2) = 1970750 bytes | | 5 | Size (xlockmore-5.38.tar.bz2) = 1970750 bytes |
6 | SHA1 (patch-aa) = 548646fe62b2d201328ca25a067e19998d58eb18 | | 6 | SHA1 (patch-aa) = 548646fe62b2d201328ca25a067e19998d58eb18 |
7 | SHA1 (patch-ab) = 48bd5ea9389f646df5ffe290f3230b028916f0d1 | | 7 | SHA1 (patch-ab) = 48bd5ea9389f646df5ffe290f3230b028916f0d1 |
8 | SHA1 (patch-ac) = e05f4956c0b4bd9b90c86e5a1174aab5e474115f | | 8 | SHA1 (patch-ac) = e05f4956c0b4bd9b90c86e5a1174aab5e474115f |
9 | SHA1 (patch-ad) = a76c7d9f17dec5cf2a3de6d0c3343c80cf53d314 | | 9 | SHA1 (patch-ad) = a76c7d9f17dec5cf2a3de6d0c3343c80cf53d314 |
10 | SHA1 (patch-ae) = b78d7d148c9a62dbdf72e05aeec8d22d10ab9cce | | 10 | SHA1 (patch-ae) = b78d7d148c9a62dbdf72e05aeec8d22d10ab9cce |
| | | 11 | SHA1 (patch-modes_dclock.c) = b5863dab4153cbe19b54c2838c85df1a84f09a14 |
--- pkgsrc/x11/xlockmore-lite/Makefile 2012/06/15 23:06:08 1.15
+++ pkgsrc/x11/xlockmore-lite/Makefile 2012/10/15 15:29:10 1.16
| @@ -1,19 +1,19 @@ | | | @@ -1,19 +1,19 @@ |
1 | # $NetBSD: Makefile,v 1.15 2012/06/15 23:06:08 dholland Exp $ | | 1 | # $NetBSD: Makefile,v 1.16 2012/10/15 15:29:10 is Exp $ |
2 | | | 2 | |
3 | .include "../../x11/xlockmore/Makefile.common" | | 3 | .include "../../x11/xlockmore/Makefile.common" |
4 | | | 4 | |
5 | PKGNAME= ${DISTNAME:S/-/-lite-/} | | 5 | PKGNAME= ${DISTNAME:S/-/-lite-/} |
6 | PKGREVISION= 1 | | 6 | PKGREVISION= 2 |
7 | COMMENT= "lite" version of xlockmore | | 7 | COMMENT= "lite" version of xlockmore |
8 | | | 8 | |
9 | CONFIGURE_ARGS+= --without-xpm | | 9 | CONFIGURE_ARGS+= --without-xpm |
10 | CONFIGURE_ARGS+= --without-gltt | | 10 | CONFIGURE_ARGS+= --without-gltt |
11 | CONFIGURE_ARGS+= --without-ttf | | 11 | CONFIGURE_ARGS+= --without-ttf |
12 | CONFIGURE_ARGS+= --without-freetype | | 12 | CONFIGURE_ARGS+= --without-freetype |
13 | CONFIGURE_ARGS+= --without-opengl | | 13 | CONFIGURE_ARGS+= --without-opengl |
14 | CONFIGURE_ARGS+= --without-magick | | 14 | CONFIGURE_ARGS+= --without-magick |
15 | CONFIGURE_ARGS+= --without-mesa | | 15 | CONFIGURE_ARGS+= --without-mesa |
16 | CONFIGURE_ARGS+= --without-rplay | | 16 | CONFIGURE_ARGS+= --without-rplay |
17 | CONFIGURE_ARGS+= --without-esound | | 17 | CONFIGURE_ARGS+= --without-esound |
18 | CONFIGURE_ARGS+= --without-gtk2 | | 18 | CONFIGURE_ARGS+= --without-gtk2 |
19 | CONFIGURE_ARGS+= --without-gtk | | 19 | CONFIGURE_ARGS+= --without-gtk |
$NetBSD: patch-modes_dclock.c,v 1.1 2012/10/15 15:29:10 is Exp $
--- modes/dclock.c.orig 2012-01-23 13:19:21.000000000 +0000
+++ modes/dclock.c
@@ -420,7 +420,7 @@ convert(double x, char *string)
}
static void
-dayhrminsec(long timeCount, int tzoffset, char *string)
+dayhrminsec(time_t timeCount, int tzoffset, char *string)
{
int days, hours, minutes, secs;
int bufsize, i;
@@ -675,7 +675,7 @@ drawDclock(ModeInfo * mi)
"%a %b %d %Y", localtime(&(dp->timeold)));
}
} else {
- long timeNow, timeLocal;
+ time_t timeNow, timeLocal;
timeNow = seconds();
timeLocal = timeNow + dp->tzoffset;
@@ -950,7 +950,7 @@ init_dclock(ModeInfo * mi)
{
Display *display = MI_DISPLAY(mi);
dclockstruct *dp;
- long timeNow, timeLocal;
+ time_t timeNow, timeLocal;
int i, j;
if (dclocks == NULL) {
@@ -1252,7 +1252,7 @@ defined(MODE_dclock_mayan)
dayhrminsec(MAYAN_TIME_START - timeLocal, dp->tzoffset, dp->strnew[1]);
dp->strpta[1] = dp->strnew[1];
} else {
- struct tm *t = localtime((const time_t *) &timeLocal);
+ struct tm *t = localtime(&timeLocal);
if (dp->time24)
(void) strftime(dp->strnew[0], STRSIZE, "%H:%M:%S", t);