blob: 3462920dfc89a5678e1c9e77ad6b553e3f648505 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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];
+ 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);
|