D-Bus 1.16.0
Macros | Functions

DBusString data structure for safer string handling. More...

Macros

#define DBUS_STRING_COPY_PREAMBLE(source, start, dest, insert_at)
 Checks assertions for two strings we're copying a segment between, and declares real_source/real_dest variables.
 
#define UTF8_COMPUTE(Char, Mask, Len)
 computes length and mask of a unicode character
 
#define UTF8_LENGTH(Char)
 computes length of a unicode character in UTF-8
 
#define UTF8_GET(Result, Chars, Count, Mask, Len)
 Gets a UTF-8 value.
 
#define UNICODE_VALID(Char)
 Check whether a Unicode (5.2) char is in a valid range.
 

Functions

dbus_bool_t _dbus_string_ends_with_c_str (const DBusString *a, const char *c_str)
 Returns whether a string ends with the given suffix.
 
dbus_bool_t _dbus_string_find_byte_backward (const DBusString *str, int start, unsigned char byte, int *found)
 Find the given byte scanning backward from the given start.
 
dbus_bool_t _dbus_string_init_preallocated (DBusString *str, int allocate_size)
 Initializes a string that can be up to the given allocation size before it has to realloc.
 
dbus_bool_t _dbus_string_init (DBusString *str)
 Initializes a string.
 
void _dbus_string_init_const (DBusString *str, const char *value)
 Initializes a constant string.
 
void _dbus_string_init_const_len (DBusString *str, const char *value, int len)
 Initializes a constant string with a length.
 
dbus_bool_t _dbus_string_init_from_string (DBusString *str, const DBusString *from)
 Initializes a string from another string.
 
void _dbus_string_free (DBusString *str)
 Frees a string created by _dbus_string_init(), and fills it with the same contents as _DBUS_STRING_INIT_INVALID.
 
dbus_bool_t _dbus_string_compact (DBusString *str, int max_waste)
 Compacts the string to avoid wasted memory.
 
int _dbus_string_get_allocated_size (const DBusString *str)
 Returns the allocated size of the string.
 
char * _dbus_string_get_data_len (DBusString *str, int start, int len)
 Gets a sub-portion of the raw character buffer from the string.
 
dbus_bool_t _dbus_string_insert_bytes (DBusString *str, int i, int n_bytes, unsigned char byte)
 Inserts a number of bytes of a given value at the given position.
 
dbus_bool_t _dbus_string_insert_byte (DBusString *str, int i, unsigned char byte)
 Inserts a single byte at the given position.
 
dbus_bool_t _dbus_string_steal_data (DBusString *str, char **data_return)
 Like _dbus_string_get_data(), but removes the gotten data from the original string.
 
dbus_bool_t _dbus_string_copy_data (const DBusString *str, char **data_return)
 Copies the data from the string into a char*.
 
void _dbus_string_copy_to_buffer (const DBusString *str, char *buffer, int avail_len)
 Copies the contents of a DBusString into a different buffer.
 
void _dbus_string_copy_to_buffer_with_nul (const DBusString *str, char *buffer, int avail_len)
 Copies the contents of a DBusString into a different buffer.
 
dbus_bool_t _dbus_string_lengthen (DBusString *str, int additional_length)
 Makes a string longer by the given number of bytes.
 
void _dbus_string_shorten (DBusString *str, int length_to_remove)
 Makes a string shorter by the given number of bytes.
 
dbus_bool_t _dbus_string_set_length (DBusString *str, int length)
 Sets the length of a string.
 
dbus_bool_t _dbus_string_align_length (DBusString *str, int alignment)
 Align the length of a string to a specific alignment (typically 4 or 8) by appending nul bytes to the string.
 
dbus_bool_t _dbus_string_alloc_space (DBusString *str, int extra_bytes)
 Preallocate extra_bytes such that a future lengthening of the string by extra_bytes is guaranteed to succeed without an out of memory error.
 
dbus_bool_t _dbus_string_append (DBusString *str, const char *buffer)
 Appends a nul-terminated C-style string to a DBusString.
 
dbus_bool_t _dbus_string_insert_2_aligned (DBusString *str, int insert_at, const unsigned char octets[2])
 Inserts 2 bytes aligned on a 2 byte boundary with any alignment padding initialized to 0.
 
dbus_bool_t _dbus_string_insert_4_aligned (DBusString *str, int insert_at, const unsigned char octets[4])
 Inserts 4 bytes aligned on a 4 byte boundary with any alignment padding initialized to 0.
 
dbus_bool_t _dbus_string_insert_8_aligned (DBusString *str, int insert_at, const unsigned char octets[8])
 Inserts 8 bytes aligned on an 8 byte boundary with any alignment padding initialized to 0.
 
dbus_bool_t _dbus_string_insert_alignment (DBusString *str, int *insert_at, int alignment)
 Inserts padding at *insert_at such to align it to the given boundary.
 
dbus_bool_t _dbus_string_append_printf_valist (DBusString *str, const char *format, va_list args)
 Appends a printf-style formatted string to the DBusString.
 
dbus_bool_t _dbus_string_append_printf (DBusString *str, const char *format,...)
 Appends a printf-style formatted string to the DBusString.
 
dbus_bool_t _dbus_string_append_len (DBusString *str, const char *buffer, int len)
 Appends block of bytes with the given length to a DBusString.
 
dbus_bool_t _dbus_string_append_byte (DBusString *str, unsigned char byte)
 Appends a single byte to the string, returning FALSE if not enough memory.
 
dbus_bool_t _dbus_string_append_strings (DBusString *str, char **strings, char separator)
 Append vector with strings connected by separator.
 
void _dbus_string_delete (DBusString *str, int start, int len)
 Deletes a segment of a DBusString with length len starting at start.
 
dbus_bool_t _dbus_string_move (DBusString *source, int start, DBusString *dest, int insert_at)
 Moves the end of one string into another string.
 
dbus_bool_t _dbus_string_copy (const DBusString *source, int start, DBusString *dest, int insert_at)
 Like _dbus_string_move(), but does not delete the section of the source string that's copied to the dest string.
 
dbus_bool_t _dbus_string_move_len (DBusString *source, int start, int len, DBusString *dest, int insert_at)
 Like _dbus_string_move(), but can move a segment from the middle of the source string.
 
dbus_bool_t _dbus_string_copy_len (const DBusString *source, int start, int len, DBusString *dest, int insert_at)
 Like _dbus_string_copy(), but can copy a segment from the middle of the source string.
 
dbus_bool_t _dbus_string_replace_len (const DBusString *source, int start, int len, DBusString *dest, int replace_at, int replace_len)
 Replaces a segment of dest string with a segment of source string.
 
dbus_bool_t _dbus_string_split_on_byte (DBusString *source, unsigned char byte, DBusString *tail)
 Looks for the first occurance of a byte, deletes that byte, and moves everything after the byte to the beginning of a separate string.
 
dbus_bool_t _dbus_string_find (const DBusString *str, int start, const char *substr, int *found)
 Finds the given substring in the string, returning TRUE and filling in the byte index where the substring was found, if it was found.
 
dbus_bool_t _dbus_string_find_eol (const DBusString *str, int start, int *found, int *found_len)
 Finds end of line ("\r\n" or "\n") in the string, returning TRUE and filling in the byte index where the eol string was found, if it was found.
 
dbus_bool_t _dbus_string_find_to (const DBusString *str, int start, int end, const char *substr, int *found)
 Finds the given substring in the string, up to a certain position, returning TRUE and filling in the byte index where the substring was found, if it was found.
 
