]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Krzysztof Kowalczyk notes that 'etastr' can overflow if the times involved
authorJacob Nevins <jacobn@chiark.greenend.org.uk>
Tue, 27 Apr 2004 18:23:48 +0000 (18:23 +0000)
committerJacob Nevins <jacobn@chiark.greenend.org.uk>
Tue, 27 Apr 2004 18:23:48 +0000 (18:23 +0000)
start to get silly. Replace it with a dynamically allocated string instead.

[originally from svn r4153]

scp.c

diff --git a/scp.c b/scp.c
index 4334d9fff65d5607abd6f66a0b1016cfbeecd148..06bf089316e4471a4d17a1d325d12da65d44b275 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -470,7 +470,7 @@ static void print_stats(char *name, unsigned long size, unsigned long done,
 {
     float ratebs;
     unsigned long eta;
-    char etastr[10];
+    char *etastr;
     int pct;
     int len;
     int elap;
@@ -486,8 +486,8 @@ static void print_stats(char *name, unsigned long size, unsigned long done,
        eta = size - done;
     else
        eta = (unsigned long) ((size - done) / ratebs);
-    sprintf(etastr, "%02ld:%02ld:%02ld",
-           eta / 3600, (eta % 3600) / 60, eta % 60);
+    etastr = dupprintf("%02ld:%02ld:%02ld",
+                      eta / 3600, (eta % 3600) / 60, eta % 60);
 
     pct = (int) (100 * (done * 1.0 / size));
 
@@ -506,6 +506,8 @@ static void print_stats(char *name, unsigned long size, unsigned long done,
 
        fflush(stdout);
     }
+
+    free(etastr);
 }
 
 /*