diff options
Diffstat (limited to 'main/udev/get_pw_r_size.patch')
-rw-r--r-- | main/udev/get_pw_r_size.patch | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/main/udev/get_pw_r_size.patch b/main/udev/get_pw_r_size.patch index 9ad9f6c978..3462920dfc 100644 --- a/main/udev/get_pw_r_size.patch +++ b/main/udev/get_pw_r_size.patch @@ -1,13 +1,32 @@ ---- ./libudev/libudev-util-private.c -+++ ./libudev/libudev-util-private.c.orig -@@ -133,8 +133,8 @@ +diff --git a/libudev/libudev-util-private.c b/libudev/libudev-util-private.c +index 2d7f8dc..19b67a4 100644 +--- a/libudev/libudev-util-private.c ++++ b/libudev/libudev-util-private.c +@@ -133,8 +133,8 @@ int util_unlink_secure(struct udev *udev, const char *filename) uid_t util_lookup_user(struct udev *udev, const char *user) { char *endptr; - size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); - char buf[buflen]; -+ int buflen = sysconf(_SC_GETPW_R_SIZE_MAX); -+ char buf[buflen>0 ? buflen : 1024]; ++ long buflen = sysconf(_SC_GETPW_R_SIZE_MAX); ++ char buf[buflen > 0 ? buflen : 1024]; struct passwd pwbuf; struct passwd *pw; uid_t uid; +@@ -158,12 +158,15 @@ uid_t util_lookup_user(struct udev *udev, const char *user) + gid_t util_lookup_group(struct udev *udev, const char *group) + { + char *endptr; +- size_t buflen = sysconf(_SC_GETGR_R_SIZE_MAX); ++ long buflen = sysconf(_SC_GETGR_R_SIZE_MAX); + char *buf; + struct group grbuf; + struct group *gr; + gid_t gid = 0; + ++ if (buflen < 0) ++ buflen = 1024; ++ + if (strcmp(group, "root") == 0) + return 0; + gid = strtoul(group, &endptr, 10); |