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
This commit is contained in:
Doug Torrance 2012-10-30 13:49:42 -07:00 committed by Carlos R. Mafra
parent 168a691c80
commit 2295cacec4

View file

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