dbus_bool_t _dbus_string_find_blank (const DBusString *str, int start, int *found)
 Finds a blank (space or tab) in the string.
 
void _dbus_string_skip_blank (const DBusString *str, int start, int *end)
 Skips blanks from start, storing the first non-blank in *end (blank is space or tab).
 
void _dbus_string_skip_white (const DBusString *str, int start, int *end)
 Skips whitespace from start, storing the first non-whitespace in *end.
 
void _dbus_string_skip_white_reverse (const DBusString *str, int end, int *start)
 Skips whitespace from end, storing the start index of the trailing whitespace in *start.
 
dbus_bool_t _dbus_string_pop_line (DBusString *source, DBusString *dest)
 Assigns a newline-terminated or \r\n-terminated line from the front of the string to the given dest string.
 
void _dbus_string_chop_white (DBusString *str)
 Deletes leading and trailing whitespace.
 
dbus_bool_t _dbus_string_equal (const DBusString *a, const DBusString *b)
 Tests two DBusString for equality.
 
dbus_bool_t _dbus_string_equal_len (const DBusString *a, const DBusString *b, int len)
 Tests two DBusString for equality up to the given length.
 
dbus_bool_t _dbus_string_equal_substring (const DBusString *a, int a_start, int a_len, const DBusString *b, int b_start)
 Tests two sub-parts of two DBusString for equality.
 
dbus_bool_t _dbus_string_equal_c_str (const DBusString *a, const char *c_str)
 Checks whether a string is equal to a C string.
 
dbus_bool_t _dbus_string_starts_with_c_str (const DBusString *a, const char *c_str)
 Checks whether a string starts with the given C string.
 
dbus_bool_t _dbus_string_starts_with_words_c_str (const DBusString *a, const char *c_str, char word_separator)
 Checks whether a string starts with the given C string, after which it ends or is separated from the rest by a given separator character.
 
dbus_bool_t _dbus_string_append_byte_as_hex (DBusString *str, unsigned char byte)
 Appends a two-character hex digit to a string, where the hex digit has the value of the given byte.
 
dbus_bool_t _dbus_string_hex_encode (const DBusString *source, int start, DBusString *dest, int insert_at)
 Encodes a string in hex, the way MD5 and SHA-1 are usually encoded.
 
dbus_bool_t _dbus_string_hex_decode (const DBusString *source, int start, int *end_return, DBusString *dest, int insert_at)
 Decodes a string from hex encoding.
 
dbus_bool_t _dbus_string_validate_ascii (const DBusString *str, int start, int len)
 Checks that the given range of the string is valid ASCII with no nul bytes.
 
void _dbus_string_tolower_ascii (const DBusString *str, int start, int len)
 Converts the given range of the string to lower case.
 
void _dbus_string_toupper_ascii (const DBusString *str, int start, int len)
 Converts the given range of the string to upper case.
 
dbus_bool_t _dbus_string_validate_utf8 (const DBusString *str, int start, int len)
 Checks that the given range of the string is valid UTF-8.
 
dbus_bool_t _dbus_string_validate_nul (const DBusString *str, int start, int len)
 Checks that the given range of the string is all nul bytes.
 
void _dbus_string_zero (DBusString *str)
 Clears all allocated bytes in the string to zero.
 
dbus_bool_t _dbus_string_get_dirname (const DBusString *filename, DBusString *dirname)
 Get the directory name from a complete filename.
 
dbus_bool_t _dbus_unix_user_is_process_owner (dbus_uid_t uid)
 Checks to see if the UNIX user ID matches the UID of the process.
 
dbus_bool_t _dbus_windows_user_is_process_owner (const char *windows_sid)
 Checks to see if the Windows user SID matches the owner of the process.
 
dbus_bool_t _dbus_unix_user_is_at_console (dbus_uid_t uid, DBusError *error)
 Checks to see if the UNIX user ID is at the console.
 
dbus_bool_t _dbus_parse_unix_group_from_config (const DBusString *groupname, dbus_gid_t *gid_p)
 Parse a UNIX group from the bus config file.
 
dbus_bool_t _dbus_parse_unix_user_from_config (const DBusString *username, dbus_uid_t *uid_p)
 Parse a UNIX user from the bus config file.
 
dbus_bool_t _dbus_unix_groups_from_uid (dbus_uid_t uid, dbus_gid_t **group_ids, int *n_group_ids, DBusError *error)
 Gets all groups corresponding to the given UNIX user ID.
 
dbus_bool_t _dbus_string_parse_int (const DBusString *str, int start, long *value_return, int *end_return)
 Parses an integer contained in a DBusString.
 
dbus_bool_t _dbus_string_parse_uint (const DBusString *str, int start, unsigned long *value_return, int *end_return)
 Parses an unsigned integer contained in a DBusString.
 
dbus_bool_t _dbus_string_parse_int64 (const DBusString *str, int start, dbus_int64_t *value_return, int *end_return)
 Parses a dbus_int64_t integer contained in a DBusString.
 

Detailed Description

DBusString data structure for safer string handling.

Types and functions related to DBusString. DBusString is intended to be a string class that makes it hard to mess up security issues (and just in general harder to write buggy code). It should be used (or extended and then used) rather than the libc stuff in string.h. The string class is a bit inconvenient at spots because it handles out-of-memory failures and tries to be extra-robust.

A DBusString has a maximum length set at initialization time; this can be used to ensure that a buffer doesn't get too big. The _dbus_string_lengthen() method checks for overflow, and for max length being exceeded.

Try to avoid conversion to a plain C string, i.e. add methods on the string object instead, only convert to C string when passing things out to the public API. In particular, no sprintf, strcpy, strcat, any of that should be used. The GString feature of accepting negative numbers for "length of string" is also absent, because it could keep us from detecting bogus huge lengths. i.e. if we passed in some bogus huge length it would be taken to mean "current length of string" instead of "broken crack"

Macro Definition Documentation

◆ DBUS_STRING_COPY_PREAMBLE

#define DBUS_STRING_COPY_PREAMBLE (   source,
  start,
  dest,
  insert_at 
)
Value:
DBusRealString *real_source = (DBusRealString*) source; \
DBusRealString *real_dest = (DBusRealString*) dest; \
_dbus_assert ((source) != (dest)); \
DBUS_GENERIC_STRING_PREAMBLE (real_source); \
DBUS_GENERIC_STRING_PREAMBLE (real_dest); \
_dbus_assert (!real_dest->constant); \
_dbus_assert (!real_dest->locked); \
_dbus_assert ((start) >= 0); \
_dbus_assert ((start) <= real_source->len); \
_dbus_assert ((insert_at) >= 0); \
_dbus_assert ((insert_at) <= real_dest->len)
Internals of DBusString.
unsigned int constant
String data is not owned by DBusString.
unsigned int locked
DBusString has been locked and can't be changed.
int len
Length without nul.

Checks assertions for two strings we're copying a segment between, and declares real_source/real_dest variables.

Parameters
sourcethe source string
startthe starting offset
destthe dest string
insert_atwhere the copied segment is inserted

Definition at line 1297 of file dbus-string.c.

◆ UNICODE_VALID

#define UNICODE_VALID (   Char)
Value:
((Char) < 0x110000 && \
(((Char) & 0xFFFFF800) != 0xD800))

Check whether a Unicode (5.2) char is in a valid range.

