]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
wall: fix OSX getgrouplist, gid_t* vs int*
authorKarel Zak <kzak@redhat.com>
Wed, 14 Jun 2017 09:53:43 +0000 (11:53 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 14 Jun 2017 09:53:43 +0000 (11:53 +0200)
This was the compiler warning:

term-utils/wall.c:156:39: warning: passing 'gid_t *const' (aka 'unsigned int *const') to
parameter of type 'int *' converts between pointers to integer types with different sign
[-Wpointer-sign]
        rc = getgrouplist(login, pw->pw_gid, buf->groups, &ngroups);
                                             ^~~~~~~~~~~
/usr/include/unistd.h:653:43: note: passing argument to parameter here
int      getgrouplist(const char *, int, int *, int *);
                                              ^

Reported-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Signed-off-by: Karel Zak <kzak@redhat.com>
term-utils/wall.c

index a9dde15beb227b5bbee3450a1090ec1bff6223cb..44f9d5879db129c43ee932508f3409a7faa16c51 100644 (file)
@@ -102,7 +102,13 @@ static void __attribute__((__noreturn__)) usage(FILE *out)
 struct group_workspace {
        gid_t   requested_group;
        int     ngroups;
+
+/* getgrouplist() on OSX takes int* not gid_t* */
+#ifdef __APPLE__
+       int     *groups;
+#else
        gid_t   *groups;
+#endif
 };
 
 static gid_t get_group_gid(const char *optarg)
@@ -162,7 +168,7 @@ static int is_gr_member(const char *login, const struct group_workspace *buf)
        }
 
        for (; ngroups >= 0; --ngroups) {
-               if (buf->requested_group == buf->groups[ngroups])
+               if (buf->requested_group == (gid_t) buf->groups[ngroups])
                        return 1;
        }