You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2016/11/27 22:19:39 UTC

[trafficserver] branch master updated: TS-5063: Fixes coverity warnings and cleans up the temp string

This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

The following commit(s) were added to refs/heads/master by this push:
       new  2e79b30   TS-5063: Fixes coverity warnings and cleans up the temp string
2e79b30 is described below

commit 2e79b300df22985cf21ef070295d0f1ea0a32b33
Author: Leif Hedstrom <zw...@apache.org>
AuthorDate: Wed Nov 23 14:23:00 2016 -0700

    TS-5063: Fixes coverity warnings and cleans up the temp string
    
    The Vec<char> seems overkill here, and makes things less nice when
    managing the intermediary strings. The new code has issues with being
    potentially used without initialization.
    
    CID 1365975, 1365974
---
 mgmt/LocalManager.cc | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/mgmt/LocalManager.cc b/mgmt/LocalManager.cc
index 75652a1..e10250d 100644
--- a/mgmt/LocalManager.cc
+++ b/mgmt/LocalManager.cc
@@ -858,6 +858,8 @@ LocalManager::processEventQueue()
  *   onetime_options: one time options that traffic_server should be started with (ie
  *                    these options do not persist across reboots)
  */
+static const size_t OPTIONS_SIZE = 16384; // Arbitrary max size for command line option string
+
 bool
 LocalManager::startProxy(const char *onetime_options)
 {
@@ -924,19 +926,18 @@ LocalManager::startProxy(const char *onetime_options)
     int i = 0;
     char *options[32], *last, *tok;
     bool open_ports_p = false;
+    char real_proxy_options[OPTIONS_SIZE];
 
-    Vec<char> real_proxy_options;
-
-    real_proxy_options.append(proxy_options, strlen(proxy_options));
+    ink_strlcpy(real_proxy_options, proxy_options, strlen(proxy_options));
     if (onetime_options && *onetime_options) {
-      real_proxy_options.append(" ", strlen(" "));
-      real_proxy_options.append(onetime_options, strlen(onetime_options));
+      ink_strlcat(real_proxy_options, " ", OPTIONS_SIZE);
+      ink_strlcat(real_proxy_options, onetime_options, OPTIONS_SIZE);
     }
 
     // Make sure we're starting the proxy in mgmt mode
-    if (strstr(proxy_options, MGMT_OPT) == 0 && strstr(onetime_options, MGMT_OPT) == 0) {
-      real_proxy_options.append(" ", strlen(" "));
-      real_proxy_options.append(MGMT_OPT, sizeof(MGMT_OPT) - 1);
+    if (strstr(real_proxy_options, MGMT_OPT) == 0) {
+      ink_strlcat(real_proxy_options, " ", OPTIONS_SIZE);
+      ink_strlcat(real_proxy_options, MGMT_OPT, OPTIONS_SIZE);
     }
 
     // Check if we need to pass down port/fd information to
@@ -950,29 +951,27 @@ LocalManager::startProxy(const char *onetime_options)
     if (open_ports_p) {
       char portbuf[128];
       bool need_comma_p = false;
-      real_proxy_options.append(" --httpport ", strlen(" --httpport "));
+
+      ink_strlcat(real_proxy_options, " --httpport ", OPTIONS_SIZE);
       for (int i = 0, limit = m_proxy_ports.length(); i < limit; ++i) {
         HttpProxyPort &p = m_proxy_ports[i];
         if (ts::NO_FD != p.m_fd) {
           if (need_comma_p) {
-            real_proxy_options.append(',');
+            ink_strlcat(real_proxy_options, ",", OPTIONS_SIZE);
           }
           need_comma_p = true;
           p.print(portbuf, sizeof(portbuf));
-          real_proxy_options.append((const char *)portbuf, strlen(portbuf));
+          ink_strlcat(real_proxy_options, (const char *)portbuf, OPTIONS_SIZE);
         }
       }
     }
 
-    // NUL-terminate for the benefit of strtok and printf.
-    real_proxy_options.add(0);
-
-    Debug("lm", "[LocalManager::startProxy] Launching %s with options '%s'", absolute_proxy_binary, &real_proxy_options[0]);
+    Debug("lm", "[LocalManager::startProxy] Launching %s with options '%s'", absolute_proxy_binary, real_proxy_options);
 
     ink_zero(options);
     options[0]   = absolute_proxy_binary;
     i            = 1;
-    tok          = strtok_r(&real_proxy_options[0], " ", &last);
+    tok          = strtok_r(real_proxy_options, " ", &last);
     options[i++] = tok;
     while (i < 32 && (tok = strtok_r(nullptr, " ", &last))) {
       Debug("lm", "opt %d = '%s'", i, tok);

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].

Re: [trafficserver] branch master updated: TS-5063: Fixes coverity warnings and cleans up the temp string

Posted by James Peach <jp...@apache.org>.
> On Nov 27, 2016, at 2:19 PM, zwoop@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> zwoop pushed a commit to branch master
> in repository https://git-dual.apache.org/repos/asf/trafficserver.git
> 
> The following commit(s) were added to refs/heads/master by this push:
>       new  2e79b30   TS-5063: Fixes coverity warnings and cleans up the temp string
> 2e79b30 is described below
> 
> commit 2e79b300df22985cf21ef070295d0f1ea0a32b33
> Author: Leif Hedstrom <zw...@apache.org>
> AuthorDate: Wed Nov 23 14:23:00 2016 -0700
> 
>    TS-5063: Fixes coverity warnings and cleans up the temp string
> 
>    The Vec<char> seems overkill here, and makes things less nice when
>    managing the intermediary strings. The new code has issues with being
>    potentially used without initialization.
> 
>    CID 1365975, 1365974
> ---
> mgmt/LocalManager.cc | 31 +++++++++++++++----------------
> 1 file changed, 15 insertions(+), 16 deletions(-)
> 
> diff --git a/mgmt/LocalManager.cc b/mgmt/LocalManager.cc
> index 75652a1..e10250d 100644
> --- a/mgmt/LocalManager.cc
> +++ b/mgmt/LocalManager.cc
> @@ -858,6 +858,8 @@ LocalManager::processEventQueue()
>  *   onetime_options: one time options that traffic_server should be started with (ie
>  *                    these options do not persist across reboots)
>  */
> +static const size_t OPTIONS_SIZE = 16384; // Arbitrary max size for command line option string
> +
> bool
> LocalManager::startProxy(const char *onetime_options)
> {
> @@ -924,19 +926,18 @@ LocalManager::startProxy(const char *onetime_options)
>     int i = 0;
>     char *options[32], *last, *tok;
>     bool open_ports_p = false;
> +    char real_proxy_options[OPTIONS_SIZE];
> 
> -    Vec<char> real_proxy_options;
> -
> -    real_proxy_options.append(proxy_options, strlen(proxy_options));
> +    ink_strlcpy(real_proxy_options, proxy_options, strlen(proxy_options));


ink_strlcpy(real_proxy_options, proxy, options, OPTIONS_SIZE);


Re: [trafficserver] branch master updated: TS-5063: Fixes coverity warnings and cleans up the temp string

Posted by James Peach <jp...@apache.org>.
> On Nov 27, 2016, at 2:19 PM, zwoop@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> zwoop pushed a commit to branch master
> in repository https://git-dual.apache.org/repos/asf/trafficserver.git
> 
> The following commit(s) were added to refs/heads/master by this push:
>       new  2e79b30   TS-5063: Fixes coverity warnings and cleans up the temp string
> 2e79b30 is described below
> 
> commit 2e79b300df22985cf21ef070295d0f1ea0a32b33
> Author: Leif Hedstrom <zw...@apache.org>
> AuthorDate: Wed Nov 23 14:23:00 2016 -0700
> 
>    TS-5063: Fixes coverity warnings and cleans up the temp string
> 
>    The Vec<char> seems overkill here, and makes things less nice when
>    managing the intermediary strings. The new code has issues with being
>    potentially used without initialization.
> 
>    CID 1365975, 1365974
> ---
> mgmt/LocalManager.cc | 31 +++++++++++++++----------------
> 1 file changed, 15 insertions(+), 16 deletions(-)
> 
> diff --git a/mgmt/LocalManager.cc b/mgmt/LocalManager.cc
> index 75652a1..e10250d 100644
> --- a/mgmt/LocalManager.cc
> +++ b/mgmt/LocalManager.cc
> @@ -858,6 +858,8 @@ LocalManager::processEventQueue()
>  *   onetime_options: one time options that traffic_server should be started with (ie
>  *                    these options do not persist across reboots)
>  */
> +static const size_t OPTIONS_SIZE = 16384; // Arbitrary max size for command line option string
> +
> bool
> LocalManager::startProxy(const char *onetime_options)
> {
> @@ -924,19 +926,18 @@ LocalManager::startProxy(const char *onetime_options)
>     int i = 0;
>     char *options[32], *last, *tok;
>     bool open_ports_p = false;
> +    char real_proxy_options[OPTIONS_SIZE];
> 
> -    Vec<char> real_proxy_options;
> -
> -    real_proxy_options.append(proxy_options, strlen(proxy_options));
> +    ink_strlcpy(real_proxy_options, proxy_options, strlen(proxy_options));


ink_strlcpy(real_proxy_options, proxy, options, OPTIONS_SIZE);