The first check comes from the Unicode guarantee to never encode a point above 0x0010ffff, since UTF-16 couldn't represent it.

The second check covers surrogate pairs (category Cs).

Parameters
Charthe character

Definition at line 1647 of file dbus-string.c.

◆ UTF8_COMPUTE

#define UTF8_COMPUTE (   Char,
  Mask,
  Len 
)

computes length and mask of a unicode character

Parameters
Charthe char
Maskthe mask variable to assign to
Lenthe length variable to assign to

Definition at line 1567 of file dbus-string.c.

◆ UTF8_GET

#define UTF8_GET (   Result,
  Chars,
  Count,
  Mask,
  Len 
)
Value:
(Result) = (Chars)[0] & (Mask); \
for ((Count) = 1; (Count) < (Len); ++(Count)) \
{ \
if (((Chars)[(Count)] & 0xc0) != 0x80) \
{ \
(Result) = -1; \
break; \
} \
(Result) <<= 6; \
(Result) |= ((Chars)[(Count)] & 0x3f); \
}

Gets a UTF-8 value.

Parameters
Resultvariable for extracted unicode char.
Charsthe bytes to decode
Countcounter variable
Maskmask for this char
Lenlength for this char in bytes

Definition at line 1624 of file dbus-string.c.

◆ UTF8_LENGTH

#define UTF8_LENGTH (   Char)
Value:
((Char) < 0x80 ? 1 : \
((Char) < 0x800 ? 2 : \
((Char) < 0x10000 ? 3 : \
((Char) < 0x200000 ? 4 : \
((Char) < 0x4000000 ? 5 : 6)))))

computes length of a unicode character in UTF-8

Parameters
Charthe char

Definition at line 1608 of file dbus-string.c.

Function Documentation

◆ _dbus_parse_unix_group_from_config()

dbus_bool_t _dbus_parse_unix_group_from_config ( const DBusString groupname,
dbus_gid_t gid_p 
)

Parse a UNIX group from the bus config file.

On Windows, this should simply always fail (just return FALSE).

Parameters
groupnamethe groupname text
gid_pplace to return the gid
Returns
TRUE on success

Definition at line 687 of file dbus-sysdeps-util-win.c.

References FALSE.

◆ _dbus_parse_unix_user_from_config()

dbus_bool_t _dbus_parse_unix_user_from_config ( const DBusString username,
dbus_uid_t uid_p 
)

Parse a UNIX user from the bus config file.

On Windows, this should simply always fail (just return FALSE).

Parameters
usernamethe username text
uid_pplace to return the uid
Returns
TRUE on success

Definition at line 702 of file dbus-sysdeps-util-win.c.

References FALSE.

◆ _dbus_string_align_length()

dbus_bool_t _dbus_string_align_length ( DBusString str,
int  alignment 
)

Align the length of a string to a specific alignment (typically 4 or 8) by appending nul bytes to the string.

Parameters
stra string
alignmentthe alignment
Returns
FALSE if no memory

Definition at line 928 of file dbus-string.c.

◆ _dbus_string_alloc_space()

dbus_bool_t _dbus_string_alloc_space ( DBusString str,
int  extra_bytes 
)

Preallocate extra_bytes such that a future lengthening of the string by extra_bytes is guaranteed to succeed without an out of memory error.

Parameters
stra string
extra_bytesbytes to alloc
Returns
FALSE if no memory

Definition at line 944 of file dbus-string.c.

References _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.

Referenced by _dbus_type_writer_write_basic().

◆ _dbus_string_append()

dbus_bool_t _dbus_string_append ( DBusString str,
const char *  buffer 
)

◆ _dbus_string_append_byte()

dbus_bool_t _dbus_string_append_byte ( DBusString str,
unsigned char  byte 
)

Appends a single byte to the string, returning FALSE if not enough memory.

Parameters
strthe string
bytethe byte to append
Returns
TRUE on success

Definition at line 1190 of file dbus-string.c.

References DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_address_append_escaped(), _dbus_concat_dir_and_file(), _dbus_string_append_byte_as_hex(), _dbus_string_append_strings(), _dbus_string_hex_decode(), and _dbus_write_uuid_file().

◆ _dbus_string_append_byte_as_hex()

dbus_bool_t _dbus_string_append_byte_as_hex ( DBusString str,
unsigned char  byte 
)

Appends a two-character hex digit to a string, where the hex digit has the value of the given byte.

Parameters
strthe string
bytethe byte
Returns
FALSE if no memory

Definition at line 2313 of file dbus-string.c.

References _dbus_string_append_byte(), _dbus_string_set_length(), FALSE, and TRUE.

Referenced by _dbus_address_append_escaped(), and _dbus_string_hex_encode().

◆ _dbus_string_append_len()

dbus_bool_t _dbus_string_append_len ( DBusString str,
const char *  buffer,
int  len 
)

Appends block of bytes with the given length to a DBusString.

Parameters
strthe DBusString
bufferthe bytes to append
lenthe number of bytes to append
Returns
FALSE if not enough memory.

Definition at line 1170 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, and NULL.

Referenced by _dbus_sha_final(), dbus_message_demarshal(), dbus_message_iter_get_signature(), and dbus_signature_iter_get_signature().

◆ _dbus_string_append_printf()

dbus_bool_t _dbus_string_append_printf ( DBusString str,
const char *  format,
  ... 
)

◆ _dbus_string_append_printf_valist()

dbus_bool_t _dbus_string_append_printf_valist ( DBusString str,
const char *  format,
va_list  args 
)

Appends a printf-style formatted string to the DBusString.

Parameters
strthe string
formatprintf format
argsvariable argument list
Returns
FALSE if no memory

Definition at line 1105 of file dbus-string.c.

References _dbus_printf_string_upper_bound(), _dbus_string_lengthen(), DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_logv(), _dbus_string_append_printf(), and dbus_message_new_error_printf().

◆ _dbus_string_append_strings()

dbus_bool_t _dbus_string_append_strings ( DBusString str,
char **  strings,
char  separator 
)

Append vector with strings connected by separator.

Parameters
strthe string
stringsvector with char* pointer for merging
separatorseparator to merge the vector
Returns
FALSE if not enough memory
TRUE success or empty string vector

Definition at line 1213 of file dbus-string.c.

References _dbus_string_append(), _dbus_string_append_byte(), FALSE, NULL, and TRUE.

◆ _dbus_string_chop_white()

void _dbus_string_chop_white ( DBusString str)

Deletes leading and trailing whitespace.

Parameters
strthe string

Definition at line 2051 of file dbus-string.c.

References _dbus_string_delete(), _dbus_string_set_length(), _dbus_string_skip_white(), and _dbus_string_skip_white_reverse().

Referenced by _dbus_split_paths_and_append().

◆ _dbus_string_compact()

dbus_bool_t _dbus_string_compact ( DBusString str,
int  max_waste 
)

Compacts the string to avoid wasted memory.

Wasted memory is memory that is allocated but not actually required to store the current length of the string. The compact is only done if more than the given amount of memory is being wasted (otherwise the waste is ignored and the call does nothing).

Parameters
strthe string
max_wastethe maximum amount of waste to ignore
Returns
FALSE if the compact failed due to realloc failure

Definition at line 420 of file dbus-string.c.

References DBUS_STRING_PREAMBLE.

◆ _dbus_string_copy()

dbus_bool_t _dbus_string_copy ( const DBusString source,
int  start,
DBusString dest,
int  insert_at 
)

Like _dbus_string_move(), but does not delete the section of the source string that's copied to the dest string.

