wmtime: Fixed Debian bug #639626. Applied a patch by Andrew Deason.
authorDoug Torrance <profzoom@hotmail.com>
Tue, 30 Oct 2012 20:49:42 +0000 (30 13:49 -0700)
committerCarlos R. Mafra <crmafra@gmail.com>
Tue, 30 Oct 2012 21:50:49 +0000 (30 21:50 +0000)
Package: wmtime
Version: 1.0b2-10
Tags: patch

wmtime draws a small amount of garbage to the screen when -noseconds is
given, because DrawTime reads beyond the given string buffer. This
doesn't trigger all the time for me (I assume due to the nondeterminism
of reading uninitialized memory or something), but it pretty clearly
happens if I switch VTs.

The attached patch limits the amount of the formatted string we try to
read, so we don't read beyond the end of the string. Fixes it for me.

--
Andrew Deason
adeason@dson.org

wmtime/wmtime/wmtime.c

index 2dfed0c..6f1a007 100644 (file)
@@ -344,17 +344,20 @@ void DrawTime(int hr, int min, int sec) {
        char    time[time_size];
        char    *p = time;
        int             i,j,k=6;
+       int numfields;
 
        /* 7x13 */
 
        if (noseconds) {
                snprintf(time, time_size, "%02d:%02d ", hr, min);
+               numfields = 2;
        }
        else {
                snprintf(time, time_size, "%02d:%02d:%02d ", hr, min, sec);
+               numfields = 3;
        }
 
-       for (i=0; i < 3; i++) {
+       for (i=0; i < numfields; i++) {
                for (j=0; j<2; j++) {
                        copyXPMArea((*p-'0')*7 + 1, 84, 8, 13, k, 18);
                        k += 7;