mirror of
https://github.com/systemd/systemd.git
synced 2025-03-25 18:50:18 +03:00
util: introduce memmem_safe() and make use of it
GNU memmem() requires a nonnull first parameter. Let's introduce memmem_safe() that removes this restriction for zero-length parameters, and make use of it where appropriate. http://lists.freedesktop.org/archives/systemd-devel/2015-May/031705.html
This commit is contained in:
parent
aeb24f3081
commit
6e6c21c894
@ -177,7 +177,7 @@ static int bus_socket_auth_verify_client(sd_bus *b) {
|
||||
/* We expect two response lines: "OK" and possibly
|
||||
* "AGREE_UNIX_FD" */
|
||||
|
||||
e = memmem(b->rbuffer, b->rbuffer_size, "\r\n", 2);
|
||||
e = memmem_safe(b->rbuffer, b->rbuffer_size, "\r\n", 2);
|
||||
if (!e)
|
||||
return 0;
|
||||
|
||||
|
@ -787,6 +787,21 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size, comparison_
|
||||
qsort(base, nmemb, size, compar);
|
||||
}
|
||||
|
||||
/* Normal memmem() requires haystack to be nonnull, which is annoying for zero-length buffers */
|
||||
static inline void *memmem_safe(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen) {
|
||||
|
||||
if (needlelen <= 0)
|
||||
return (void*) haystack;
|
||||
|
||||
if (haystacklen < needlelen)
|
||||
return NULL;
|
||||
|
||||
assert(haystack);
|
||||
assert(needle);
|
||||
|
||||
return memmem(haystack, haystacklen, needle, needlelen);
|
||||
}
|
||||
|
||||
int proc_cmdline(char **ret);
|
||||
int parse_proc_cmdline(int (*parse_word)(const char *key, const char *value));
|
||||
int get_proc_cmdline_key(const char *parameter, char **value);
|
||||
|
Loading…
x
Reference in New Issue
Block a user