Parameters
sourcethe source string
startwhere to start copying the source string
destthe destination string
insert_atwhere to place the copied part of source string
Returns
FALSE if not enough memory

Definition at line 1345 of file dbus-string.c.

References DBUS_STRING_COPY_PREAMBLE.

Referenced by _dbus_append_keyring_directory_for_credentials(), _dbus_auth_decode_data(), _dbus_auth_encode_data(), _dbus_auth_server_new(), _dbus_command_for_pid(), _dbus_concat_dir_and_file(), _dbus_header_copy(), _dbus_keyring_new_for_credentials(), _dbus_string_save_to_file(), dbus_message_copy(), and dbus_message_marshal().

◆ _dbus_string_copy_data()

dbus_bool_t _dbus_string_copy_data ( const DBusString str,
char **  data_return 
)

Copies the data from the string into a char*.

Parameters
strthe string
data_returnplace to return the data
Returns
TRUE on success, FALSE on no memory

Definition at line 717 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, dbus_malloc(), FALSE, DBusRealString::len, NULL, DBusRealString::str, and TRUE.

Referenced by _dbus_split_paths_and_append(), _dbus_transport_init_base(), and dbus_server_get_id().

◆ _dbus_string_copy_len()

dbus_bool_t _dbus_string_copy_len ( const DBusString source,
int  start,
int  len,
DBusString dest,
int  insert_at 
)

Like _dbus_string_copy(), but can copy a segment from the middle of the source string.

Parameters
sourcethe source string
startwhere to start copying the source string
lenlength of segment to copy
destthe destination string
insert_atwhere to place the copied segment of source string
Returns
FALSE if not enough memory

Definition at line 1437 of file dbus-string.c.

References _dbus_assert, and DBUS_STRING_COPY_PREAMBLE.

Referenced by _dbus_header_load(), _dbus_split_paths_and_append(), _dbus_string_get_dirname(), _dbus_variant_read(), and dbus_parse_address().

◆ _dbus_string_copy_to_buffer()

void _dbus_string_copy_to_buffer ( const DBusString str,
char *  buffer,
int  avail_len 
)

Copies the contents of a DBusString into a different buffer.

It is a bug if avail_len is too short to hold the string contents. nul termination is not copied, just the supplied bytes.

Parameters
stra string
buffera C buffer to copy data to
avail_lenmaximum length of C buffer

Definition at line 742 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBusRealString::len, and DBusRealString::str.

Referenced by _dbus_generate_random_bytes_buffer().

◆ _dbus_string_copy_to_buffer_with_nul()

void _dbus_string_copy_to_buffer_with_nul ( const DBusString str,
char *  buffer,
int  avail_len 
)

Copies the contents of a DBusString into a different buffer.

It is a bug if avail_len is too short to hold the string contents plus a nul byte.

Parameters
stra string
buffera C buffer to copy data to
avail_lenmaximum length of C buffer

Definition at line 764 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBusRealString::len, and DBusRealString::str.

◆ _dbus_string_delete()

void _dbus_string_delete ( DBusString str,
int  start,
int  len 
)

Deletes a segment of a DBusString with length len starting at start.

(Hint: to clear an entire string, setting length to 0 with _dbus_string_set_length() is easier.)

Parameters
strthe DBusString
startwhere to start deleting
lenthe number of bytes to delete

Definition at line 1255 of file dbus-string.c.

References _dbus_assert, and DBUS_STRING_PREAMBLE.

Referenced by _dbus_auth_bytes_sent(), _dbus_header_create(), and _dbus_string_chop_white().

◆ _dbus_string_ends_with_c_str()

dbus_bool_t _dbus_string_ends_with_c_str ( const DBusString a,
const char *  c_str 
)

Returns whether a string ends with the given suffix.

Parameters
athe string
c_strthe C-style string
Returns
TRUE if the string ends with the suffix

Definition at line 54 of file dbus-string-util.c.

References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, NULL, DBusRealString::str, and TRUE.

Referenced by _dbus_directory_open().

◆ _dbus_string_equal()

dbus_bool_t _dbus_string_equal ( const DBusString a,
const DBusString b 
)

Tests two DBusString for equality.

Parameters
afirst string
bsecond string
Returns
TRUE if equal

Definition at line 2075 of file dbus-string.c.

References DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by dbus_error_has_name().

◆ _dbus_string_equal_c_str()

dbus_bool_t _dbus_string_equal_c_str ( const DBusString a,
const char *  c_str 
)

Checks whether a string is equal to a C string.

Parameters
athe string
c_strthe C string
Returns
TRUE if equal

Definition at line 2214 of file dbus-string.c.

References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, NULL, DBusRealString::str, and TRUE.

Referenced by dbus_address_entry_get_value().

◆ _dbus_string_equal_len()

dbus_bool_t _dbus_string_equal_len ( const DBusString a,
const DBusString b,
int  len 
)

Tests two DBusString for equality up to the given length.

The strings may be shorter than the given length.

Parameters
afirst string
bsecond string
lenthe maximum length to look at
Returns
TRUE if equal for the given number of bytes

Definition at line 2118 of file dbus-string.c.

References DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

◆ _dbus_string_equal_substring()

dbus_bool_t _dbus_string_equal_substring ( const DBusString a,
int  a_start,
int  a_len,
const DBusString b,
int  b_start 
)

Tests two sub-parts of two DBusString for equality.

The specified range of the first string must exist; the specified start position of the second string must exist.

Parameters
afirst string
a_startwhere to start substring in first string
a_lenlength of substring in first string
bsecond string
b_startwhere to start substring in second string
Returns
TRUE if the two substrings are equal

Definition at line 2166 of file dbus-string.c.

References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

◆ _dbus_string_find()

dbus_bool_t _dbus_string_find ( const DBusString str,
int  start,
const char *  substr,
int *  found 
)

Finds the given substring in the string, returning TRUE and filling in the byte index where the substring was found, if it was found.

Returns FALSE if the substring wasn't found. Sets *start to the length of the string if the substring is not found.

Parameters
strthe string
startwhere to start looking
substrthe substring
foundreturn location for where it was found, or NULL
Returns
TRUE if found

Definition at line 1666 of file dbus-string.c.

References _dbus_string_find_to().

Referenced by _dbus_keyring_validate_context(), _dbus_resolve_pid_fd(), _dbus_split_paths_and_append(), _dbus_string_split_on_byte(), and dbus_parse_address().

◆ _dbus_string_find_blank()

dbus_bool_t _dbus_string_find_blank ( const DBusString str,
int  start,
int *  found 
)

Finds a blank (space or tab) in the string.

Returns TRUE if found, FALSE otherwise. If a blank is not found sets *found to the length of the string.

Parameters
strthe string
startbyte index to start looking
foundplace to store the location of the first blank
Returns
TRUE if a blank was found

Definition at line 1827 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_keyring_validate_context().

◆ _dbus_string_find_byte_backward()

dbus_bool_t _dbus_string_find_byte_backward ( const DBusString str,
int  start,
unsigned char  byte,
int *  found 
)

Find the given byte scanning backward from the given start.

Sets *found to -1 if the byte is not found.

Parameters
strthe string
startthe place to start scanning (will not find the byte at this point)
bytethe byte to find
foundreturn location for where it was found
Returns
TRUE if found

Definition at line 98 of file dbus-string-util.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, and NULL.

Referenced by _dbus_string_get_dirname().

◆ _dbus_string_find_eol()

