From adf462fe0508e7229bcfabfd8ae7012aa57e5066 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Sun, 13 Nov 2005 11:06:48 +0000
Subject: [PATCH] Debian bug report 338681 by Jan Kunder: make curl better
 detect and report bad limit-rate units:
 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
 error if a bad unit is used.

---
 CHANGES       |  5 +++++
 RELEASE-NOTES |  3 ++-
 src/main.c    | 13 ++++++++++++-
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/CHANGES b/CHANGES
index 47c76f7143..aee71cdcf7 100644
--- a/CHANGES
+++ b/CHANGES
@@ -9,6 +9,11 @@
 
 
 Daniel (13 November 2005)
+- Debian bug report 338681 by Jan Kunder: make curl better detect and report
+  bad limit-rate units:
+  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338681 Now curl will return
+  error if a bad unit is used.
+
 - Thanks to this nice summary of poll() implementations:
   http://www.greenend.org.uk/rjk/2001/06/poll.html and further tests by Eugene
   Kotlyarov, we now know that cygwin's poll returns only POLLHUP on remote
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 0bfb637ac5..81da353bac 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -18,6 +18,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o curl outputs error on bad --limit-rate units
  o fixed libcurl's use of poll() on cygwin
  o the GnuTLS code didn't support client certificates
  o TFTP over IPv6 works
@@ -48,6 +49,6 @@ advice from friends like these:
 
  Dave Dribin, Bradford Bruce, Temprimus, Ofer, Dima Barsky, Amol Pattekar, Jaz
  Fresh, tommink[at]post.pl, Gisle Vanem, Nis Jorgensen, Vilmos Nebehaj,
- Dmitry Bartsevich, David Lang, Eugene Kotlyarov
+ Dmitry Bartsevich, David Lang, Eugene Kotlyarov, Jan Kunder
 
         Thanks! (and sorry if I forgot to mention someone)
diff --git a/src/main.c b/src/main.c
index 99edc61d79..c43241930b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1497,7 +1497,11 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
           /* We support G, M, K too */
           char *unit;
           curl_off_t value = curlx_strtoofft(nextarg, &unit, 0);
-          switch(nextarg[strlen(nextarg)-1]) {
+
+          if(strlen(unit) != 1)
+            unit="w"; /* unsupported */
+
+          switch(*unit) {
           case 'G':
           case 'g':
             value *= 1024*1024*1024;
@@ -1510,6 +1514,13 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
           case 'k':
             value *= 1024;
             break;
+          case 'b':
+          case 'B':
+            /* for plain bytes, leave as-is */
+            break;
+          default:
+            warnf(config, "unsupported rate unit. Use G, M, K or B!\n");
+            return PARAM_BAD_USE;
           }
           config->recvpersecond = value;
           config->sendpersecond = value;
-- 
GitLab