summaryrefslogtreecommitdiff
path: root/net-misc/wput/files/wput-fix-crash.patch
blob: 3d0efc9fd37fcf8948f663f2bd8acd9493842052 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
--- a/src/progress.c
+++ b/src/progress.c
@@ -181,7 +181,7 @@
   static char output[15];
   time_t secs = time (NULL);
   struct tm *ptm = localtime (&secs);
-  sprintf (output, "%02d:%02d:%02d", ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
+  snprintf (output, sizeof(output), "%02d:%02d:%02d", ptm->tm_hour, ptm->tm_min, ptm->tm_sec);
   return output;
 }
 
@@ -261,11 +261,11 @@
 		unit = 3, trate = trate / (1024 * 1024 * 1024);
 	
     if(trate < 100) 
-		sprintf(buf, "%s%.2f%s", (trate < 10) ? " " : "", trate, units[sp][unit]);
+		snprintf(buf, sizeof(buf), "%s%.2f%s", (trate < 10) ? " " : "", trate, units[sp][unit]);
 	else if(trate < 1000)
-		sprintf(buf, "%.1f%s", trate, units[sp][unit]);
+		snprintf(buf, sizeof(buf), "%.1f%s", trate, units[sp][unit]);
 	else
-		sprintf(buf, " %d%s", (int) trate, units[sp][unit]);
+		snprintf(buf, sizeof(buf), " %d%s", (int) trate, units[sp][unit]);
     return buf;
 }
 /* wrapper for our progress_bar */
@@ -303,13 +303,15 @@
 	remain = (int) (WINCONV (fsession->local_fsize - transfered) * ((double) time_diff * 1000)
 	    / (double) WINCONV tbytes / 1000);
     if(remain < 60)
-		sprintf(buf, "ETA    %02ds", remain);
+		snprintf(buf, sizeof(buf), "ETA    %02ds", remain);
 	else if(remain < 3600)
-		sprintf(buf, "ETA %2d:%02dm", remain / 60, remain % 60);
+		snprintf(buf, sizeof(buf), "ETA %2d:%02dm", remain / 60, remain % 60);
 	else if(remain < 3600 * 24)
-		sprintf(buf, "ETA %2d:%02dh", remain / 3600, (remain % 3600) / 60);
+		snprintf(buf, sizeof(buf), "ETA %2d:%02dh", remain / 3600, (remain % 3600) / 60);
+	else if(remain < 3600 * 24 * 100)
+		snprintf(buf, sizeof(buf), "ETA %2d:%02dd", remain / (3600 * 24), (remain % (24 * 3600)) / 3600);
 	else
-		sprintf(buf, "ETA %2d:%02dd", remain / (3600 * 24), (remain % (24 * 3600)) / 3600);
+		snprintf(buf, sizeof(buf), "ETA **:** ");
     /* NO, there won't be an eta of weeks or years! 14.4modem times are gone ;). god bless all gprs-users */
 	
 	return buf;