This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ITP] libfakesu 1.0


D. Boland wrote:
Christian Franke wrote:
D. Boland wrote:
http://cygwin.boland.nl/x86/release/libfakesu/
A few notes regarding cygfakesu.c:

uid_t root_uid = 18;
gid_t root_gid = 544;

uid_t my_uid = -1;
gid_t my_gid = -1;

struct passwd my_pw;
struct group my_grp;

char str255[255];
...
uid_t uid_get(uid_t uid){
...
gid_t gid_get(gid_t gid){
...
etc...
Variables and functions not exported by the fakesu.h file should be
declared as static. Note that the cygfakesu.def file has no effect when
generating a static lib.
I added 'static' for un-exported symbols. Removed cygfakesu.def.

Thanks.

BTW: All these variables except root_uid/gid are not needed as static globals:

my_uid is only used to pass the uid from uid_get/set() to get/set(e)uid().

my_pw and str255 are only needed because su_getpwnam() calls getpwnam_r() instead of getpwnam().

etc.


int su_setgroups(int size, const gid_t *list){
...
     gid_t l[s];
...
     return setgroups(size, &l);
setgroups() 2nd parameter expects a type compatible to 'pointer to const
git_t'
The type of '&l' is 'pointer to array of git_t' :-)
(cosmetic in C, compilation would fail in C++):
I added typecasting, like this:

	return setgroups(size, (gid_t *) &l);

No cast is needed, simply remove the '&' operator:

  return setgroups(size, l);

Remember that a C array is implicitly converted to 'pointer to first element' in many cases, including the above.


Another unrelated suggestion:

Add defines to fakesu.h for other uid/gid related functions which are not implemented by fakesu:

#define setreuid(a,b)  getruid_MISSING(a,b)
#define getpwnam_r(a,b,c,d,e)  getpwnam_r_MISSING(a,b,c,d,e)
...

Thanks,
Christian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]