From: Lennart Poettering Date: Wed, 30 May 2018 11:09:03 +0000 (+0200) Subject: tree-wide: make use of memory_startswith() at various places X-Git-Tag: v239~178^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d27b725abf64a19a6b2f99332b663f17ad046771;p=thirdparty%2Fsystemd.git tree-wide: make use of memory_startswith() at various places --- diff --git a/src/basic/log.c b/src/basic/log.c index 5db65f276f7..167f0f55334 100644 --- a/src/basic/log.c +++ b/src/basic/log.c @@ -1037,13 +1037,9 @@ int log_struct_iovec_internal( return -error; } - for (i = 0; i < n_input_iovec; i++) { - if (input_iovec[i].iov_len < STRLEN("MESSAGE=")) - continue; - - if (memcmp(input_iovec[i].iov_base, "MESSAGE=", STRLEN("MESSAGE=")) == 0) + for (i = 0; i < n_input_iovec; i++) + if (memory_startswith(input_iovec[i].iov_base, input_iovec[i].iov_len, "MESSAGE=")) break; - } if (_unlikely_(i >= n_input_iovec)) /* Couldn't find MESSAGE=? */ return -error; diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index c1f396b1ac7..1c470e60da8 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -852,21 +852,18 @@ static void map_context_fields(const struct iovec *iovec, const char* context[]) assert(context); for (i = 0; i < ELEMENTSOF(context_field_names); i++) { - size_t l; + char *p; if (!context_field_names[i]) continue; - l = strlen(context_field_names[i]); - if (iovec->iov_len < l) - continue; - - if (memcmp(iovec->iov_base, context_field_names[i], l) != 0) + p = memory_startswith(iovec->iov_base, iovec->iov_len, context_field_names[i]); + if (!p) continue; /* Note that these strings are NUL terminated, because we made sure that a trailing NUL byte is in the * buffer, though not included in the iov_len count. (see below) */ - context[i] = (char*) iovec->iov_base + l; + context[i] = p; break; } } diff --git a/src/import/curl-util.c b/src/import/curl-util.c index 0f81866d333..2fba6e29dd6 100644 --- a/src/import/curl-util.c +++ b/src/import/curl-util.c @@ -365,19 +365,14 @@ struct curl_slist *curl_slist_new(const char *first, ...) { } int curl_header_strdup(const void *contents, size_t sz, const char *field, char **value) { - const char *p = contents; - size_t l; + const char *p; char *s; - l = strlen(field); - if (sz < l) + p = memory_startswith(contents, sz, field); + if (!p) return 0; - if (memcmp(p, field, l) != 0) - return 0; - - p += l; - sz -= l; + sz -= p - (const char*) contents; if (memchr(p, 0, sz)) return 0; diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c index 04839bada41..57c5391423e 100644 --- a/src/libsystemd/sd-bus/bus-socket.c +++ b/src/libsystemd/sd-bus/bus-socket.c @@ -248,16 +248,13 @@ static bool line_equals(const char *s, size_t m, const char *line) { } static bool line_begins(const char *s, size_t m, const char *word) { - size_t l; - - l = strlen(word); - if (m < l) - return false; + const char *p; - if (memcmp(s, word, l) != 0) + p = memory_startswith(s, m, word); + if (!p) return false; - return m == l || (m > l && s[l] == ' '); + return IN_SET(*p, 0, ' '); } static int verify_anonymous_token(sd_bus *b, const char *p, size_t l) { diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c index 5ec9eed8ea7..f7f544c96c7 100644 --- a/src/shared/dns-domain.c +++ b/src/shared/dns-domain.c @@ -353,10 +353,7 @@ int dns_label_undo_idna(const char *encoded, size_t encoded_size, char *decoded, if (encoded_size <= 0 || encoded_size > DNS_LABEL_MAX) return -EINVAL; - if (encoded_size < sizeof(IDNA_ACE_PREFIX)-1) - return 0; - - if (memcmp(encoded, IDNA_ACE_PREFIX, sizeof(IDNA_ACE_PREFIX) -1) != 0) + if (!memory_startswith(encoded, encoded_size, IDNA_ACE_PREFIX)) return 0; input = stringprep_utf8_to_ucs4(encoded, encoded_size, &input_size); diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 47becbf37c3..af788391ad5 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -832,8 +832,7 @@ static int output_json( char *n; unsigned u; - if (length >= 9 && - memcmp(data, "_BOOT_ID=", 9) == 0) + if (memory_startswith(data, length, "_BOOT_ID=")) continue; eq = memchr(data, '=', length); @@ -882,10 +881,8 @@ static int output_json( size_t m; unsigned u; - /* We already printed the boot id, from the data in - * the header, hence let's suppress it here */ - if (length >= 9 && - memcmp(data, "_BOOT_ID=", 9) == 0) + /* We already printed the boot id, from the data in the header, hence let's suppress it here */ + if (memory_startswith(data, length, "_BOOT_ID=")) continue; eq = memchr(data, '=', length);