Merge branch '1-12-logical-op' into 'dbus-1.12'
authorSimon McVittie <smcv@collabora.com>
Wed, 17 Apr 2019 15:19:01 +0000 (15:19 +0000)
committerSimon McVittie <smcv@collabora.com>
Wed, 17 Apr 2019 15:19:01 +0000 (15:19 +0000)
Backport -Wlogical-op fixes to 1.12.x

See merge request dbus/dbus!109

bus/desktop-file.c
dbus/dbus-sysdeps-unix.c
tools/dbus-send.c

index 4459858..fd4f0d3 100644 (file)
@@ -378,12 +378,16 @@ parse_comment_or_blank (BusDesktopFileParser *parser)
 static dbus_bool_t
 is_valid_section_name (const char *name)
 {
-  /* 5. Group names may contain all ASCII characters except for control characters and '[' and ']'. */
+  /* 5. Group names may contain all ASCII characters except for control characters and '[' and ']'.
+   *
+   * We don't use isprint() here because it's locale-dependent. ASCII
+   * characters <= 0x1f and 0x7f are control characters, and bytes with
+   * values >= 0x80 aren't ASCII. 0x20 is a space, which we must allow,
+   * not least because DBUS_SERVICE_SECTION contains one. */
 
   while (*name)
     {
-      if (!((*name >= 'A' && *name <= 'Z') || (*name >= 'a' || *name <= 'z') ||
-           *name == '\n' || *name == '\t'))
+      if (*name <= 0x1f || *name >= 0x7f || *name  == '[' || *name == ']')
        return FALSE;
       
       name++;
index 565e089..e8cd5b3 100644 (file)
@@ -4364,7 +4364,15 @@ _dbus_daemon_unpublish_session_bus_address (void)
 dbus_bool_t
 _dbus_get_is_errno_eagain_or_ewouldblock (int e)
 {
+  /* Avoid the -Wlogical-op GCC warning, which can be triggered when EAGAIN and
+   * EWOULDBLOCK are numerically equal, which is permitted as described by
+   * errno(3).
+   */
+#if EAGAIN == EWOULDBLOCK
+  return e == EAGAIN;
+#else
   return e == EAGAIN || e == EWOULDBLOCK;
+#endif
 }
 
 /**
index 6fb65fe..efeb76e 100644 (file)
@@ -289,13 +289,16 @@ main (int argc, char *argv[])
         }
       else if ((strstr (arg, "--bus=") == arg) || (strstr (arg, "--peer=") == arg) || (strstr (arg, "--address=") == arg))
         {
-          if (arg[2] == 'b') /* bus */
+          /* Check for peer first, to avoid the GCC -Wduplicated-branches
+           * warning.
+           */
+          if (arg[2] == 'p') /* peer */
             {
-              is_bus = TRUE;
+              is_bus = FALSE;
             }
-          else if (arg[2] == 'p') /* peer */
+          else if (arg[2] == 'b') /* bus */
             {
-              is_bus = FALSE;
+              is_bus = TRUE;
             }
           else /* address; keeping backwards compatibility */
             {