* @{
*/
+/**
+ * Gets the number of unix fds attached to this message.
+ *
+ * @param message the message
+ * @returns the number of file descriptors
+ */
+unsigned int
+_dbus_message_get_n_unix_fds (DBusMessage *message)
+{
+#ifdef HAVE_UNIX_FD_PASSING
+ return message->n_unix_fds;
+#else
+ return 0;
+#endif
+}
+
#ifdef DBUS_ENABLE_EMBEDDED_TESTS
/**
* Reads arguments from a message iterator given a variable argument
if (fd == dirfd (d))
continue;
+ if (fd >= FD_SETSIZE)
+ {
+ _dbus_verbose ("FD %d unexpectedly large; cannot track whether "
+ "it is leaked\n", fd);
+ continue;
+ }
+
FD_SET (fd, &fds->set);
}
if (fd == dirfd (d))
continue;
+ if (fd >= FD_SETSIZE)
+ {
+ _dbus_verbose ("FD %d unexpectedly large; cannot track whether "
+ "it is leaked\n", fd);
+ continue;
+ }
+
if (FD_ISSET (fd, &fds->set))
continue;
/* Write the data one byte at a time */
loader = _dbus_message_loader_new ();
+ if (loader == NULL)
+ goto failed;
/* check some trivial loader functions */
_dbus_message_loader_ref (loader);
DBusString *buffer;
_dbus_message_loader_get_buffer (loader, &buffer, NULL, NULL);
- _dbus_string_append_byte (buffer,
- _dbus_string_get_byte (data, i));
+ if (!_dbus_string_append_byte (buffer,
+ _dbus_string_get_byte (data, i)))
+ goto failed;
_dbus_message_loader_return_buffer (loader, buffer);
}
/* Write the data all at once */
loader = _dbus_message_loader_new ();
+ if (loader == NULL)
+ goto failed;
{
DBusString *buffer;
_dbus_message_loader_get_buffer (loader, &buffer, NULL, NULL);
- _dbus_string_copy (data, 0, buffer,
- _dbus_string_get_length (buffer));
+ if (!_dbus_string_copy (data, 0, buffer,
+ _dbus_string_get_length (buffer)))
+ goto failed;
_dbus_message_loader_return_buffer (loader, buffer);
}
/* Write the data 2 bytes at a time */
loader = _dbus_message_loader_new ();
+ if (loader == NULL)
+ goto failed;
len = _dbus_string_get_length (data);
for (i = 0; i < len; i += 2)
DBusString *buffer;
_dbus_message_loader_get_buffer (loader, &buffer, NULL, NULL);
- _dbus_string_append_byte (buffer,
- _dbus_string_get_byte (data, i));
+ if (!_dbus_string_append_byte (buffer,
+ _dbus_string_get_byte (data, i)))
+ goto failed;
+
if ((i+1) < len)
- _dbus_string_append_byte (buffer,
- _dbus_string_get_byte (data, i+1));
+ {
+ if (!_dbus_string_append_byte (buffer,
+ _dbus_string_get_byte (data, i+1)))
+ goto failed;
+ }
+
_dbus_message_loader_return_buffer (loader, buffer);
}