dbus_bool_t _dbus_string_find_eol ( const DBusString str,
int  start,
int *  found,
int *  found_len 
)

Finds end of line ("\r\n" or "\n") in the string, returning TRUE and filling in the byte index where the eol string was found, if it was found.

Returns FALSE if eol wasn't found.

Parameters
strthe string
startwhere to start looking
foundreturn location for where eol was found or string length otherwise
found_lenreturn length of found eol string or zero otherwise
Returns
TRUE if found

Definition at line 1689 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_string_pop_line().

◆ _dbus_string_find_to()

dbus_bool_t _dbus_string_find_to ( const DBusString str,
int  start,
int  end,
const char *  substr,
int *  found 
)

Finds the given substring in the string, up to a certain position, returning TRUE and filling in the byte index where the substring was found, if it was found.

Returns FALSE if the substring wasn't found. Sets *start to the length of the string if the substring is not found.

Parameters
strthe string
startwhere to start looking
endwhere to stop looking
substrthe substring
foundreturn location for where it was found, or NULL
Returns
TRUE if found

Definition at line 1759 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, FALSE, NULL, DBusRealString::str, and TRUE.

Referenced by _dbus_string_find(), and dbus_parse_address().

◆ _dbus_string_free()

void _dbus_string_free ( DBusString str)

Frees a string created by _dbus_string_init(), and fills it with the same contents as _DBUS_STRING_INIT_INVALID.

Unlike all other DBusString API, it is also valid to call this function for a string that was filled with _DBUS_STRING_INIT_INVALID. This is convenient for error rollback.

Parameters
strmemory where the string is stored.

Definition at line 278 of file dbus-string.c.

References DBusRealString::align_offset, DBusRealString::allocated, DBusRealString::constant, dbus_free(), DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::locked, NULL, DBusRealString::str, and DBusRealString::valid.

