X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Flibudev%2Flibudev-util.c;h=714dc50ae9609911bbbb3d21c08c942bed8963cf;hp=2eb7907063bc41f098d27fa4199fa7b4cff6ae97;hb=6faa3dcbb8c2c9d89b23a39ca9be258c453255d9;hpb=d5a89d7dc17a5ba5cf4fc71f82963c5c94a31c3d diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c index 2eb790706..714dc50ae 100644 --- a/src/libudev/libudev-util.c +++ b/src/libudev/libudev-util.c @@ -83,7 +83,7 @@ uid_t util_lookup_user(struct udev *udev, const char *user) size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); char *buf = alloca(buflen); - if (strcmp(user, "root") == 0) + if (streq(user, "root")) return 0; uid = strtoul(user, &endptr, 10); if (endptr[0] == '\0') @@ -108,7 +108,7 @@ gid_t util_lookup_group(struct udev *udev, const char *group) size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); char *buf = NULL; - if (strcmp(group, "root") == 0) + if (streq(group, "root")) return 0; gid = strtoul(group, &endptr, 10); if (endptr[0] == '\0') @@ -241,8 +241,7 @@ int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size) return -EINVAL; base[0] = '\0'; } - if (base == NULL) - return -EINVAL; + strscpyl(base, size - (base - syspath), "/", &link_target[back * 3], NULL); return 0; } @@ -568,7 +567,7 @@ err: * Murmurhash is under the MIT license. * */ -static unsigned int murmur_hash2(const char *key, int len, unsigned int seed) +static unsigned int murmur_hash2(const char *key, size_t len, unsigned int seed) { /* * 'm' and 'r' are mixing constants generated offline. @@ -583,17 +582,18 @@ static unsigned int murmur_hash2(const char *key, int len, unsigned int seed) /* mix 4 bytes at a time into the hash */ const unsigned char * data = (const unsigned char *)key; - while(len >= 4) { - unsigned int k = *(unsigned int *)data; + while(len >= sizeof(unsigned int)) { + unsigned int k; + memcpy(&k, data, sizeof(k)); k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; - data += 4; - len -= 4; + data += sizeof(k); + len -= sizeof(k); } /* handle the last few bytes of the input array */