Defines | |
#define | ASSIGN_2_OCTETS(p, octets) *((dbus_uint16_t*)(p)) = *((dbus_uint16_t*)(octets)); |
assign 2 bytes from one string to another | |
#define | ASSIGN_4_OCTETS(p, octets) *((dbus_uint32_t*)(p)) = *((dbus_uint32_t*)(octets)); |
assign 4 bytes from one string to another | |
#define | ASSIGN_8_OCTETS(p, octets) *((dbus_uint64_t*)(p)) = *((dbus_uint64_t*)(octets)); |
assign 8 bytes from one string to another | |
#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 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. | |
void | _dbus_string_free (DBusString *str) |
Frees a string created by _dbus_string_init(). | |
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. | |
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[4]) |
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. | |
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_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_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_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_append_byte_as_hex (DBusString *str, int 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. | |
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_string_append_int (DBusString *str, long value) |
Appends an integer to a DBusString. | |
dbus_bool_t | _dbus_string_append_uint (DBusString *str, unsigned long value) |
Appends an unsigned integer to a DBusString. | |
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. |
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"
#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)
source | the source string | |
start | the starting offset | |
dest | the dest string | |
insert_at | where the copied segment is inserted |
Definition at line 1423 of file dbus-string.c.
Referenced by _dbus_string_copy(), _dbus_string_copy_len(), _dbus_string_move_len(), and _dbus_string_replace_len().
#define UNICODE_VALID | ( | Char | ) |
Value:
((Char) < 0x110000 && \ (((Char) & 0xFFFFF800) != 0xD800) && \ ((Char) < 0xFDD0 || (Char) > 0xFDEF) && \ ((Char) & 0xFFFF) != 0xFFFF)
Char | the character |
Definition at line 1712 of file dbus-string.c.
Referenced by _dbus_string_validate_utf8().
#define UTF8_COMPUTE | ( | Char, | |||
Mask, | |||||
Len | ) |
computes length and mask of a unicode character
Char | the char | |
Mask | the mask variable to assign to | |
Len | the length variable to assign to |
Definition at line 1637 of file dbus-string.c.
Referenced by _dbus_string_validate_utf8().
#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); \ }
Result | variable for extracted unicode char. | |
Chars | the bytes to decode | |
Count | counter variable | |
Mask | mask for this char | |
Len | length for this char in bytes |
Definition at line 1694 of file dbus-string.c.
Referenced by _dbus_string_validate_utf8().
#define UTF8_LENGTH | ( | Char | ) |
Value:
((Char) < 0x80 ? 1 : \ ((Char) < 0x800 ? 2 : \ ((Char) < 0x10000 ? 3 : \ ((Char) < 0x200000 ? 4 : \ ((Char) < 0x4000000 ? 5 : 6)))))
Char | the char |
Definition at line 1678 of file dbus-string.c.
Referenced by _dbus_string_validate_utf8().
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.
str | a string | |
alignment | the alignment |
Definition at line 934 of file dbus-string.c.
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.
str | a string | |
extra_bytes | bytes to alloc |
Definition at line 950 of file dbus-string.c.
References _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.
Referenced by _dbus_type_writer_write_basic().
dbus_bool_t _dbus_string_append | ( | DBusString * | str, | |
const char * | buffer | |||
) |
Appends a nul-terminated C-style string to a DBusString.
str | the DBusString | |
buffer | the nul-terminated characters to append |
Definition at line 986 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::max_length, and NULL.
Referenced by _dbus_become_daemon(), _dbus_directory_get_next_file(), _dbus_get_standard_session_servicedirs(), _dbus_homedir_from_username(), _dbus_is_console_user(), _dbus_keyring_new_homedir(), _dbus_server_listen_platform_specific(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_tcp_socket(), _dbus_string_get_dirname(), _dbus_string_save_to_file(), _dbus_transport_new_for_domain_socket(), _dbus_transport_new_for_tcp_socket(), _dbus_user_at_console(), and dbus_set_error().
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.
str | the string | |
byte | the byte to append |
Definition at line 1272 of file dbus-string.c.
References DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, and TRUE.
Referenced by _dbus_address_append_escaped(), _dbus_concat_dir_and_file(), _dbus_string_append_byte_as_hex(), and _dbus_string_hex_decode().
dbus_bool_t _dbus_string_append_byte_as_hex | ( | DBusString * | str, | |
int | byte | |||
) |
Appends a two-character hex digit to a string, where the hex digit has the value of the given byte.
str | the string | |
byte | the byte |
Definition at line 2355 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_bool_t _dbus_string_append_int | ( | DBusString * | str, | |
long | value | |||
) |
Appends an integer to a DBusString.
str | the string | |
value | the integer value |
Definition at line 190 of file dbus-sysdeps.c.
References _dbus_string_get_data_len(), _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.
Referenced by _dbus_become_daemon(), _dbus_server_new_for_tcp_socket(), and _dbus_transport_new_for_tcp_socket().
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.
str | the DBusString | |
buffer | the bytes to append | |
len | the number of bytes to append |
Definition at line 1252 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, and NULL.
Referenced by _dbus_sha_final(), dbus_message_iter_get_signature(), and dbus_signature_iter_get_signature().
dbus_bool_t _dbus_string_append_printf | ( | DBusString * | str, | |
const char * | format, | |||
... | ||||
) |
Appends a printf-style formatted string to the DBusString.
str | the string | |
format | printf format |
Definition at line 1229 of file dbus-string.c.
References _dbus_string_append_printf_valist().
Referenced by dbus_connection_dispatch().
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.
str | the string | |
format | printf format | |
args | variable argument list |
Definition at line 1191 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_string_append_printf(), dbus_message_new_error_printf(), and dbus_set_error().
dbus_bool_t _dbus_string_append_uint | ( | DBusString * | str, | |
unsigned long | value | |||
) |
Appends an unsigned integer to a DBusString.
str | the string | |
value | the integer value |
Definition at line 228 of file dbus-sysdeps.c.
References _dbus_string_get_data_len(), _dbus_string_lengthen(), _dbus_string_shorten(), FALSE, and TRUE.
void _dbus_string_chop_white | ( | DBusString * | str | ) |
Deletes leading and trailing whitespace.
str | the string |
Definition at line 2115 of file dbus-string.c.
References _dbus_string_delete(), _dbus_string_set_length(), _dbus_string_skip_white(), and _dbus_string_skip_white_reverse().
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.
source | the source string | |
start | where to start copying the source string | |
dest | the destination string | |
insert_at | where to place the copied part of source string |
Definition at line 1471 of file dbus-string.c.
References DBUS_STRING_COPY_PREAMBLE.
Referenced by _dbus_auth_decode_data(), _dbus_auth_encode_data(), _dbus_auth_server_new(), _dbus_concat_dir_and_file(), _dbus_header_copy(), _dbus_keyring_new_homedir(), _dbus_string_save_to_file(), and dbus_message_copy().
dbus_bool_t _dbus_string_copy_data | ( | const DBusString * | str, | |
char ** | data_return | |||
) |
Copies the data from the string into a char*.
str | the string | |
data_return | place to return the data |
Definition at line 696 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_transport_init_base().
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.
source | the source string | |
start | where to start copying the source string | |
len | length of segment to copy | |
dest | the destination string | |
insert_at | where to place the copied segment of source string |
Definition at line 1566 of file dbus-string.c.
References _dbus_assert, and DBUS_STRING_COPY_PREAMBLE.
Referenced by _dbus_header_load(), _dbus_string_get_dirname(), and dbus_parse_address().
void _dbus_string_copy_to_buffer | ( | const DBusString * | str, | |
char * | buffer, | |||
int | avail_len | |||
) |
Copies the contents of a DBusString into a different buffer.
The resulting buffer will be nul-terminated.
str | a string | |
buffer | a C buffer to copy data to | |
avail_len | maximum length of C buffer |
Definition at line 720 of file dbus-string.c.
References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBusRealString::len, and DBusRealString::str.
Referenced by _dbus_generate_random_bytes_buffer().
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.)
str | the DBusString | |
start | where to start deleting | |
len | the number of bytes to delete |
Definition at line 1381 of file dbus-string.c.
References _dbus_assert, and DBUS_STRING_PREAMBLE.
Referenced by _dbus_auth_bytes_sent(), _dbus_header_create(), _dbus_string_chop_white(), and _dbus_type_writer_write_reader_partial().
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.
a | the string | |
c_str | the C-style string |
Definition at line 44 of file dbus-string-util.c.
References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, NULL, and TRUE.
dbus_bool_t _dbus_string_equal | ( | const DBusString * | a, | |
const DBusString * | b | |||
) |
Tests two DBusString for equality.
a | first string | |
b | second string |
Definition at line 2139 of file dbus-string.c.
References DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.
Referenced by _dbus_keyring_is_for_user(), and dbus_error_has_name().
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.
a | the string | |
c_str | the C string |
Definition at line 2280 of file dbus-string.c.
References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, NULL, and TRUE.
Referenced by dbus_address_entry_get_value().
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.
a | first string | |
a_start | where to start substring in first string | |
a_len | length of substring in first string | |
b | second string | |
b_start | where to start substring in second string |
Definition at line 2232 of file dbus-string.c.
References _dbus_assert, DBUS_GENERIC_STRING_PREAMBLE, FALSE, DBusRealString::len, DBusRealString::str, and TRUE.
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.
str | the string | |
start | where to start looking | |
substr | the substring | |
found | return location for where it was found, or NULL |
Definition at line 1782 of file dbus-string.c.
References _dbus_string_find_to().
Referenced by _dbus_keyring_validate_context(), _dbus_string_pop_line(), and dbus_parse_address().
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.
str | the string | |
start | byte index to start looking | |
found | place to store the location of the first blank |
Definition at line 1877 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_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.
str | the string | |
start | the place to start scanning (will not find the byte at this point) | |
byte | the byte to find | |
found | return location for where it was found |
Definition at line 88 of file dbus-string-util.c.
References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, and NULL.
Referenced by _dbus_string_get_dirname().
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.
str | the string | |
start | where to start looking | |
end | where to stop looking | |
substr | the substring | |
found | return location for where it was found, or NULL |
Definition at line 1809 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().
void _dbus_string_free | ( | DBusString * | str | ) |
Frees a string created by _dbus_string_init().
str | memory where the string is stored. |
Definition at line 261 of file dbus-string.c.
References dbus_free(), DBUS_GENERIC_STRING_PREAMBLE, and TRUE.
Referenced by _dbus_auth_client_new(), _dbus_auth_server_new(), _dbus_auth_unref(), _dbus_become_daemon(), _dbus_generate_random_bytes_buffer(), _dbus_get_autolaunch_address(), _dbus_get_standard_session_servicedirs(), _dbus_header_copy(), _dbus_header_free(), _dbus_is_console_user(), _dbus_keyring_new_homedir(), _dbus_keyring_unref(), _dbus_message_loader_unref(), _dbus_server_finalize_base(), _dbus_server_init_base(), _dbus_server_listen_platform_specific(), _dbus_server_listen_socket(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_tcp_socket(), _dbus_sha_compute(), _dbus_string_hex_decode(), _dbus_string_hex_encode(), _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_socket(), _dbus_user_at_console(), dbus_address_escape_value(), dbus_address_unescape_value(), dbus_connection_dispatch(), dbus_get_local_machine_id(), dbus_message_copy(), dbus_message_iter_get_signature(), dbus_message_new_error_printf(), dbus_parse_address(), dbus_set_error(), and dbus_signature_iter_get_signature().
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.
str | the string | |
start | byte offset to return | |
len | length of segment to return |
Definition at line 456 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, and DBusRealString::str.
Referenced by _dbus_header_toggle_flag(), _dbus_marshal_byteswap(), _dbus_read(), _dbus_string_append_int(), and _dbus_string_append_uint().
dbus_bool_t _dbus_string_get_dirname | ( | const DBusString * | filename, | |
DBusString * | dirname | |||
) |
Get the directory name from a complete filename.
filename | the filename | |
dirname | string to append directory name to |
Definition at line 776 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_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.
source | the string to decode | |
start | byte index to start decode | |
end_return | return location of the end of the hex data, or NULL | |
dest | string where decoded data should be placed | |
insert_at | where to place decoded data |
Definition at line 2439 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_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.)
source | the string to encode | |
start | byte index to start encoding | |
dest | string where encoded data should be placed | |
insert_at | where to place encoded data |
Definition at line 2389 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_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().
str | memory to hold the string |
Definition at line 174 of file dbus-string.c.
References _dbus_string_init_preallocated().
Referenced by _dbus_auth_client_new(), _dbus_auth_server_new(), _dbus_become_daemon(), _dbus_generate_random_bytes_buffer(), _dbus_get_autolaunch_address(), _dbus_get_standard_session_servicedirs(), _dbus_is_console_user(), _dbus_keyring_new_homedir(), _dbus_message_loader_new(), _dbus_server_init_base(), _dbus_server_listen_platform_specific(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_tcp_socket(), _dbus_sha_compute(), _dbus_string_hex_decode(), _dbus_string_hex_encode(), _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_user_at_console(), dbus_address_escape_value(), dbus_address_unescape_value(), dbus_connection_dispatch(), dbus_get_local_machine_id(), dbus_message_iter_get_signature(), dbus_message_new_error_printf(), dbus_parse_address(), dbus_set_error(), and dbus_signature_iter_get_signature().
void _dbus_string_init_const | ( | DBusString * | str, | |
const char * | value | |||
) |
Initializes a constant string.
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. The string has a length limit of MAXINT - 8.
str | memory to use for the string | |
value | a string to be stored in str (not copied!!!) |
Definition at line 208 of file dbus-string.c.
References _dbus_assert, _dbus_string_init_const_len(), and NULL.
Referenced by _dbus_get_standard_session_servicedirs(), _dbus_keyring_new_homedir(), _dbus_read_local_machine_uuid(), _dbus_server_listen_socket(), _dbus_server_new_for_domain_socket(), _dbus_server_new_for_tcp_socket(), _dbus_transport_open_socket(), dbus_address_escape_value(), dbus_address_unescape_value(), dbus_error_has_name(), dbus_internal_do_not_use_get_uuid(), dbus_message_iter_open_container(), dbus_parse_address(), and dbus_signature_validate().
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.
str | memory to use for the string | |
value | a string to be stored in str (not copied!!!) | |
len | the length to use |
Definition at line 228 of file dbus-string.c.
References _dbus_assert, _DBUS_STRING_MAX_MAX_LENGTH, DBusRealString::align_offset, DBusRealString::allocated, DBusRealString::constant, FALSE, DBusRealString::invalid, DBusRealString::len, DBusRealString::locked, DBusRealString::max_length, NULL, DBusRealString::str, and TRUE.
Referenced by _dbus_string_init_const(), and _dbus_uuid_encode().
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().
str | memory to hold the string | |
allocate_size | amount to preallocate |
Definition at line 130 of file dbus-string.c.
References _dbus_assert, _DBUS_STRING_MAX_MAX_LENGTH, DBusRealString::align_offset, DBusRealString::allocated, DBusRealString::constant, dbus_malloc(), FALSE, DBusRealString::invalid, DBusRealString::len, DBusRealString::locked, DBusRealString::max_length, NULL, DBusRealString::str, and TRUE.
Referenced by _dbus_header_copy(), _dbus_header_init(), _dbus_string_init(), and dbus_message_copy().
dbus_bool_t _dbus_string_insert_2_aligned | ( | DBusString * | str, | |
int | insert_at, | |||
const unsigned char | octets[4] | |||
) |
Inserts 2 bytes aligned on a 2 byte boundary with any alignment padding initialized to 0.
str | the DBusString | |
insert_at | where to insert | |
octets | 2 bytes to insert |
Definition at line 1091 of file dbus-string.c.
References ASSIGN_2_OCTETS, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.
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.
str | the DBusString | |
insert_at | where to insert | |
octets | 4 bytes to insert |
Definition at line 1115 of file dbus-string.c.
References ASSIGN_4_OCTETS, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.
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.
str | the DBusString | |
insert_at | where to insert | |
octets | 8 bytes to insert |
Definition at line 1139 of file dbus-string.c.
References _dbus_assert, ASSIGN_8_OCTETS, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.
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.
str | the DBusString | |
insert_at | location to be aligned | |
alignment | alignment boundary (1, 2, 4, or 8) |
Definition at line 1167 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, and TRUE.
dbus_bool_t _dbus_string_insert_byte | ( | DBusString * | str, | |
int | i, | |||
unsigned char | byte | |||
) |
Inserts a single byte at the given position.
str | the string | |
i | the position | |
byte | the value to insert |
Definition at line 580 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.
Referenced by _dbus_marshal_write_basic().
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.
str | the string | |
i | the position | |
n_bytes | number of bytes | |
byte | the value to insert |
Definition at line 550 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::str, and TRUE.
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.
str | a string | |
additional_length | length to add to the string. |
Definition at line 811 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, FALSE, DBusRealString::len, and DBusRealString::max_length.
Referenced by _dbus_read(), _dbus_string_alloc_space(), _dbus_string_append_int(), _dbus_string_append_printf_valist(), and _dbus_string_append_uint().
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.
source | the source string | |
start | where to chop off the source string | |
dest | the destination string | |
insert_at | where to move the chopped-off part of source string |
Definition at line 1447 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_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.
source | the source string | |
start | first byte of source string to move | |
len | length of segment to move | |
dest | the destination string | |
insert_at | where to move the bytes from the source string |
Definition at line 1499 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_COPY_PREAMBLE, FALSE, and TRUE.
Referenced by _dbus_string_move(), and _dbus_string_pop_line().
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.
str | the string | |
start | the byte index of the start of the integer | |
value_return | return location of the integer value or NULL | |
end_return | return location of the end of the integer, or NULL |
Definition at line 310 of file dbus-sysdeps.c.
References FALSE, NULL, and TRUE.
Referenced by _dbus_is_a_number(), _dbus_parse_uid(), _dbus_server_listen_socket(), and _dbus_transport_open_socket().
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.
str | the string | |
start | the byte index of the start of the integer | |
value_return | return location of the integer value or NULL | |
end_return | return location of the end of the integer, or NULL |
Definition at line 349 of file dbus-sysdeps.c.
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.
source | the source string | |
dest | the destination string (contents are replaced) |
Definition at line 2021 of file dbus-string.c.
References _dbus_assert, _dbus_string_find(), _dbus_string_move_len(), _dbus_string_set_length(), FALSE, and TRUE.
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.
source | the source string | |
start | where to start copying the source string | |
len | length of segment to copy | |
dest | the destination string | |
replace_at | start of segment of dest string to replace | |
replace_len | length of segment of dest string to replace |
Definition at line 1604 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_COPY_PREAMBLE, FALSE, and TRUE.
Referenced by _dbus_auth_set_context().
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().
str | a string | |
length | new length of the string. |
Definition at line 853 of file dbus-string.c.
References _dbus_assert, and DBUS_STRING_PREAMBLE.
Referenced by _dbus_address_append_escaped(), _dbus_auth_delete_unused_bytes(), _dbus_directory_get_next_file(), _dbus_file_get_contents(), _dbus_generate_random_bytes(), _dbus_get_autolaunch_address(), _dbus_header_load(), _dbus_header_reinit(), _dbus_keyring_new_homedir(), _dbus_message_loader_new(), _dbus_read(), _dbus_string_append_byte_as_hex(), _dbus_string_chop_white(), and _dbus_string_pop_line().
void _dbus_string_shorten | ( | DBusString * | str, | |
int | length_to_remove | |||
) |
Makes a string shorter by the given number of bytes.
str | a string | |
length_to_remove | length to remove from the string. |
Definition at line 831 of file dbus-string.c.
References _dbus_assert, DBUS_STRING_PREAMBLE, and DBusRealString::len.
Referenced by _dbus_concat_dir_and_file(), _dbus_string_alloc_space(), _dbus_string_append_int(), and _dbus_string_append_uint().
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).
str | the string | |
start | where to start | |
end | where to store the first non-blank byte index |
Definition at line 1915 of file dbus-string.c.
References _dbus_assert, DBUS_CONST_STRING_PREAMBLE, DBUS_IS_ASCII_BLANK, DBUS_IS_ASCII_WHITE, DBusRealString::len, and DBusRealString::str.
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).
str | the string | |
start | where to start | |
end | where to store the first non-whitespace byte index |
Definition at line 1949 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().
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).
str | the string | |
end | where to start scanning backward | |
start | where to store the start of whitespace chars |
Definition at line 1982 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_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.
str | the string | |
data_return | location to return the buffer |
Definition at line 607 of file dbus-string.c.
References _dbus_assert, _dbus_string_init(), DBUS_STRING_PREAMBLE, FALSE, DBusRealString::max_length, NULL, DBusRealString::str, and TRUE.
Referenced by dbus_address_escape_value(), dbus_address_unescape_value(), dbus_get_local_machine_id(), dbus_message_iter_get_signature(), dbus_set_error(), and dbus_signature_iter_get_signature().
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.
str | the string | |
start | first byte index to check | |
len | number of bytes to check |
Definition at line 2580 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_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.
str | the string | |
start | first byte index to check | |
len | number of bytes to check |
Definition at line 2721 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_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.
str | the string | |
start | first byte index to check | |
len | number of bytes to check |
Definition at line 2623 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.
void _dbus_string_zero | ( | DBusString * | str | ) |
Clears all allocated bytes in the string to zero.
str | the string |
Definition at line 2753 of file dbus-string.c.
References DBusRealString::align_offset, DBusRealString::allocated, DBUS_STRING_PREAMBLE, and DBusRealString::str.