Consistently include <config.h> in all C source files and never in header files.
[platform/upstream/dbus.git] / dbus / dbus-message.c
index 3373229..3b5941b 100644 (file)
@@ -22,6 +22,7 @@
  *
  */
 
+#include <config.h>
 #include "dbus-internals.h"
 #include "dbus-marshal-recursive.h"
 #include "dbus-marshal-validate.h"
@@ -825,7 +826,7 @@ _dbus_message_iter_get_args_valist (DBusMessageIter *iter,
               _dbus_type_reader_recurse (&real->u.reader, &array);
 
               _dbus_type_reader_read_fixed_multi (&array,
-                                                  ptr, n_elements_p);
+                                                  (void *) ptr, n_elements_p);
             }
           else if (spec_element_type == DBUS_TYPE_STRING ||
                    spec_element_type == DBUS_TYPE_SIGNATURE ||
@@ -866,7 +867,7 @@ _dbus_message_iter_get_args_valist (DBusMessageIter *iter,
                 {
                   const char *s;
                   _dbus_type_reader_read_basic (&array,
-                                                &s);
+                                                (void *) &s);
                   
                   str_array[i] = _dbus_strdup (s);
                   if (str_array[i] == NULL)
@@ -2907,7 +2908,7 @@ dbus_message_get_path (DBusMessage   *message)
   _dbus_header_get_field_basic (&message->header,
                                 DBUS_HEADER_FIELD_PATH,
                                 DBUS_TYPE_OBJECT_PATH,
-                                &v);
+                                (void *) &v);
   return v;
 }
 
@@ -3038,7 +3039,7 @@ dbus_message_get_interface (DBusMessage *message)
   _dbus_header_get_field_basic (&message->header,
                                 DBUS_HEADER_FIELD_INTERFACE,
                                 DBUS_TYPE_STRING,
-                                &v);
+                                (void *) &v);
   return v;
 }
 
@@ -3124,7 +3125,7 @@ dbus_message_get_member (DBusMessage *message)
   _dbus_header_get_field_basic (&message->header,
                                 DBUS_HEADER_FIELD_MEMBER,
                                 DBUS_TYPE_STRING,
-                                &v);
+                                (void *) &v);
   return v;
 }
 
@@ -3208,7 +3209,7 @@ dbus_message_get_error_name (DBusMessage *message)
   _dbus_header_get_field_basic (&message->header,
                                 DBUS_HEADER_FIELD_ERROR_NAME,
                                 DBUS_TYPE_STRING,
-                                &v);
+                                (void *) &v);
   return v;
 }
 
@@ -3261,7 +3262,7 @@ dbus_message_get_destination (DBusMessage *message)
   _dbus_header_get_field_basic (&message->header,
                                 DBUS_HEADER_FIELD_DESTINATION,
                                 DBUS_TYPE_STRING,
-                                &v);
+                                (void *) &v);
   return v;
 }
 
@@ -3321,7 +3322,7 @@ dbus_message_get_sender (DBusMessage *message)
   _dbus_header_get_field_basic (&message->header,
                                 DBUS_HEADER_FIELD_SENDER,
                                 DBUS_TYPE_STRING,
-                                &v);
+                                (void *) &v);
   return v;
 }
 
@@ -3628,9 +3629,13 @@ dbus_set_error_from_message (DBusError   *error,
 dbus_bool_t
 dbus_message_contains_unix_fds(DBusMessage *message)
 {
+#ifdef HAVE_UNIX_FD_PASSING
   _dbus_assert(message);
 
   return message->n_unix_fds > 0;
+#else
+  return FALSE;
+#endif
 }
 
 /** @} */
@@ -3835,6 +3840,7 @@ _dbus_message_loader_get_unix_fds(DBusMessageLoader  *loader,
   return TRUE;
 #else
   _dbus_assert_not_reached("Platform doesn't support unix fd passing");
+  return FALSE;
 #endif
 }
 
@@ -4226,6 +4232,21 @@ _dbus_message_loader_get_is_corrupted (DBusMessageLoader *loader)
 }
 
 /**
+ * Checks what kind of bad data confused the loader.
+ *
+ * @param loader the loader
+ * @returns why the loader is hosed, or DBUS_VALID if it isn't.
+ */
+DBusValidity
+_dbus_message_loader_get_corruption_reason (DBusMessageLoader *loader)
+{
+  _dbus_assert ((loader->corrupted && loader->corruption_reason != DBUS_VALID) ||
+                (!loader->corrupted && loader->corruption_reason == DBUS_VALID));
+
+  return loader->corruption_reason;
+}
+
+/**
  * Sets the maximum size message we allow.
  *
  * @param loader the loader
@@ -4563,7 +4584,8 @@ dbus_message_demarshal (const char *str,
   return msg;
 
  fail_corrupt:
-  dbus_set_error (error, DBUS_ERROR_INVALID_ARGS, "Message is corrupted");
+  dbus_set_error (error, DBUS_ERROR_INVALID_ARGS, "Message is corrupted (%s)",
+                  _dbus_validity_to_error_message (loader->corruption_reason));
   _dbus_message_loader_unref (loader);
   return NULL;