From: Doug Torrance Date: Tue, 30 Oct 2012 20:49:42 +0000 (-0700) Subject: wmtime: Fixed Debian bug #639626. Applied a patch by Andrew Deason. X-Git-Tag: wmix-3.2~54 X-Git-Url: https://repo.or.cz/w/dockapps.git/commitdiff_plain/2295cacec4c6ffbe7d31868d0d016abfb6899011 wmtime: Fixed Debian bug #639626. Applied a patch by Andrew Deason. 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 --- diff --git a/wmtime/wmtime/wmtime.c b/wmtime/wmtime/wmtime.c index 2dfed0c..6f1a007 100644 --- a/wmtime/wmtime/wmtime.c +++ b/wmtime/wmtime/wmtime.c @@ -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;