]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: logs: fix improper systematic use of quotes with a few tags
authorWilly Tarreau <w@1wt.eu>
Wed, 17 Jun 2015 17:58:02 +0000 (19:58 +0200)
committerWilly Tarreau <w@1wt.eu>
Wed, 17 Jun 2015 17:58:02 +0000 (19:58 +0200)
Dmitry Sivachenko reported the following build warning using Clang, which
is a real bug :

  src/log.c:1538:22: warning: use of logical '&&' with constant operand
        [-Wconstant-logical-operand]
                                  if (tmp->options && LOG_OPT_QUOTE)
                                                   ^  ~~~~~~~~~~~~~
The effect is that recent log tags related to HTTP method, path, uri,
query have a bug making them always use quotes.

This bug was introduced in 1.6-dev2 with commit 0ebc55f ("MEDIUM: logs:
Add HTTP request-line log format directives"), so no backport is needed.

src/log.c

index 2affac3881744be7bf51a94d6124e012b45d8724..f0db0a82913e39a6571f22e49f59ae52a291bca5 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -1535,7 +1535,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
                        case LOG_FMT_HTTP_PATH: // %HP
                                uri = txn->uri ? txn->uri : "<BADREQ>";
 
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                end = uri + strlen(uri);
@@ -1566,7 +1566,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
                                        goto out;
 
                                tmplog = ret;
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                last_isspace = 0;
@@ -1575,7 +1575,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
                        case LOG_FMT_HTTP_URI: // %HU
                                uri = txn->uri ? txn->uri : "<BADREQ>";
 
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                end = uri + strlen(uri);
@@ -1606,7 +1606,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
                                        goto out;
 
                                tmplog = ret;
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                last_isspace = 0;
@@ -1614,7 +1614,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
 
                        case LOG_FMT_HTTP_METHOD: // %HM
                                uri = txn->uri ? txn->uri : "<BADREQ>";
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                end = uri + strlen(uri);
@@ -1636,7 +1636,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
                                        goto out;
 
                                tmplog = ret;
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                last_isspace = 0;
@@ -1644,7 +1644,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
 
                        case LOG_FMT_HTTP_VERSION: // %HV
                                uri = txn->uri ? txn->uri : "<BADREQ>";
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                end = uri + strlen(uri);
@@ -1681,7 +1681,7 @@ int build_logline(struct stream *s, char *dst, size_t maxsize, struct list *list
                                        goto out;
 
                                tmplog = ret;
-                               if (tmp->options && LOG_OPT_QUOTE)
+                               if (tmp->options & LOG_OPT_QUOTE)
                                        LOGCHAR('"');
 
                                last_isspace = 0;