Skip to content

Commit f3e0bff

Browse files
authored
core: change uv_get_password uid/gid to unsigned (#3476)
Added in #742, these values are typically defined as unsigned (since Linux 2.4). Only -1 is special, representing an invalid id (e.g. see setreuid).
1 parent c2a345f commit f3e0bff

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

include/uv.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1133,8 +1133,8 @@ struct uv_interface_address_s {
11331133

11341134
struct uv_passwd_s {
11351135
char* username;
1136-
long uid;
1137-
long gid;
1136+
unsigned long uid;
1137+
unsigned long gid;
11381138
char* shell;
11391139
char* homedir;
11401140
};

test/test-get-passwd.c

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@
2222
#include "uv.h"
2323
#include "task.h"
2424
#include <string.h>
25+
#ifndef _WIN32
26+
#include <unistd.h>
27+
#include <sys/types.h>
28+
#endif
2529

2630
TEST_IMPL(get_passwd) {
2731
/* TODO(gengjiawen): Fix test on QEMU. */
@@ -64,11 +68,15 @@ TEST_IMPL(get_passwd) {
6468
#endif
6569

6670
#ifdef _WIN32
67-
ASSERT(pwd.uid == -1);
68-
ASSERT(pwd.gid == -1);
71+
ASSERT_EQ(pwd.uid, (unsigned)-1);
72+
ASSERT_EQ(pwd.gid, (unsigned)-1);
6973
#else
70-
ASSERT(pwd.uid >= 0);
71-
ASSERT(pwd.gid >= 0);
74+
ASSERT_NE(pwd.uid, (unsigned)-1);
75+
ASSERT_NE(pwd.gid, (unsigned)-1);
76+
ASSERT_EQ(pwd.uid, geteuid());
77+
if (pwd.uid != 0 && pwd.gid != getgid())
78+
/* This will be likely true, as only root could have changed it. */
79+
ASSERT_EQ(pwd.gid, getegid());
7280
#endif
7381

7482
/* Test uv_os_free_passwd() */

0 commit comments

Comments
 (0)