Referenced by _dbus_append_keyring_directory_for_credentials(), _dbus_auth_client_new(), _dbus_auth_server_new(), _dbus_auth_unref(), _dbus_command_for_pid(), _dbus_directory_open(), _dbus_generate_random_bytes_buffer(), _dbus_get_autolaunch_address(), _dbus_get_standard_session_servicedirs(), _dbus_hash_table_from_array(), _dbus_hash_table_to_array(), _dbus_header_copy(), _dbus_header_free(), _dbus_is_console_user(), _dbus_keyring_new_for_credentials(), _dbus_keyring_unref(), _dbus_logv(), _dbus_message_loader_unref(), _dbus_read_credentials_socket(), _dbus_replace_install_prefix(), _dbus_resolve_pid_fd(), _dbus_server_finalize_base(), _dbus_server_init_base(), _dbus_server_listen_platform_specific(), _dbus_server_listen_unix_socket(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_launchd(), _dbus_server_new_for_tcp_socket(), _dbus_set_up_transient_session_servicedirs(), _dbus_sha_compute(), _dbus_split_paths_and_append(), _dbus_string_hex_decode(), _dbus_string_hex_encode(), _dbus_string_init_from_string(), _dbus_string_save_to_file(), _dbus_transport_new_for_domain_socket(), _dbus_transport_new_for_socket(), _dbus_transport_new_for_tcp_socket(), _dbus_transport_open_platform_specific(), _dbus_variant_read(), _dbus_write_pid_to_file_and_pipe(), _dbus_write_uuid_file(), dbus_address_escape_value(), dbus_address_unescape_value(), dbus_connection_dispatch(), dbus_message_copy(), dbus_message_demarshal_bytes_needed(), dbus_message_iter_get_signature(), dbus_message_marshal(), dbus_message_new_error_printf(), dbus_parse_address(), dbus_signature_iter_get_signature(), and dbus_try_get_local_machine_id().

◆ _dbus_string_get_allocated_size()

int _dbus_string_get_allocated_size ( const DBusString str)

Returns the allocated size of the string.

Parameters
strthe string
Returns
the allocated size

Definition at line 476 of file dbus-string.c.

References DBusRealString::allocated, and DBUS_CONST_STRING_PREAMBLE.

◆ _dbus_string_get_data_len()

char * _dbus_string_get_data_len ( DBusString str,
int  start,
int  len 
)

Gets a sub-portion of the raw character buffer from the string.

The "len" field is required simply for error checking, to be sure you don't try to use more string than exists. The nul termination of the returned buffer remains at the end of the entire string, not at start + len.

Parameters
strthe string
startbyte offset to return
lenlength of segment to return
Returns
the string data

Definition at line 535 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, and DBusRealString::str.

Referenced by _dbus_generate_random_bytes(), _dbus_read(), _dbus_read_socket(), and _dbus_read_socket_with_unix_fds().

◆ _dbus_string_get_dirname()

dbus_bool_t _dbus_string_get_dirname ( const DBusString filename,
DBusString dirname 
)

Get the directory name from a complete filename.

Parameters
filenamethe filename
dirnamestring to append directory name to
Returns
FALSE if no memory

Definition at line 1018 of file dbus-sysdeps-util-unix.c.

References _dbus_assert, _dbus_string_append(), _dbus_string_copy_len(), _dbus_string_find_byte_backward(), and NULL.

◆ _dbus_string_hex_decode()

dbus_bool_t _dbus_string_hex_decode ( const DBusString source,
int  start,
int *  end_return,
DBusString dest,
int  insert_at 
)

Decodes a string from hex encoding.

Parameters
sourcethe string to decode
startbyte index to start decode
end_returnreturn location of the end of the hex data, or NULL
deststring where decoded data should be placed
insert_atwhere to place decoded data
Returns
TRUE if decoding was successful, FALSE if no memory.

Definition at line 2432 of file dbus-string.c.

References _dbus_assert, _dbus_string_append_byte(), _dbus_string_free(), _dbus_string_init(), _dbus_string_move(), FALSE, and TRUE.

◆ _dbus_string_hex_encode()

dbus_bool_t _dbus_string_hex_encode ( const DBusString source,
int  start,
DBusString dest,
int  insert_at 
)

Encodes a string in hex, the way MD5 and SHA-1 are usually encoded.

(Each byte is two hex digits.)

Parameters
sourcethe string to encode
startbyte index to start encoding
deststring where encoded data should be placed
insert_atwhere to place encoded data
Returns
TRUE if encoding was successful, FALSE if no memory etc.

Definition at line 2382 of file dbus-string.c.

References _dbus_assert, _dbus_string_append_byte_as_hex(), _dbus_string_free(), _dbus_string_init(), _dbus_string_move(), FALSE, and TRUE.

Referenced by _dbus_keyring_get_hex_key(), _dbus_sha_compute(), and _dbus_uuid_encode().

◆ _dbus_string_init()

dbus_bool_t _dbus_string_init ( DBusString str)

Initializes a string.

The string starts life with zero length. The string must eventually be freed with _dbus_string_free().

Parameters
strmemory to hold the string
Returns
TRUE on success, FALSE if no memory

Definition at line 182 of file dbus-string.c.

References _dbus_string_init_preallocated().

Referenced by _dbus_append_keyring_directory_for_credentials(), _dbus_auth_client_new(), _dbus_auth_server_new(), _dbus_command_for_pid(), _dbus_generate_random_bytes_buffer(), _dbus_get_autolaunch_address(), _dbus_get_standard_session_servicedirs(), _dbus_hash_table_from_array(), _dbus_hash_table_to_array(), _dbus_is_console_user(), _dbus_keyring_new_for_credentials(), _dbus_logv(), _dbus_message_loader_new(), _dbus_read_credentials_socket(), _dbus_replace_install_prefix(), _dbus_resolve_pid_fd(), _dbus_server_init_base(), _dbus_server_listen_platform_specific(), _dbus_server_listen_unix_socket(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_launchd(), _dbus_server_new_for_tcp_socket(), _dbus_set_up_transient_session_servicedirs(), _dbus_sha_compute(), _dbus_split_paths_and_append(), _dbus_string_hex_decode(), _dbus_string_hex_encode(), _dbus_string_init_from_string(), _dbus_string_save_to_file(), _dbus_string_steal_data(), _dbus_transport_new_for_domain_socket(), _dbus_transport_new_for_socket(), _dbus_transport_new_for_tcp_socket(), _dbus_transport_open_platform_specific(), _dbus_variant_read(), _dbus_write_pid_to_file_and_pipe(), _dbus_write_uuid_file(), dbus_address_escape_value(), dbus_address_unescape_value(), dbus_connection_dispatch(), dbus_message_iter_get_signature(), dbus_message_marshal(), dbus_message_new_error_printf(), dbus_parse_address(), dbus_signature_iter_get_signature(), and dbus_try_get_local_machine_id().

◆ _dbus_string_init_const()

void _dbus_string_init_const ( DBusString str,
const char *  value 
)

◆ _dbus_string_init_const_len()

void _dbus_string_init_const_len ( DBusString str,
const char *  value,
int  len 
)

Initializes a constant string with a length.

The value parameter is not copied (should be static), and the string may never be modified. It is safe but not necessary to call _dbus_string_free() on a const string.

Parameters
strmemory to use for the string
valuea string to be stored in str (not copied!!!)
lenthe length to use

Definition at line 217 of file dbus-string.c.

References _dbus_assert, _DBUS_STRING_MAX_LENGTH, DBusRealString::align_offset, DBusRealString::allocated, DBusRealString::constant, DBusRealString::len, DBusRealString::locked, NULL, DBusRealString::str, TRUE, and DBusRealString::valid.

Referenced by _dbus_send_credentials_socket(), _dbus_string_init_const(), _dbus_uuid_encode(), and dbus_message_demarshal_bytes_needed().

◆ _dbus_string_init_from_string()

dbus_bool_t _dbus_string_init_from_string ( DBusString str,
const DBusString from 
)

Initializes a string from another string.

The string must be freed with _dbus_string_free() in case of success. In case of error the string is freed by this function itself.

Parameters
strmemory to hold the string
frominstance from which the string is initialized
Returns
TRUE on success, FALSE if no memory

Definition at line 254 of file dbus-string.c.

References _dbus_string_append(), _dbus_string_free(), _dbus_string_init(), FALSE, and TRUE.

Referenced by _dbus_directory_open().

◆ _dbus_string_init_preallocated()

dbus_bool_t _dbus_string_init_preallocated ( DBusString str,
int  allocate_size 
)

Initializes a string that can be up to the given allocation size before it has to realloc.

The string starts life with zero length. The string must eventually be freed with _dbus_string_free().

Parameters
strmemory to hold the string
allocate_sizeamount to preallocate
Returns
TRUE on success, FALSE if no memory

Definition at line 139 of file dbus-string.c.

References _dbus_assert, DBusRealString::align_offset, DBusRealString::allocated, DBusRealString::constant, dbus_malloc(), FALSE, DBusRealString::len, DBusRealString::locked, NULL, DBusRealString::str, TRUE, and DBusRealString::valid.

Referenced by _dbus_header_copy(), _dbus_header_init(), _dbus_string_init(), and dbus_message_copy().

◆ _dbus_string_insert_2_aligned()

dbus_bool_t _dbus_string_insert_2_aligned ( DBusString str,
int  insert_at,
const unsigned char  octets[2] 
)

Inserts 2 bytes aligned on a 2 byte boundary with any alignment padding initialized to 0.

Parameters
strthe DBusString
insert_atwhere to insert
octets2 bytes to insert
Returns
FALSE if not enough memory.

Definition at line 1005 of file dbus-string.c.

References DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.

◆ _dbus_string_insert_4_aligned()

dbus_bool_t _dbus_string_insert_4_aligned ( DBusString str,
int  insert_at,
const unsigned char  octets[4] 
)

Inserts 4 bytes aligned on a 4 byte boundary with any alignment padding initialized to 0.

Parameters
strthe DBusString
insert_atwhere to insert
octets4 bytes to insert
Returns
FALSE if not enough memory.

Definition at line 1029 of file dbus-string.c.

References DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.

◆ _dbus_string_insert_8_aligned()

dbus_bool_t _dbus_string_insert_8_aligned ( DBusString str,
int  insert_at,
const unsigned char  octets[8] 
)

Inserts 8 bytes aligned on an 8 byte boundary with any alignment padding initialized to 0.

Parameters
strthe DBusString
insert_atwhere to insert
octets8 bytes to insert
Returns
FALSE if not enough memory.

Definition at line 1053 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.

◆ _dbus_string_insert_alignment()

dbus_bool_t _dbus_string_insert_alignment ( DBusString str,
int *  insert_at,
int  alignment 
)

Inserts padding at *insert_at such to align it to the given boundary.

Initializes the padding to nul bytes. Sets *insert_at to the aligned position.

Parameters
strthe DBusString
insert_atlocation to be aligned
alignmentalignment boundary (1, 2, 4, or 8)
Returns
FALSE if not enough memory.

Definition at line 1081 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, and TRUE.

◆ _dbus_string_insert_byte()

dbus_bool_t _dbus_string_insert_byte ( DBusString str,
int  i,
unsigned char  byte 
)

Inserts a single byte at the given position.

Parameters
strthe string
ithe position
bytethe value to insert
Returns
TRUE on success

Definition at line 659 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.

Referenced by _dbus_marshal_write_basic().

◆ _dbus_string_insert_bytes()

dbus_bool_t _dbus_string_insert_bytes ( DBusString str,
int  i,
int  n_bytes,
unsigned char  byte 
)

Inserts a number of bytes of a given value at the given position.

Parameters
strthe string
ithe position
n_bytesnumber of bytes
bytethe value to insert
Returns
TRUE on success

Definition at line 629 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.

◆ _dbus_string_lengthen()

dbus_bool_t _dbus_string_lengthen ( DBusString str,
int  additional_length 
)

Makes a string longer by the given number of bytes.

Checks whether adding additional_length to the current length would overflow an integer, and checks for exceeding a string's max length. The new bytes are not initialized, other than nul-terminating the end of the string. The uninitialized bytes may contain nul bytes or other junk.

Parameters
stra string
additional_lengthlength to add to the string.
Returns
TRUE on success.

Definition at line 805 of file dbus-string.c.

References _dbus_assert, _DBUS_STRING_MAX_LENGTH, DBUS_STRING_PREAMBLE, FALSE, and DBusRealString::len.

Referenced by _dbus_generate_random_bytes(), _dbus_read(), _dbus_read_socket(), _dbus_read_socket_with_unix_fds(), _dbus_string_alloc_space(), and _dbus_string_append_printf_valist().

◆ _dbus_string_move()

dbus_bool_t _dbus_string_move ( DBusString source,
int  start,
DBusString dest,
int  insert_at 
)

Moves the end of one string into another string.

Both strings must be initialized, valid strings.

Parameters
sourcethe source string
startwhere to chop off the source string
destthe destination string
insert_atwhere to move the chopped-off part of source string
Returns
FALSE if not enough memory

Definition at line 1321 of file dbus-string.c.

References _dbus_assert, _dbus_string_move_len(), and DBusRealString::len.

Referenced by _dbus_string_hex_decode(), and _dbus_string_hex_encode().

◆ _dbus_string_move_len()

dbus_bool_t _dbus_string_move_len ( DBusString source,
int  start,
int  len,
DBusString dest,
int  insert_at 
)

Like _dbus_string_move(), but can move a segment from the middle of the source string.

Parameters
sourcethe source string
startfirst byte of source string to move
lenlength of segment to move
destthe destination string
insert_atwhere to move the bytes from the source string
Returns
FALSE if not enough memory

Definition at line 1370 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_COPY_PREAMBLE, FALSE, and TRUE.

Referenced by _dbus_string_move(), _dbus_string_pop_line(), and _dbus_string_split_on_byte().

◆ _dbus_string_parse_int()

dbus_bool_t _dbus_string_parse_int ( const DBusString str,
int  start,
long *  value_return,
int *  end_return 
)

Parses an integer contained in a DBusString.

Either return parameter may be NULL if you aren't interested in it. The integer is parsed and stored in value_return. Return parameters are not initialized if the function returns FALSE.

Parameters
strthe string
startthe byte index of the start of the integer
value_returnreturn location of the integer value or NULL
end_returnreturn location of the end of the integer, or NULL
Returns
TRUE on success

Definition at line 371 of file dbus-sysdeps.c.

References _dbus_set_errno_to_zero(), FALSE, NULL, and TRUE.

◆ _dbus_string_parse_int64()

dbus_bool_t _dbus_string_parse_int64 ( const DBusString str,
int  start,
dbus_int64_t *  value_return,
int *  end_return 
)

Parses a dbus_int64_t integer contained in a DBusString.

Either return parameter may be NULL if you aren't interested in it. The integer is parsed and stored in value_return. Return parameters are not initialized if the function returns FALSE.

Parameters
strthe string
startthe byte index of the start of the integer
value_returnreturn location of the integer value or NULL
end_returnreturn location of the end of the integer, or NULL
Returns
TRUE on success

Definition at line 449 of file dbus-sysdeps.c.

References _dbus_set_errno_to_zero(), FALSE, NULL, and TRUE.

◆ _dbus_string_parse_uint()

dbus_bool_t _dbus_string_parse_uint ( const DBusString str,
int  start,
unsigned long *  value_return,
int *  end_return 
)

Parses an unsigned integer contained in a DBusString.

Either return parameter may be NULL if you aren't interested in it. The integer is parsed and stored in value_return. Return parameters are not initialized if the function returns FALSE.

Parameters
strthe string
startthe byte index of the start of the integer
value_returnreturn location of the integer value or NULL
end_returnreturn location of the end of the integer, or NULL
Returns
TRUE on success

Definition at line 410 of file dbus-sysdeps.c.

References _dbus_set_errno_to_zero(), FALSE, NULL, and TRUE.

Referenced by _dbus_is_a_number(), and _dbus_resolve_pid_fd().

◆ _dbus_string_pop_line()

dbus_bool_t _dbus_string_pop_line ( DBusString source,
DBusString dest 
)

Assigns a newline-terminated or \r\n-terminated line from the front of the string to the given dest string.

The dest string's previous contents are deleted. If the source string contains no newline, moves the entire source string to the dest string.

Parameters
sourcethe source string
destthe destination string (contents are replaced)
Returns
FALSE if no memory, or source has length 0

Definition at line 1971 of file dbus-string.c.

References _dbus_assert, _dbus_assert_not_reached, _dbus_string_find_eol(), _dbus_string_move_len(), _dbus_string_set_length(), FALSE, and TRUE.

◆ _dbus_string_replace_len()

dbus_bool_t _dbus_string_replace_len ( const DBusString source,
int  start,
int  len,
DBusString dest,
int  replace_at,
int  replace_len 
)

Replaces a segment of dest string with a segment of source string.

Parameters
sourcethe source string
startwhere to start copying the source string
lenlength of segment to copy
destthe destination string
replace_atstart of segment of dest string to replace
replace_lenlength of segment of dest string to replace
Returns
FALSE if not enough memory

Definition at line 1466 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_COPY_PREAMBLE, FALSE, and TRUE.

Referenced by _dbus_auth_set_context(), and _dbus_replace_install_prefix().

◆ _dbus_string_set_length()

dbus_bool_t _dbus_string_set_length ( DBusString str,
int  length 
)

Sets the length of a string.

Can be used to truncate or lengthen the string. If the string is lengthened, the function may fail and return FALSE. Newly-added bytes are not initialized, as with _dbus_string_lengthen().

Parameters
stra string
lengthnew length of the string.
Returns
FALSE on failure.

Definition at line 847 of file dbus-string.c.

References _dbus_assert, and DBUS_STRING_PREAMBLE.

Referenced by _dbus_address_append_escaped(), _dbus_append_keyring_directory_for_credentials(), _dbus_auth_delete_unused_bytes(), _dbus_directory_get_next_file(), _dbus_file_get_contents(), _dbus_generate_random_bytes(), _dbus_hash_table_from_array(), _dbus_header_load(), _dbus_header_reinit(), _dbus_message_loader_new(), _dbus_read(), _dbus_read_socket(), _dbus_read_socket_with_unix_fds(), _dbus_string_append_byte_as_hex(), _dbus_string_chop_white(), _dbus_string_pop_line(), and _dbus_string_split_on_byte().

◆ _dbus_string_shorten()

void _dbus_string_shorten ( DBusString str,
int  length_to_remove 
)

Makes a string shorter by the given number of bytes.

Parameters
stra string
length_to_removelength to remove from the string.

Definition at line 825 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, and DBusRealString::len.

Referenced by _dbus_concat_dir_and_file(), _dbus_lookup_launchd_socket(), and _dbus_string_alloc_space().

◆ _dbus_string_skip_blank()

void _dbus_string_skip_blank ( const DBusString str,
int  start,
int *  end 
)

Skips blanks from start, storing the first non-blank in *end (blank is space or tab).

Parameters
strthe string
startwhere to start
endwhere to store the first non-blank byte index

Definition at line 1865 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBUS_IS_ASCII_BLANK, DBusRealString::len, and DBusRealString::str.

◆ _dbus_string_skip_white()

void _dbus_string_skip_white ( const DBusString str,
int  start,
int *  end 
)

Skips whitespace from start, storing the first non-whitespace in *end.

(whitespace is space, tab, newline, CR).

Parameters
strthe string
startwhere to start
endwhere to store the first non-whitespace byte index

Definition at line 1899 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBUS_IS_ASCII_WHITE, DBusRealString::len, and DBusRealString::str.

Referenced by _dbus_string_chop_white().

◆ _dbus_string_skip_white_reverse()

void _dbus_string_skip_white_reverse ( const DBusString str,
int  end,
int *  start 
)

Skips whitespace from end, storing the start index of the trailing whitespace in *start.

(whitespace is space, tab, newline, CR).

Parameters
strthe string
endwhere to start scanning backward
startwhere to store the start of whitespace chars

Definition at line 1932 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBUS_IS_ASCII_WHITE, and DBusRealString::str.

Referenced by _dbus_string_chop_white().

◆ _dbus_string_split_on_byte()

dbus_bool_t _dbus_string_split_on_byte ( DBusString source,
unsigned char  byte,
DBusString tail 
)

Looks for the first occurance of a byte, deletes that byte, and moves everything after the byte to the beginning of a separate string.

Both strings must be initialized, valid strings.

Parameters
sourcethe source string
bytethe byte to remove and split the string at
tailthe split off string
Returns
FALSE if not enough memory or if byte could not be found

Definition at line 1529 of file dbus-string.c.

References _dbus_string_find(), _dbus_string_move_len(), _dbus_string_set_length(), FALSE, and TRUE.

Referenced by _dbus_hash_table_from_array().

◆ _dbus_string_starts_with_c_str()

dbus_bool_t _dbus_string_starts_with_c_str ( const DBusString a,
const char *  c_str 
)

Checks whether a string starts with the given C string.

Parameters
athe string
c_strthe C string
Returns
TRUE if string starts with it

Definition at line 2250 of file dbus-string.c.

References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, NULL, DBusRealString::str, and TRUE.

Referenced by _dbus_replace_install_prefix(), and _dbus_string_starts_with_words_c_str().

◆ _dbus_string_starts_with_words_c_str()

dbus_bool_t _dbus_string_starts_with_words_c_str ( const DBusString a,
const char *  c_str,
char  word_separator 
)

Checks whether a string starts with the given C string, after which it ends or is separated from the rest by a given separator character.

Parameters
athe string
c_strthe C string
word_separatorthe separator
Returns
TRUE if string starts with it

Definition at line 2288 of file dbus-string.c.

References _dbus_assert, _dbus_string_starts_with_c_str(), FALSE, and NULL.

◆ _dbus_string_steal_data()

dbus_bool_t _dbus_string_steal_data ( DBusString str,
char **  data_return 
)

Like _dbus_string_get_data(), but removes the gotten data from the original string.

The caller must free the data returned. This function may fail due to lack of memory, and return FALSE.

Parameters
strthe string
data_returnlocation to return the buffer
Returns
TRUE on success

Definition at line 686 of file dbus-string.c.

References _dbus_assert, _dbus_string_init(), DBUS_STRING_PREAMBLE, FALSE, NULL, DBusRealString::str, and TRUE.

Referenced by _dbus_hash_table_from_array(), _dbus_hash_table_to_array(), _dbus_set_up_transient_session_servicedirs(), dbus_address_escape_value(), dbus_address_unescape_value(), dbus_message_iter_get_signature(), dbus_message_marshal(), dbus_signature_iter_get_signature(), and dbus_try_get_local_machine_id().

◆ _dbus_string_tolower_ascii()

void _dbus_string_tolower_ascii ( const DBusString str,
int  start,
int  len 
)

Converts the given range of the string to lower case.

Parameters
strthe string
startfirst byte index to convert
lennumber of bytes to convert

Definition at line 2608 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, and DBusRealString::str.

◆ _dbus_string_toupper_ascii()

void _dbus_string_toupper_ascii ( const DBusString str,
int  start,
int  len 
)

Converts the given range of the string to upper case.

Parameters
strthe string
startfirst byte index to convert
lennumber of bytes to convert

Definition at line 2639 of file dbus-string.c.

References _dbus_assert, DBUS_STRING_PREAMBLE, and DBusRealString::str.

◆ _dbus_string_validate_ascii()

dbus_bool_t _dbus_string_validate_ascii ( const DBusString str,
int  start,
int  len 
)

Checks that the given range of the string is valid ASCII with no nul bytes.

If the given range is not entirely contained in the string, returns FALSE.

Parameters
strthe string
startfirst byte index to check
lennumber of bytes to check
Returns
TRUE if the byte range exists and is all valid ASCII

Definition at line 2573 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_generate_random_ascii(), and _dbus_keyring_validate_context().

◆ _dbus_string_validate_nul()

dbus_bool_t _dbus_string_validate_nul ( const DBusString str,
int  start,
int  len 
)

Checks that the given range of the string is all nul bytes.

If the given range is not entirely contained in the string, returns FALSE.

Parameters
strthe string
startfirst byte index to check
lennumber of bytes to check
Returns
TRUE if the byte range exists and is all nul bytes

Definition at line 2776 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.

Referenced by _dbus_header_load().

◆ _dbus_string_validate_utf8()

dbus_bool_t _dbus_string_validate_utf8 ( const DBusString str,
int  start,
int  len 
)

Checks that the given range of the string is valid UTF-8.

If the given range is not entirely contained in the string, returns FALSE. If the string contains any nul bytes in the given range, returns FALSE. If the start and start+len are not on character boundaries, returns FALSE.

Parameters
strthe string
startfirst byte index to check
lennumber of bytes to check
Returns
TRUE if the byte range exists and is all valid UTF-8

Definition at line 2678 of file dbus-string.c.

References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, TRUE, UNICODE_VALID, UTF8_COMPUTE, UTF8_GET, and UTF8_LENGTH.

Referenced by dbus_validate_bus_name(), dbus_validate_error_name(), dbus_validate_interface(), dbus_validate_member(), dbus_validate_path(), and dbus_validate_utf8().

◆ _dbus_string_zero()

void _dbus_string_zero ( DBusString str)

Clears all allocated bytes in the string to zero.

Parameters
strthe string

Definition at line 2808 of file dbus-string.c.

References DBusRealString::align_offset, DBusRealString::allocated, DBUS_STRING_PREAMBLE, and DBusRealString::str.

◆ _dbus_unix_groups_from_uid()

dbus_bool_t _dbus_unix_groups_from_uid ( dbus_uid_t  uid,
dbus_gid_t **  group_ids,
int *  n_group_ids,
DBusError error 
)

Gets all groups corresponding to the given UNIX user ID.

On UNIX, just calls _dbus_groups_from_uid(). On Windows, should always fail since we don't know any UNIX groups.

Parameters
uidthe UID
group_idsreturn location for array of group IDs
n_group_idsreturn location for length of returned array
errorerror location
Returns
TRUE if the UID existed and we got some credentials

Definition at line 721 of file dbus-sysdeps-util-win.c.

References FALSE.

◆ _dbus_unix_user_is_at_console()

dbus_bool_t _dbus_unix_user_is_at_console ( dbus_uid_t  uid,
DBusError error 
)

Checks to see if the UNIX user ID is at the console.

Should always fail on Windows (set the error to DBUS_ERROR_NOT_SUPPORTED).

Parameters
uidUID of person to check
errorreturn location for errors
Returns
TRUE if the UID is the same as the console user and there are no errors

Definition at line 670 of file dbus-sysdeps-util-win.c.

References FALSE.

◆ _dbus_unix_user_is_process_owner()

dbus_bool_t _dbus_unix_user_is_process_owner ( dbus_uid_t  uid)

Checks to see if the UNIX user ID matches the UID of the process.

Should always return FALSE on Windows.

Parameters
uidthe UNIX user ID
Returns
TRUE if this uid owns the process.

Definition at line 639 of file dbus-sysdeps-util-win.c.

References FALSE.

◆ _dbus_windows_user_is_process_owner()

dbus_bool_t _dbus_windows_user_is_process_owner ( const char *  windows_sid)

Checks to see if the Windows user SID matches the owner of the process.

Should always return FALSE on UNIX.

Parameters
windows_sidthe Windows user SID
Returns
TRUE if this user owns the process.

Definition at line 644 of file dbus-sysdeps-util-win.c.

References TRUE.