mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-01-20 21:39:21 +08:00
* (child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h,
fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc, fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h): Change usage of uid_t to __uid16_t, gid_t to __gid16_t and off_t to __off32_t throughout. Use INVALID_UID, INVALID_GID and INVALID_SEEK instead casting -1 to the appropriate type. * winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK. * include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t types. Don't declare acl functions when compiling Cygwin. * include/cygwin/grp.h: Declare getgrgid() and getgrnam() with correct types for internal usage.
This commit is contained in:
parent
a505db6554
commit
de4e0d3001
@ -1,3 +1,20 @@
|
||||
2002-02-10 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* (child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h,
|
||||
fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc,
|
||||
fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc,
|
||||
fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc,
|
||||
pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc,
|
||||
security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h):
|
||||
Change usage of uid_t to __uid16_t, gid_t to __gid16_t and
|
||||
off_t to __off32_t throughout. Use INVALID_UID, INVALID_GID and
|
||||
INVALID_SEEK instead casting -1 to the appropriate type.
|
||||
* winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK.
|
||||
* include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t
|
||||
types. Don't declare acl functions when compiling Cygwin.
|
||||
* include/cygwin/grp.h: Declare getgrgid() and getgrnam() with
|
||||
correct types for internal usage.
|
||||
|
||||
2002-02-10 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
Patch suggested by Pierre A. Humblet <Pierre.Humblet@ieee.org>:
|
||||
|
@ -70,7 +70,7 @@ class fhandler_base;
|
||||
class cygheap_exec_info
|
||||
{
|
||||
public:
|
||||
uid_t uid;
|
||||
__uid16_t uid;
|
||||
char *old_title;
|
||||
int argc;
|
||||
char **argv;
|
||||
|
@ -96,10 +96,10 @@ class cygheap_user
|
||||
char *pdomain; /* Logon domain of the user */
|
||||
PSID psid; /* buffer for user's SID */
|
||||
public:
|
||||
uid_t orig_uid; /* Remains intact even after impersonation */
|
||||
uid_t orig_gid; /* Ditto */
|
||||
uid_t real_uid; /* Remains intact on seteuid, replaced by setuid */
|
||||
gid_t real_gid; /* Ditto */
|
||||
__uid16_t orig_uid; /* Remains intact even after impersonation */
|
||||
__uid16_t orig_gid; /* Ditto */
|
||||
__uid16_t real_uid; /* Remains intact on seteuid, replaced by setuid */
|
||||
__gid16_t real_gid; /* Ditto */
|
||||
|
||||
/* token is needed if set(e)uid should be called. It can be set by a call
|
||||
to `set_impersonation_token()'. */
|
||||
|
@ -623,7 +623,7 @@ dll_crt0_1 ()
|
||||
}
|
||||
if (child_proc_info->subproc_ready)
|
||||
ProtectHandle (child_proc_info->subproc_ready);
|
||||
if (myself->uid == USHRT_MAX)
|
||||
if (myself->uid == ILLEGAL_UID)
|
||||
cygheap->user.set_sid (NULL);
|
||||
break;
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ readdir (DIR *dir)
|
||||
}
|
||||
|
||||
/* telldir */
|
||||
extern "C" off_t
|
||||
extern "C" __off32_t
|
||||
telldir (DIR *dir)
|
||||
{
|
||||
if (check_null_invalid_struct_errno (dir))
|
||||
@ -132,7 +132,7 @@ telldir (DIR *dir)
|
||||
|
||||
/* seekdir */
|
||||
extern "C" void
|
||||
seekdir (DIR *dir, off_t loc)
|
||||
seekdir (DIR *dir, __off32_t loc)
|
||||
{
|
||||
if (check_null_invalid_struct_errno (dir))
|
||||
return;
|
||||
|
@ -693,10 +693,10 @@ fhandler_base::write (const void *ptr, size_t len)
|
||||
return res;
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_base::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_base::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
off_t res;
|
||||
__off32_t res;
|
||||
|
||||
/* Seeks on text files is tough, we rewind and read till we get to the
|
||||
right place. */
|
||||
@ -1181,7 +1181,7 @@ fhandler_base::readdir (DIR *)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
off_t
|
||||
__off32_t
|
||||
fhandler_base::telldir (DIR *)
|
||||
{
|
||||
set_errno (ENOTDIR);
|
||||
@ -1189,7 +1189,7 @@ fhandler_base::telldir (DIR *)
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_base::seekdir (DIR *, off_t)
|
||||
fhandler_base::seekdir (DIR *, __off32_t)
|
||||
{
|
||||
set_errno (ENOTDIR);
|
||||
return;
|
||||
|
@ -288,13 +288,13 @@ class fhandler_base
|
||||
virtual char const * ttyname () { return get_name(); }
|
||||
virtual int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
virtual int write (const void *ptr, size_t len);
|
||||
virtual off_t lseek (off_t offset, int whence);
|
||||
virtual __off32_t lseek (__off32_t offset, int whence);
|
||||
virtual int lock (int, struct flock *);
|
||||
virtual void dump ();
|
||||
virtual int dup (fhandler_base *child);
|
||||
|
||||
virtual HANDLE mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off);
|
||||
int flags, __off32_t off);
|
||||
virtual int munmap (HANDLE h, caddr_t addr, size_t len);
|
||||
virtual int msync (HANDLE h, caddr_t addr, size_t len, int flags);
|
||||
virtual BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
|
||||
@ -347,8 +347,8 @@ class fhandler_base
|
||||
virtual void set_eof () {}
|
||||
virtual DIR *opendir (path_conv& pc);
|
||||
virtual dirent *readdir (DIR *);
|
||||
virtual off_t telldir (DIR *);
|
||||
virtual void seekdir (DIR *, off_t);
|
||||
virtual __off32_t telldir (DIR *);
|
||||
virtual void seekdir (DIR *, __off32_t);
|
||||
virtual void rewinddir (DIR *);
|
||||
virtual int closedir (DIR *);
|
||||
};
|
||||
@ -382,7 +382,7 @@ class fhandler_socket: public fhandler_base
|
||||
|
||||
int ioctl (unsigned int cmd, void *);
|
||||
int fcntl (int cmd, void *);
|
||||
off_t lseek (off_t, int) { return 0; }
|
||||
__off32_t lseek (__off32_t, int) { return 0; }
|
||||
int close ();
|
||||
void hclose (HANDLE) {close ();}
|
||||
int dup (fhandler_base *child);
|
||||
@ -417,7 +417,7 @@ class fhandler_pipe: public fhandler_base
|
||||
unsigned id;
|
||||
public:
|
||||
fhandler_pipe (DWORD devtype);
|
||||
off_t lseek (off_t offset, int whence);
|
||||
__off32_t lseek (__off32_t offset, int whence);
|
||||
select_record *select_read (select_record *s);
|
||||
select_record *select_write (select_record *s);
|
||||
select_record *select_except (select_record *s);
|
||||
@ -489,7 +489,7 @@ class fhandler_dev_floppy: public fhandler_dev_raw
|
||||
virtual int open (path_conv *, int flags, mode_t mode = 0);
|
||||
virtual int close (void);
|
||||
|
||||
virtual off_t lseek (off_t offset, int whence);
|
||||
virtual __off32_t lseek (__off32_t offset, int whence);
|
||||
|
||||
virtual int ioctl (unsigned int cmd, void *buf);
|
||||
};
|
||||
@ -512,7 +512,7 @@ class fhandler_dev_tape: public fhandler_dev_raw
|
||||
int open (path_conv *, int flags, mode_t mode = 0);
|
||||
int close (void);
|
||||
|
||||
off_t lseek (off_t offset, int whence);
|
||||
__off32_t lseek (__off32_t offset, int whence);
|
||||
|
||||
int __stdcall fstat (struct stat *buf, path_conv *) __attribute__ ((regparm (3)));
|
||||
|
||||
@ -548,15 +548,15 @@ class fhandler_disk_file: public fhandler_base
|
||||
int __stdcall fstat (struct stat *buf, path_conv *pc) __attribute__ ((regparm (3)));
|
||||
int __stdcall fstat_helper (struct stat *buf) __attribute__ ((regparm (2)));
|
||||
|
||||
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, off_t off);
|
||||
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, __off32_t off);
|
||||
int munmap (HANDLE h, caddr_t addr, size_t len);
|
||||
int msync (HANDLE h, caddr_t addr, size_t len, int flags);
|
||||
BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
|
||||
DWORD size, void *address);
|
||||
DIR *opendir (path_conv& pc);
|
||||
struct dirent *readdir (DIR *);
|
||||
off_t telldir (DIR *);
|
||||
void seekdir (DIR *, off_t);
|
||||
__off32_t telldir (DIR *);
|
||||
void seekdir (DIR *, __off32_t);
|
||||
void rewinddir (DIR *);
|
||||
int closedir (DIR *);
|
||||
};
|
||||
@ -572,8 +572,8 @@ class fhandler_cygdrive: public fhandler_disk_file
|
||||
fhandler_cygdrive (int unit);
|
||||
DIR *opendir (path_conv& pc);
|
||||
struct dirent *readdir (DIR *);
|
||||
off_t telldir (DIR *);
|
||||
void seekdir (DIR *, off_t);
|
||||
__off32_t telldir (DIR *);
|
||||
void seekdir (DIR *, __off32_t);
|
||||
void rewinddir (DIR *);
|
||||
int closedir (DIR *);
|
||||
int __stdcall fstat (struct stat *buf, path_conv *pc) __attribute__ ((regparm (3)));
|
||||
@ -606,7 +606,7 @@ class fhandler_serial: public fhandler_base
|
||||
int tcflow (int);
|
||||
int tcsetattr (int a, const struct termios *t);
|
||||
int tcgetattr (struct termios *t);
|
||||
off_t lseek (off_t, int) { return 0; }
|
||||
__off32_t lseek (__off32_t, int) { return 0; }
|
||||
int tcflush (int);
|
||||
void dump ();
|
||||
int is_tty () { return 1; }
|
||||
@ -837,7 +837,7 @@ class fhandler_tty_slave: public fhandler_tty_common
|
||||
int tcflush (int);
|
||||
int ioctl (unsigned int cmd, void *);
|
||||
|
||||
off_t lseek (off_t, int) { return 0; }
|
||||
__off32_t lseek (__off32_t, int) { return 0; }
|
||||
select_record *select_read (select_record *s);
|
||||
int ready_for_read (int fd, DWORD howlong);
|
||||
};
|
||||
@ -864,7 +864,7 @@ class fhandler_pty_master: public fhandler_tty_common
|
||||
int tcflush (int);
|
||||
int ioctl (unsigned int cmd, void *);
|
||||
|
||||
off_t lseek (off_t, int) { return 0; }
|
||||
__off32_t lseek (__off32_t, int) { return 0; }
|
||||
char *ptsname ();
|
||||
|
||||
void set_close_on_exec (int val);
|
||||
@ -903,7 +903,7 @@ class fhandler_dev_zero: public fhandler_base
|
||||
int open (path_conv *, int flags, mode_t mode = 0);
|
||||
int write (const void *ptr, size_t len);
|
||||
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
off_t lseek (off_t offset, int whence);
|
||||
__off32_t lseek (__off32_t offset, int whence);
|
||||
int close (void);
|
||||
|
||||
void dump ();
|
||||
@ -926,7 +926,7 @@ class fhandler_dev_random: public fhandler_base
|
||||
int open (path_conv *, int flags, mode_t mode = 0);
|
||||
int write (const void *ptr, size_t len);
|
||||
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
off_t lseek (off_t offset, int whence);
|
||||
__off32_t lseek (__off32_t offset, int whence);
|
||||
int close (void);
|
||||
int dup (fhandler_base *child);
|
||||
|
||||
@ -947,12 +947,12 @@ class fhandler_dev_mem: public fhandler_base
|
||||
int open (path_conv *, int flags, mode_t mode = 0);
|
||||
int write (const void *ptr, size_t ulen);
|
||||
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
off_t lseek (off_t offset, int whence);
|
||||
__off32_t lseek (__off32_t offset, int whence);
|
||||
int close (void);
|
||||
int __stdcall fstat (struct stat *buf, path_conv *) __attribute__ ((regparm (3)));
|
||||
int dup (fhandler_base *child);
|
||||
|
||||
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, off_t off);
|
||||
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, __off32_t off);
|
||||
int munmap (HANDLE h, caddr_t addr, size_t len);
|
||||
int msync (HANDLE h, caddr_t addr, size_t len, int flags);
|
||||
BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
|
||||
@ -969,7 +969,7 @@ class fhandler_dev_clipboard: public fhandler_base
|
||||
int open (path_conv *, int flags, mode_t mode = 0);
|
||||
int write (const void *ptr, size_t len);
|
||||
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
off_t lseek (off_t offset, int whence);
|
||||
__off32_t lseek (__off32_t offset, int whence);
|
||||
int close (void);
|
||||
|
||||
int dup (fhandler_base *child);
|
||||
@ -977,7 +977,7 @@ class fhandler_dev_clipboard: public fhandler_base
|
||||
void dump ();
|
||||
|
||||
private:
|
||||
off_t pos;
|
||||
__off32_t pos;
|
||||
void *membuffer;
|
||||
size_t msize;
|
||||
bool eof;
|
||||
@ -995,7 +995,7 @@ class fhandler_windows: public fhandler_base
|
||||
int write (const void *ptr, size_t len);
|
||||
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
int ioctl (unsigned int cmd, void *);
|
||||
off_t lseek (off_t, int) { return 0; }
|
||||
__off32_t lseek (__off32_t, int) { return 0; }
|
||||
int close (void) { return 0; }
|
||||
|
||||
void set_close_on_exec (int val);
|
||||
@ -1021,7 +1021,7 @@ class fhandler_dev_dsp : public fhandler_base
|
||||
int write (const void *ptr, size_t len);
|
||||
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
|
||||
int ioctl (unsigned int cmd, void *);
|
||||
off_t lseek (off_t, int);
|
||||
__off32_t lseek (__off32_t, int);
|
||||
int close (void);
|
||||
int dup (fhandler_base * child);
|
||||
void dump (void);
|
||||
|
@ -246,8 +246,8 @@ fhandler_dev_clipboard::read (void *ptr, size_t len)
|
||||
}
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_clipboard::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_dev_clipboard::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
/* On reads we check this at read time, not seek time.
|
||||
* On writes we use this to decide how to write - empty and write, or open, copy, empty
|
||||
|
@ -65,8 +65,8 @@ fhandler_disk_file::fstat (struct stat *buf, path_conv *pc)
|
||||
{
|
||||
int res = -1;
|
||||
int oret;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
__uid16_t uid;
|
||||
__gid16_t gid;
|
||||
int open_flags = O_RDONLY | O_BINARY | O_DIROPEN;
|
||||
|
||||
if (!pc)
|
||||
@ -455,7 +455,7 @@ fhandler_disk_file::lock (int cmd, struct flock *fl)
|
||||
startpos = 0;
|
||||
break;
|
||||
case SEEK_CUR:
|
||||
if ((off_t) (startpos = lseek (0, SEEK_CUR)) == (off_t)-1)
|
||||
if ((__off32_t) (startpos = lseek (0, SEEK_CUR)) == ILLEGAL_SEEK)
|
||||
return -1;
|
||||
break;
|
||||
case SEEK_END:
|
||||
@ -714,14 +714,14 @@ fhandler_disk_file::readdir (DIR *dir)
|
||||
return res;
|
||||
}
|
||||
|
||||
off_t
|
||||
__off32_t
|
||||
fhandler_disk_file::telldir (DIR *dir)
|
||||
{
|
||||
return dir->__d_position;
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_disk_file::seekdir (DIR *dir, off_t loc)
|
||||
fhandler_disk_file::seekdir (DIR *dir, __off32_t loc)
|
||||
{
|
||||
rewinddir (dir);
|
||||
while (loc > dir->__d_position)
|
||||
@ -818,14 +818,14 @@ fhandler_cygdrive::readdir (DIR *dir)
|
||||
return dir->__d_dirent;
|
||||
}
|
||||
|
||||
off_t
|
||||
__off32_t
|
||||
fhandler_cygdrive::telldir (DIR *dir)
|
||||
{
|
||||
return fhandler_disk_file::telldir (dir);
|
||||
}
|
||||
|
||||
void
|
||||
fhandler_cygdrive::seekdir (DIR *dir, off_t loc)
|
||||
fhandler_cygdrive::seekdir (DIR *dir, __off32_t loc)
|
||||
{
|
||||
if (!iscygdrive_root ())
|
||||
return fhandler_disk_file::seekdir (dir, loc);
|
||||
|
@ -482,8 +482,8 @@ fhandler_dev_dsp::read (void *ptr, size_t len)
|
||||
return len;
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_dsp::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_dev_dsp::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -77,16 +77,16 @@ fhandler_dev_floppy::close (void)
|
||||
return fhandler_dev_raw::close ();
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_floppy::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_dev_floppy::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
int ret;
|
||||
char buf[512];
|
||||
long long drive_size = 0;
|
||||
long long lloffset = offset;
|
||||
long long current_position;
|
||||
off_t sector_aligned_offset;
|
||||
off_t bytes_left;
|
||||
__off32_t sector_aligned_offset;
|
||||
__off32_t bytes_left;
|
||||
DWORD low;
|
||||
LONG high = 0;
|
||||
|
||||
@ -158,12 +158,12 @@ fhandler_dev_floppy::lseek (off_t offset, int whence)
|
||||
}
|
||||
high = lloffset >> 32;
|
||||
low = lloffset & 0xffffffff;
|
||||
if (high || (off_t) low < 0)
|
||||
if (high || (__off32_t) low < 0)
|
||||
{
|
||||
set_errno (EFBIG);
|
||||
return -1;
|
||||
}
|
||||
offset = (off_t) low;
|
||||
offset = (__off32_t) low;
|
||||
|
||||
/* FIXME: sector can possibly be not 512 bytes long */
|
||||
sector_aligned_offset = (offset / 512) * 512;
|
||||
|
@ -231,8 +231,8 @@ fhandler_dev_mem::close (void)
|
||||
return fhandler_base::close ();
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_mem::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_dev_mem::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
switch (whence)
|
||||
{
|
||||
@ -251,13 +251,13 @@ fhandler_dev_mem::lseek (off_t offset, int whence)
|
||||
|
||||
default:
|
||||
set_errno (EINVAL);
|
||||
return (off_t) -1;
|
||||
return ILLEGAL_SEEK;
|
||||
}
|
||||
|
||||
if (pos > mem_size)
|
||||
{
|
||||
set_errno (EINVAL);
|
||||
return (off_t) -1;
|
||||
return ILLEGAL_SEEK;
|
||||
}
|
||||
|
||||
return pos;
|
||||
@ -265,7 +265,7 @@ fhandler_dev_mem::lseek (off_t offset, int whence)
|
||||
|
||||
HANDLE
|
||||
fhandler_dev_mem::mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off)
|
||||
int flags, __off32_t off)
|
||||
{
|
||||
if ((DWORD) off >= mem_size
|
||||
|| (DWORD) len >= mem_size
|
||||
|
@ -132,8 +132,8 @@ fhandler_dev_random::read (void *ptr, size_t len)
|
||||
return -1;
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_random::lseek (off_t, int)
|
||||
__off32_t
|
||||
fhandler_dev_random::lseek (__off32_t, int)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -164,8 +164,8 @@ fhandler_dev_tape::fstat (struct stat *buf, path_conv *pc)
|
||||
return ret;
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_tape::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_dev_tape::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
struct mtop op;
|
||||
struct mtpos pos;
|
||||
@ -179,7 +179,7 @@ fhandler_dev_tape::lseek (off_t offset, int whence)
|
||||
|
||||
if (ioctl (MTIOCPOS, &pos))
|
||||
{
|
||||
return (off_t) -1;
|
||||
return ILLEGAL_SEEK;
|
||||
}
|
||||
|
||||
switch (whence)
|
||||
|
@ -41,8 +41,8 @@ fhandler_dev_zero::read (void *ptr, size_t len)
|
||||
return len;
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_dev_zero::lseek (off_t, int)
|
||||
__off32_t
|
||||
fhandler_dev_zero::lseek (__off32_t, int)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ details. */
|
||||
on the first call that needs information from it. */
|
||||
|
||||
static NO_COPY const char *etc_group = "/etc/group";
|
||||
static struct group *group_buf; /* group contents in memory */
|
||||
static struct __group16 *group_buf; /* group contents in memory */
|
||||
static int curr_lines;
|
||||
static int max_lines;
|
||||
|
||||
@ -46,7 +46,7 @@ static int grp_pos = 0;
|
||||
static pwdgrp_check group_state;
|
||||
|
||||
static int
|
||||
parse_grp (struct group &grp, const char *line)
|
||||
parse_grp (struct __group16 &grp, const char *line)
|
||||
{
|
||||
int len = strlen(line);
|
||||
char *newline = (char *) malloc (len + 1);
|
||||
@ -111,7 +111,7 @@ add_grp_line (const char *line)
|
||||
if (curr_lines == max_lines)
|
||||
{
|
||||
max_lines += 10;
|
||||
group_buf = (struct group *) realloc (group_buf, max_lines * sizeof (struct group));
|
||||
group_buf = (struct __group16 *) realloc (group_buf, max_lines * sizeof (struct __group16));
|
||||
}
|
||||
if (parse_grp (group_buf[curr_lines], line))
|
||||
curr_lines++;
|
||||
@ -208,10 +208,10 @@ read_etc_group ()
|
||||
}
|
||||
|
||||
extern "C"
|
||||
struct group *
|
||||
getgrgid (gid_t gid)
|
||||
struct __group16 *
|
||||
getgrgid (__gid16_t gid)
|
||||
{
|
||||
struct group * default_grp = NULL;
|
||||
struct __group16 * default_grp = NULL;
|
||||
if (group_state <= initializing)
|
||||
read_etc_group();
|
||||
|
||||
@ -227,7 +227,7 @@ getgrgid (gid_t gid)
|
||||
}
|
||||
|
||||
extern "C"
|
||||
struct group *
|
||||
struct __group16 *
|
||||
getgrnam (const char *name)
|
||||
{
|
||||
if (group_state <= initializing)
|
||||
@ -249,7 +249,7 @@ endgrent()
|
||||
}
|
||||
|
||||
extern "C"
|
||||
struct group *
|
||||
struct __group16 *
|
||||
getgrent()
|
||||
{
|
||||
if (group_state <= initializing)
|
||||
@ -269,7 +269,7 @@ setgrent ()
|
||||
}
|
||||
|
||||
/* Internal function. ONLY USE THIS INTERNALLY, NEVER `getgrent'!!! */
|
||||
struct group *
|
||||
struct __group16 *
|
||||
internal_getgrent (int pos)
|
||||
{
|
||||
if (group_state <= initializing)
|
||||
@ -281,12 +281,12 @@ internal_getgrent (int pos)
|
||||
}
|
||||
|
||||
int
|
||||
getgroups (int gidsetsize, gid_t *grouplist, gid_t gid, const char *username)
|
||||
getgroups (int gidsetsize, __gid16_t *grouplist, __gid16_t gid, const char *username)
|
||||
{
|
||||
HANDLE hToken = NULL;
|
||||
DWORD size;
|
||||
int cnt = 0;
|
||||
struct group *gr;
|
||||
struct __group16 *gr;
|
||||
|
||||
if (group_state <= initializing)
|
||||
read_etc_group();
|
||||
@ -356,14 +356,14 @@ error:
|
||||
|
||||
extern "C"
|
||||
int
|
||||
getgroups (int gidsetsize, gid_t *grouplist)
|
||||
getgroups (int gidsetsize, __gid16_t *grouplist)
|
||||
{
|
||||
return getgroups (gidsetsize, grouplist, myself->gid, cygheap->user.name ());
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int
|
||||
initgroups (const char *, gid_t)
|
||||
initgroups (const char *, __gid16_t)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -58,12 +58,27 @@ extern "C" {
|
||||
#define MASK CLASS_OBJ
|
||||
#define OTHER OTHER_OBJ
|
||||
|
||||
typedef struct acl {
|
||||
#ifdef __INSIDE_CYGWIN__
|
||||
typedef struct __acl16 {
|
||||
int a_type; /* entry type */
|
||||
__uid16_t a_id; /* UID | GID */
|
||||
mode_t a_perm; /* permissions */
|
||||
} __aclent16_t;
|
||||
|
||||
typedef struct __acl32 {
|
||||
int a_type; /* entry type */
|
||||
__uid32_t a_id; /* UID | GID */
|
||||
mode_t a_perm; /* permissions */
|
||||
} __aclent32_t;
|
||||
#endif
|
||||
|
||||
typedef struct __acl {
|
||||
int a_type; /* entry type */
|
||||
uid_t a_id; /* UID | GID */
|
||||
mode_t a_perm; /* permissions */
|
||||
} aclent_t;
|
||||
} __aclent_t;
|
||||
|
||||
#ifndef __INSIDE_CYGWIN__
|
||||
int _EXFUN(acl,(const char *path, int cmd, int nentries, aclent_t *aclbufp));
|
||||
int _EXFUN(lacl,(const char *path, int cmd, int nentries, aclent_t *aclbufp));
|
||||
int _EXFUN(facl,(int fd, int cmd, int nentries, aclent_t *aclbufp));
|
||||
@ -75,6 +90,7 @@ int _EXFUN(acltopbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp));
|
||||
int _EXFUN(aclfrompbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp));
|
||||
char *_EXFUN(acltotext,(aclent_t *aclbufp, int aclcnt));
|
||||
aclent_t *_EXFUN(aclfromtext,(char *acltextp, int *aclcnt));
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -34,6 +34,9 @@ struct __group32
|
||||
__gid32_t gr_gid;
|
||||
char **gr_mem;
|
||||
};
|
||||
|
||||
struct __group16 * getgrgid (__gid16_t gid);
|
||||
struct __group16 * getgrnam (const char *name);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -256,7 +256,7 @@ public:
|
||||
mmap_record *add_record (mmap_record r);
|
||||
void erase (int i);
|
||||
mmap_record *match (DWORD off, DWORD len);
|
||||
off_t match (caddr_t addr, DWORD len, off_t start);
|
||||
__off32_t match (caddr_t addr, DWORD len, __off32_t start);
|
||||
};
|
||||
|
||||
list::list ()
|
||||
@ -307,14 +307,14 @@ list::match (DWORD off, DWORD len)
|
||||
}
|
||||
|
||||
/* Used in munmap() */
|
||||
off_t
|
||||
list::match (caddr_t addr, DWORD len, off_t start)
|
||||
__off32_t
|
||||
list::match (caddr_t addr, DWORD len, __off32_t start)
|
||||
{
|
||||
for (int i = start + 1; i < nrecs; ++i)
|
||||
if (addr >= recs[i].get_address ()
|
||||
&& addr + len <= recs[i].get_address () + recs[i].get_size ())
|
||||
return i;
|
||||
return (off_t)-1;
|
||||
return ILLEGAL_SEEK;
|
||||
}
|
||||
|
||||
void
|
||||
@ -400,7 +400,7 @@ static map *mmapped_areas;
|
||||
|
||||
extern "C"
|
||||
caddr_t
|
||||
mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t off)
|
||||
mmap (caddr_t addr, size_t len, int prot, int flags, int fd, __off32_t off)
|
||||
{
|
||||
syscall_printf ("addr %x, len %d, prot %x, flags %x, fd %d, off %d",
|
||||
addr, len, prot, flags, fd, off);
|
||||
@ -589,7 +589,7 @@ munmap (caddr_t addr, size_t len)
|
||||
list *l = mmapped_areas->lists[it];
|
||||
if (l)
|
||||
{
|
||||
off_t li = -1;
|
||||
__off32_t li = ILLEGAL_SEEK;
|
||||
if ((li = l->match(addr, len, li)) >= 0)
|
||||
{
|
||||
mmap_record *rec = l->recs + li;
|
||||
@ -695,7 +695,7 @@ msync (caddr_t addr, size_t len, int flags)
|
||||
*/
|
||||
HANDLE
|
||||
fhandler_base::mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off)
|
||||
int flags, __off32_t off)
|
||||
{
|
||||
set_errno (ENODEV);
|
||||
return INVALID_HANDLE_VALUE;
|
||||
@ -726,7 +726,7 @@ fhandler_base::fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
|
||||
/* Implementation for disk files. */
|
||||
HANDLE
|
||||
fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off)
|
||||
int flags, __off32_t off)
|
||||
{
|
||||
DWORD protect;
|
||||
|
||||
|
@ -183,7 +183,7 @@ read_etc_passwd ()
|
||||
/* Cygwin internal */
|
||||
/* If this ever becomes non-reentrant, update all the getpw*_r functions */
|
||||
static struct passwd *
|
||||
search_for (uid_t uid, const char *name)
|
||||
search_for (__uid16_t uid, const char *name)
|
||||
{
|
||||
struct passwd *res = 0;
|
||||
struct passwd *default_pw = 0;
|
||||
@ -214,7 +214,7 @@ search_for (uid_t uid, const char *name)
|
||||
}
|
||||
|
||||
extern "C" struct passwd *
|
||||
getpwuid (uid_t uid)
|
||||
getpwuid (__uid16_t uid)
|
||||
{
|
||||
if (passwd_state <= initializing)
|
||||
read_etc_passwd ();
|
||||
@ -225,7 +225,7 @@ getpwuid (uid_t uid)
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
getpwuid_r (uid_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result)
|
||||
getpwuid_r (__uid16_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result)
|
||||
{
|
||||
*result = NULL;
|
||||
|
||||
@ -337,7 +337,7 @@ getpwent (void)
|
||||
}
|
||||
|
||||
extern "C" struct passwd *
|
||||
getpwduid (uid_t)
|
||||
getpwduid (__uid16_t)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ pinfo_init (char **envp, int envc)
|
||||
myself->ppid = 1;
|
||||
myself->pgid = myself->sid = myself->pid;
|
||||
myself->ctty = -1;
|
||||
myself->uid = USHRT_MAX;
|
||||
myself->uid = ILLEGAL_UID;
|
||||
|
||||
environ_init (NULL, 0); /* call after myself has been set up */
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ public:
|
||||
if not found. This data resides in the shared data area (allowing
|
||||
tasks to store whatever they want here) so it's for informational
|
||||
purposes only. */
|
||||
uid_t uid; /* User ID */
|
||||
gid_t gid; /* Group ID */
|
||||
__uid16_t uid; /* User ID */
|
||||
__gid16_t gid; /* Group ID */
|
||||
pid_t pgid; /* Process group ID */
|
||||
pid_t sid; /* Session ID */
|
||||
int ctty; /* Control tty */
|
||||
|
@ -31,8 +31,8 @@ fhandler_pipe::fhandler_pipe (DWORD devtype)
|
||||
{
|
||||
}
|
||||
|
||||
off_t
|
||||
fhandler_pipe::lseek (off_t offset, int whence)
|
||||
__off32_t
|
||||
fhandler_pipe::lseek (__off32_t offset, int whence)
|
||||
{
|
||||
debug_printf ("(%d, %d)", offset, whence);
|
||||
set_errno (ESPIPE);
|
||||
|
@ -34,8 +34,11 @@ details. */
|
||||
#include "pinfo.h"
|
||||
#include "cygheap.h"
|
||||
|
||||
extern "C" int aclsort (int nentries, int, __aclent16_t *aclbufp);
|
||||
extern "C" int acl (const char *path, int cmd, int nentries, __aclent16_t *aclbufp);
|
||||
|
||||
static int
|
||||
searchace (aclent_t *aclp, int nentries, int type, int id = -1)
|
||||
searchace (__aclent16_t *aclp, int nentries, int type, int id = -1)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -47,7 +50,7 @@ searchace (aclent_t *aclp, int nentries, int type, int id = -1)
|
||||
}
|
||||
|
||||
static int
|
||||
setacl (const char *file, int nentries, aclent_t *aclbufp)
|
||||
setacl (const char *file, int nentries, __aclent16_t *aclbufp)
|
||||
{
|
||||
DWORD sd_size = 4096;
|
||||
char sd_buf[4096];
|
||||
@ -106,7 +109,7 @@ setacl (const char *file, int nentries, aclent_t *aclbufp)
|
||||
|
||||
cygsid sid;
|
||||
struct passwd *pw;
|
||||
struct group *gr;
|
||||
struct __group16 *gr;
|
||||
int pos;
|
||||
|
||||
if (!InitializeAcl (acl, 3072, ACL_REVISION))
|
||||
@ -213,7 +216,7 @@ setacl (const char *file, int nentries, aclent_t *aclbufp)
|
||||
}
|
||||
|
||||
static void
|
||||
getace (aclent_t &acl, int type, int id, DWORD win_ace_mask, DWORD win_ace_type)
|
||||
getace (__aclent16_t &acl, int type, int id, DWORD win_ace_mask, DWORD win_ace_type)
|
||||
{
|
||||
acl.a_type = type;
|
||||
acl.a_id = id;
|
||||
@ -238,7 +241,7 @@ getace (aclent_t &acl, int type, int id, DWORD win_ace_mask, DWORD win_ace_type)
|
||||
}
|
||||
|
||||
static int
|
||||
getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
|
||||
getacl (const char *file, DWORD attr, int nentries, __aclent16_t *aclbufp)
|
||||
{
|
||||
DWORD sd_size = 4096;
|
||||
char sd_buf[4096];
|
||||
@ -254,8 +257,8 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
|
||||
PSID owner_sid;
|
||||
PSID group_sid;
|
||||
BOOL dummy;
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
__uid16_t uid;
|
||||
__gid16_t gid;
|
||||
|
||||
if (!GetSecurityDescriptorOwner (psd, &owner_sid, &dummy))
|
||||
{
|
||||
@ -273,8 +276,8 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
|
||||
}
|
||||
gid = cygsid (group_sid).get_gid ();
|
||||
|
||||
aclent_t lacl[MAX_ACL_ENTRIES];
|
||||
memset (&lacl, 0, MAX_ACL_ENTRIES * sizeof (aclent_t));
|
||||
__aclent16_t lacl[MAX_ACL_ENTRIES];
|
||||
memset (&lacl, 0, MAX_ACL_ENTRIES * sizeof (__aclent16_t));
|
||||
lacl[0].a_type = USER_OBJ;
|
||||
lacl[0].a_id = uid;
|
||||
lacl[1].a_type = GROUP_OBJ;
|
||||
@ -298,7 +301,7 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
|
||||
for (pos = 0; pos < MIN_ACL_ENTRIES; ++pos)
|
||||
lacl[pos].a_perm = S_IRWXU | S_IRWXG | S_IRWXO;
|
||||
pos = nentries < MIN_ACL_ENTRIES ? nentries : MIN_ACL_ENTRIES;
|
||||
memcpy (aclbufp, lacl, pos * sizeof (aclent_t));
|
||||
memcpy (aclbufp, lacl, pos * sizeof (__aclent16_t));
|
||||
return pos;
|
||||
}
|
||||
|
||||
@ -389,7 +392,7 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
|
||||
if (pos > nentries)
|
||||
pos = nentries;
|
||||
if (aclbufp)
|
||||
memcpy (aclbufp, lacl, pos * sizeof (aclent_t));
|
||||
memcpy (aclbufp, lacl, pos * sizeof (__aclent16_t));
|
||||
aclsort (pos, 0, aclbufp);
|
||||
syscall_printf ("%d = getacl (%s)", pos, file);
|
||||
return pos;
|
||||
@ -398,7 +401,7 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
|
||||
int
|
||||
acl_access (const char *path, int flags)
|
||||
{
|
||||
aclent_t acls[MAX_ACL_ENTRIES];
|
||||
__aclent16_t acls[MAX_ACL_ENTRIES];
|
||||
int cnt;
|
||||
|
||||
if ((cnt = acl (path, GETACL, MAX_ACL_ENTRIES, acls)) < 1)
|
||||
@ -423,7 +426,7 @@ acl_access (const char *path, int flags)
|
||||
cygsid owner;
|
||||
cygsid group;
|
||||
struct passwd *pw;
|
||||
struct group *gr = NULL;
|
||||
struct __group16 *gr = NULL;
|
||||
|
||||
if ((pw = getpwuid (acls[i].a_id)) != NULL
|
||||
&& owner.getfrompw (pw))
|
||||
@ -460,7 +463,7 @@ acl_access (const char *path, int flags)
|
||||
|
||||
static
|
||||
int
|
||||
acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
|
||||
acl_worker (const char *path, int cmd, int nentries, __aclent16_t *aclbufp,
|
||||
int nofollow)
|
||||
{
|
||||
extern suffix_info stat_suffixes[];
|
||||
@ -487,7 +490,7 @@ acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
|
||||
else if ((nofollow && !lstat (path, &st))
|
||||
|| (!nofollow && !stat (path, &st)))
|
||||
{
|
||||
aclent_t lacl[4];
|
||||
__aclent16_t lacl[4];
|
||||
if (nentries > 0)
|
||||
{
|
||||
lacl[0].a_type = USER_OBJ;
|
||||
@ -523,7 +526,7 @@ acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
|
||||
if (nentries > 4)
|
||||
nentries = 4;
|
||||
if (aclbufp)
|
||||
memcpy (aclbufp, lacl, nentries * sizeof (aclent_t));
|
||||
memcpy (aclbufp, lacl, nentries * sizeof (__aclent16_t));
|
||||
ret = nentries;
|
||||
}
|
||||
break;
|
||||
@ -561,21 +564,21 @@ acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
|
||||
|
||||
extern "C"
|
||||
int
|
||||
acl (const char *path, int cmd, int nentries, aclent_t *aclbufp)
|
||||
acl (const char *path, int cmd, int nentries, __aclent16_t *aclbufp)
|
||||
{
|
||||
return acl_worker (path, cmd, nentries, aclbufp, 0);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int
|
||||
lacl (const char *path, int cmd, int nentries, aclent_t *aclbufp)
|
||||
lacl (const char *path, int cmd, int nentries, __aclent16_t *aclbufp)
|
||||
{
|
||||
return acl_worker (path, cmd, nentries, aclbufp, 1);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int
|
||||
facl (int fd, int cmd, int nentries, aclent_t *aclbufp)
|
||||
facl (int fd, int cmd, int nentries, __aclent16_t *aclbufp)
|
||||
{
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
@ -596,7 +599,7 @@ facl (int fd, int cmd, int nentries, aclent_t *aclbufp)
|
||||
|
||||
extern "C"
|
||||
int
|
||||
aclcheck (aclent_t *aclbufp, int nentries, int *which)
|
||||
aclcheck (__aclent16_t *aclbufp, int nentries, int *which)
|
||||
{
|
||||
BOOL has_user_obj = FALSE;
|
||||
BOOL has_group_obj = FALSE;
|
||||
@ -730,7 +733,7 @@ aclcheck (aclent_t *aclbufp, int nentries, int *which)
|
||||
extern "C"
|
||||
int acecmp (const void *a1, const void *a2)
|
||||
{
|
||||
#define ace(i) ((const aclent_t *) a##i)
|
||||
#define ace(i) ((const __aclent16_t *) a##i)
|
||||
int ret = ace(1)->a_type - ace(2)->a_type;
|
||||
if (!ret)
|
||||
ret = ace(1)->a_id - ace(2)->a_id;
|
||||
@ -740,7 +743,7 @@ int acecmp (const void *a1, const void *a2)
|
||||
|
||||
extern "C"
|
||||
int
|
||||
aclsort (int nentries, int, aclent_t *aclbufp)
|
||||
aclsort (int nentries, int, __aclent16_t *aclbufp)
|
||||
{
|
||||
if (aclcheck (aclbufp, nentries, NULL))
|
||||
return -1;
|
||||
@ -749,13 +752,13 @@ aclsort (int nentries, int, aclent_t *aclbufp)
|
||||
set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
qsort((void *) aclbufp, nentries, sizeof (aclent_t), acecmp);
|
||||
qsort((void *) aclbufp, nentries, sizeof (__aclent16_t), acecmp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int
|
||||
acltomode (aclent_t *aclbufp, int nentries, mode_t *modep)
|
||||
acltomode (__aclent16_t *aclbufp, int nentries, mode_t *modep)
|
||||
{
|
||||
int pos;
|
||||
|
||||
@ -790,7 +793,7 @@ acltomode (aclent_t *aclbufp, int nentries, mode_t *modep)
|
||||
|
||||
extern "C"
|
||||
int
|
||||
aclfrommode(aclent_t *aclbufp, int nentries, mode_t *modep)
|
||||
aclfrommode(__aclent16_t *aclbufp, int nentries, mode_t *modep)
|
||||
{
|
||||
int pos;
|
||||
|
||||
@ -830,14 +833,14 @@ aclfrommode(aclent_t *aclbufp, int nentries, mode_t *modep)
|
||||
|
||||
extern "C"
|
||||
int
|
||||
acltopbits (aclent_t *aclbufp, int nentries, mode_t *pbitsp)
|
||||
acltopbits (__aclent16_t *aclbufp, int nentries, mode_t *pbitsp)
|
||||
{
|
||||
return acltomode (aclbufp, nentries, pbitsp);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
int
|
||||
aclfrompbits (aclent_t *aclbufp, int nentries, mode_t *pbitsp)
|
||||
aclfrompbits (__aclent16_t *aclbufp, int nentries, mode_t *pbitsp)
|
||||
{
|
||||
return aclfrommode (aclbufp, nentries, pbitsp);
|
||||
}
|
||||
@ -856,7 +859,7 @@ permtostr (mode_t perm)
|
||||
|
||||
extern "C"
|
||||
char *
|
||||
acltotext (aclent_t *aclbufp, int aclcnt)
|
||||
acltotext (__aclent16_t *aclbufp, int aclcnt)
|
||||
{
|
||||
if (!aclbufp || aclcnt < 1 || aclcnt > MAX_ACL_ENTRIES
|
||||
|| aclcheck (aclbufp, aclcnt, NULL))
|
||||
@ -932,7 +935,7 @@ permfromstr (char *perm)
|
||||
}
|
||||
|
||||
extern "C"
|
||||
aclent_t *
|
||||
__aclent16_t *
|
||||
aclfromtext (char *acltextp, int *)
|
||||
{
|
||||
if (!acltextp)
|
||||
@ -941,7 +944,7 @@ aclfromtext (char *acltextp, int *)
|
||||
return NULL;
|
||||
}
|
||||
char buf[strlen (acltextp) + 1];
|
||||
aclent_t lacl[MAX_ACL_ENTRIES];
|
||||
__aclent16_t lacl[MAX_ACL_ENTRIES];
|
||||
memset (lacl, 0, sizeof lacl);
|
||||
int pos = 0;
|
||||
strcpy (buf, acltextp);
|
||||
@ -993,7 +996,7 @@ aclfromtext (char *acltextp, int *)
|
||||
c += 5;
|
||||
if (isalpha (*c))
|
||||
{
|
||||
struct group *gr = getgrnam (c);
|
||||
struct __group16 *gr = getgrnam (c);
|
||||
if (!gr)
|
||||
{
|
||||
set_errno (EINVAL);
|
||||
@ -1038,9 +1041,9 @@ aclfromtext (char *acltextp, int *)
|
||||
}
|
||||
++pos;
|
||||
}
|
||||
aclent_t *aclp = (aclent_t *) malloc (pos * sizeof (aclent_t));
|
||||
__aclent16_t *aclp = (__aclent16_t *) malloc (pos * sizeof (__aclent16_t));
|
||||
if (aclp)
|
||||
memcpy (aclp, lacl, pos * sizeof (aclent_t));
|
||||
memcpy (aclp, lacl, pos * sizeof (__aclent16_t));
|
||||
return aclp;
|
||||
}
|
||||
|
||||
|
@ -129,7 +129,7 @@ cygsid::getfrompw (const struct passwd *pw)
|
||||
}
|
||||
|
||||
BOOL
|
||||
cygsid::getfromgr (const struct group *gr)
|
||||
cygsid::getfromgr (const struct __group16 *gr)
|
||||
{
|
||||
char *sp = (gr && gr->gr_passwd) ? gr->gr_passwd : NULL;
|
||||
return (*this = sp ?: "") != NULL;
|
||||
@ -176,7 +176,7 @@ cygsid::get_id (BOOL search_grp, int *type)
|
||||
}
|
||||
if (search_grp || type)
|
||||
{
|
||||
struct group *gr;
|
||||
struct __group16 *gr;
|
||||
for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx)
|
||||
{
|
||||
if (sid.getfromgr (gr) && sid == psid)
|
||||
@ -226,7 +226,7 @@ cygsid::get_id (BOOL search_grp, int *type)
|
||||
*type = GROUP;
|
||||
if (id == -1)
|
||||
{
|
||||
struct group *gr = getgrnam (account);
|
||||
struct __group16 *gr = getgrnam (account);
|
||||
if (gr)
|
||||
id = gr->gr_gid;
|
||||
}
|
||||
@ -251,13 +251,13 @@ cygsid::get_id (BOOL search_grp, int *type)
|
||||
}
|
||||
|
||||
BOOL
|
||||
is_grp_member (uid_t uid, gid_t gid)
|
||||
is_grp_member (__uid16_t uid, __gid16_t gid)
|
||||
{
|
||||
extern int getgroups (int, gid_t *, gid_t, const char *);
|
||||
extern int getgroups (int, __gid16_t *, __gid16_t, const char *);
|
||||
BOOL grp_member = TRUE;
|
||||
|
||||
struct passwd *pw = getpwuid (uid);
|
||||
gid_t grps[NGROUPS_MAX];
|
||||
__gid16_t grps[NGROUPS_MAX];
|
||||
int cnt = getgroups (NGROUPS_MAX, grps,
|
||||
pw ? pw->pw_gid : myself->gid,
|
||||
pw ? pw->pw_name : cygheap->user.name ());
|
||||
|
@ -42,7 +42,6 @@ details. */
|
||||
#include "ntdll.h"
|
||||
#include "lm.h"
|
||||
|
||||
|
||||
extern BOOL allow_ntea;
|
||||
BOOL allow_ntsec;
|
||||
/* allow_smbntsec is handled exclusively in path.cc (path_conv::check).
|
||||
@ -451,7 +450,7 @@ get_user_primary_group (WCHAR *wlogonserver, const char *user,
|
||||
static int
|
||||
get_supplementary_group_sidlist (const char *username, cygsidlist &grp_list)
|
||||
{
|
||||
struct group *gr;
|
||||
struct __group16 *gr;
|
||||
int cnt = 0;
|
||||
|
||||
for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx)
|
||||
@ -1086,7 +1085,7 @@ write_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, DWORD sd_size)
|
||||
|
||||
static int
|
||||
get_nt_attribute (const char *file, int *attribute,
|
||||
uid_t *uidret, gid_t *gidret)
|
||||
__uid16_t *uidret, __gid16_t *gidret)
|
||||
{
|
||||
if (!wincap.has_security ())
|
||||
return 0;
|
||||
@ -1124,8 +1123,8 @@ get_nt_attribute (const char *file, int *attribute,
|
||||
return -1;
|
||||
}
|
||||
|
||||
uid_t uid = cygsid(owner_sid).get_uid ();
|
||||
gid_t gid = cygsid(group_sid).get_gid ();
|
||||
__uid16_t uid = cygsid(owner_sid).get_uid ();
|
||||
__gid16_t gid = cygsid(group_sid).get_gid ();
|
||||
if (uidret)
|
||||
*uidret = uid;
|
||||
if (gidret)
|
||||
@ -1235,7 +1234,7 @@ get_nt_attribute (const char *file, int *attribute,
|
||||
|
||||
int
|
||||
get_file_attribute (int use_ntsec, const char *file,
|
||||
int *attribute, uid_t *uidret, gid_t *gidret)
|
||||
int *attribute, __uid16_t *uidret, __gid16_t *gidret)
|
||||
{
|
||||
int res;
|
||||
|
||||
@ -1306,7 +1305,7 @@ add_access_denied_ace (PACL acl, int offset, DWORD attributes,
|
||||
}
|
||||
|
||||
PSECURITY_DESCRIPTOR
|
||||
alloc_sd (uid_t uid, gid_t gid, const char *logsrv, int attribute,
|
||||
alloc_sd (__uid16_t uid, __gid16_t gid, const char *logsrv, int attribute,
|
||||
PSECURITY_DESCRIPTOR sd_ret, DWORD *sd_size_ret)
|
||||
{
|
||||
BOOL dummy;
|
||||
@ -1334,7 +1333,7 @@ alloc_sd (uid_t uid, gid_t gid, const char *logsrv, int attribute,
|
||||
|
||||
/* Get SID and name of new group. */
|
||||
cygsid group_sid (NO_SID);
|
||||
struct group *grp = getgrgid (gid);
|
||||
struct __group16 *grp = getgrgid (gid);
|
||||
if (grp)
|
||||
{
|
||||
if ((!grp || !group_sid.getfromgr (grp))
|
||||
@ -1575,7 +1574,7 @@ set_security_attribute (int attribute, PSECURITY_ATTRIBUTES psa,
|
||||
}
|
||||
|
||||
static int
|
||||
set_nt_attribute (const char *file, uid_t uid, gid_t gid,
|
||||
set_nt_attribute (const char *file, __uid16_t uid, __gid16_t gid,
|
||||
const char *logsrv, int attribute)
|
||||
{
|
||||
if (!wincap.has_security ())
|
||||
@ -1601,7 +1600,7 @@ set_nt_attribute (const char *file, uid_t uid, gid_t gid,
|
||||
|
||||
int
|
||||
set_file_attribute (int use_ntsec, const char *file,
|
||||
uid_t uid, gid_t gid,
|
||||
__uid16_t uid, __gid16_t gid,
|
||||
int attribute, const char *logsrv)
|
||||
{
|
||||
int ret = 0;
|
||||
|
@ -55,7 +55,7 @@ public:
|
||||
inline PSID set () { return psid = (PSID) sbuf; }
|
||||
|
||||
BOOL getfrompw (const struct passwd *pw);
|
||||
BOOL getfromgr (const struct group *gr);
|
||||
BOOL getfromgr (const struct __group16 *gr);
|
||||
|
||||
int get_id (BOOL search_grp, int *type = NULL);
|
||||
inline int get_uid () { return get_id (FALSE); }
|
||||
@ -159,14 +159,14 @@ extern BOOL allow_smbntsec;
|
||||
and group lists so they are somehow security related. Besides that
|
||||
I didn't find a better place to declare them. */
|
||||
extern struct passwd *internal_getpwent (int);
|
||||
extern struct group *internal_getgrent (int);
|
||||
extern struct __group16 *internal_getgrent (int);
|
||||
|
||||
/* File manipulation */
|
||||
int __stdcall set_process_privileges ();
|
||||
int __stdcall get_file_attribute (int, const char *, int *,
|
||||
uid_t * = NULL, gid_t * = NULL);
|
||||
__uid16_t * = NULL, __gid16_t * = NULL);
|
||||
int __stdcall set_file_attribute (int, const char *, int);
|
||||
int __stdcall set_file_attribute (int, const char *, uid_t, gid_t, int, const char *);
|
||||
int __stdcall set_file_attribute (int, const char *, __uid16_t, __gid16_t, int, const char *);
|
||||
LONG __stdcall read_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, LPDWORD sd_size);
|
||||
LONG __stdcall write_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, DWORD sd_size);
|
||||
BOOL __stdcall add_access_allowed_ace (PACL acl, int offset, DWORD attributes, PSID sid, size_t &len_add, DWORD inherit);
|
||||
@ -186,7 +186,7 @@ void extract_nt_dom_user (const struct passwd *pw, char *domain, char *user);
|
||||
BOOL get_logon_server_and_user_domain (char *logonserver, char *domain);
|
||||
|
||||
/* sec_helper.cc: Security helper functions. */
|
||||
BOOL __stdcall is_grp_member (uid_t uid, gid_t gid);
|
||||
BOOL __stdcall is_grp_member (__uid16_t uid, __gid16_t gid);
|
||||
/* `lookup_name' should be called instead of LookupAccountName.
|
||||
* logsrv may be NULL, in this case only the local system is used for lookup.
|
||||
* The buffer for ret_sid (40 Bytes) has to be allocated by the caller! */
|
||||
|
@ -682,7 +682,7 @@ spawn_guts (HANDLE hToken, const char * prog_arg, const char *const *argv,
|
||||
char wstname[1024];
|
||||
char dskname[1024];
|
||||
|
||||
ciresrv.moreinfo->uid = USHRT_MAX;
|
||||
ciresrv.moreinfo->uid = ILLEGAL_UID;
|
||||
hwst = GetProcessWindowStation ();
|
||||
SetUserObjectSecurity (hwst, &dsi, get_null_sd ());
|
||||
GetUserObjectInformation (hwst, UOI_NAME, wstname, 1024, &n);
|
||||
|
@ -527,10 +527,10 @@ _open (const char *unix_path, int flags, ...)
|
||||
return res;
|
||||
}
|
||||
|
||||
extern "C" off_t
|
||||
_lseek (int fd, off_t pos, int dir)
|
||||
extern "C" __off32_t
|
||||
_lseek (int fd, __off32_t pos, int dir)
|
||||
{
|
||||
off_t res;
|
||||
__off32_t res;
|
||||
sigframe thisframe (mainthread);
|
||||
|
||||
if (dir != SEEK_SET && dir != SEEK_CUR && dir != SEEK_END)
|
||||
@ -744,11 +744,11 @@ done:
|
||||
* systems, it is only a stub that always returns zero.
|
||||
*/
|
||||
static int
|
||||
chown_worker (const char *name, unsigned fmode, uid_t uid, gid_t gid)
|
||||
chown_worker (const char *name, unsigned fmode, __uid16_t uid, __gid16_t gid)
|
||||
{
|
||||
int res;
|
||||
uid_t old_uid;
|
||||
gid_t old_gid;
|
||||
__uid16_t old_uid;
|
||||
__gid16_t old_gid;
|
||||
|
||||
if (check_null_empty_str_errno (name))
|
||||
return -1;
|
||||
@ -785,9 +785,9 @@ chown_worker (const char *name, unsigned fmode, uid_t uid, gid_t gid)
|
||||
&old_gid);
|
||||
if (!res)
|
||||
{
|
||||
if (uid == (uid_t) -1)
|
||||
if (uid == ILLEGAL_UID)
|
||||
uid = old_uid;
|
||||
if (gid == (gid_t) -1)
|
||||
if (gid == ILLEGAL_GID)
|
||||
gid = old_gid;
|
||||
if (win32_path.isdir())
|
||||
attrib |= S_IFDIR;
|
||||
@ -809,21 +809,21 @@ done:
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
chown (const char * name, uid_t uid, gid_t gid)
|
||||
chown (const char * name, __uid16_t uid, __gid16_t gid)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
return chown_worker (name, PC_SYM_FOLLOW, uid, gid);
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
lchown (const char * name, uid_t uid, gid_t gid)
|
||||
lchown (const char * name, __uid16_t uid, __gid16_t gid)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
return chown_worker (name, PC_SYM_NOFOLLOW, uid, gid);
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
fchown (int fd, uid_t uid, gid_t gid)
|
||||
fchown (int fd, __uid16_t uid, __gid16_t gid)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
cygheap_fdget cfd (fd);
|
||||
@ -888,8 +888,8 @@ chmod (const char *path, mode_t mode)
|
||||
/* temporary erase read only bit, to be able to set file security */
|
||||
SetFileAttributes (win32_path, (DWORD) win32_path & ~FILE_ATTRIBUTE_READONLY);
|
||||
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
__uid16_t uid;
|
||||
__gid16_t gid;
|
||||
|
||||
if (win32_path.isdir ())
|
||||
mode |= S_IFDIR;
|
||||
@ -1609,7 +1609,7 @@ setmode (int fd, int mode)
|
||||
|
||||
/* ftruncate: P96 5.6.7.1 */
|
||||
extern "C" int
|
||||
ftruncate (int fd, off_t length)
|
||||
ftruncate (int fd, __off32_t length)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
int res = -1;
|
||||
@ -1626,7 +1626,7 @@ ftruncate (int fd, off_t length)
|
||||
if (cfd->get_handle ())
|
||||
{
|
||||
/* remember curr file pointer location */
|
||||
off_t prev_loc = cfd->lseek (0, SEEK_CUR);
|
||||
__off32_t prev_loc = cfd->lseek (0, SEEK_CUR);
|
||||
|
||||
cfd->lseek (length, SEEK_SET);
|
||||
if (!SetEndOfFile (h))
|
||||
@ -1646,7 +1646,7 @@ ftruncate (int fd, off_t length)
|
||||
|
||||
/* truncate: Provided by SVR4 and 4.3+BSD. Not part of POSIX.1 or XPG3 */
|
||||
extern "C" int
|
||||
truncate (const char *pathname, off_t length)
|
||||
truncate (const char *pathname, __off32_t length)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
int fd;
|
||||
@ -1844,7 +1844,7 @@ mkfifo (const char *_path, mode_t mode)
|
||||
|
||||
/* setgid: POSIX 4.2.2.1 */
|
||||
extern "C" int
|
||||
setgid (gid_t gid)
|
||||
setgid (__gid16_t gid)
|
||||
{
|
||||
int ret = setegid (gid);
|
||||
if (!ret)
|
||||
@ -1854,7 +1854,7 @@ setgid (gid_t gid)
|
||||
|
||||
/* setuid: POSIX 4.2.2.1 */
|
||||
extern "C" int
|
||||
setuid (uid_t uid)
|
||||
setuid (__uid16_t uid)
|
||||
{
|
||||
int ret = seteuid (uid);
|
||||
if (!ret)
|
||||
@ -1867,7 +1867,7 @@ extern struct passwd *internal_getlogin (cygheap_user &user);
|
||||
|
||||
/* seteuid: standards? */
|
||||
extern "C" int
|
||||
seteuid (uid_t uid)
|
||||
seteuid (__uid16_t uid)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
if (wincap.has_security ())
|
||||
@ -1880,7 +1880,7 @@ seteuid (uid_t uid)
|
||||
DWORD dlen = INTERNET_MAX_HOST_NAME_LENGTH + 1;
|
||||
SID_NAME_USE use;
|
||||
|
||||
if (uid == (uid_t) -1 || uid == myself->uid)
|
||||
if (uid == ILLEGAL_UID || uid == myself->uid)
|
||||
{
|
||||
debug_printf ("new euid == current euid, nothing happens");
|
||||
return 0;
|
||||
@ -1935,7 +1935,7 @@ seteuid (uid_t uid)
|
||||
BOOL current_token_is_internal_token = FALSE;
|
||||
BOOL explicitely_created_token = FALSE;
|
||||
|
||||
struct group *gr = getgrgid (myself->gid);
|
||||
struct __group16 *gr = getgrgid (myself->gid);
|
||||
debug_printf ("myself->gid: %d, gr: %d", myself->gid, gr);
|
||||
|
||||
usersid.getfrompw (pw_new);
|
||||
@ -2087,14 +2087,14 @@ seteuid (uid_t uid)
|
||||
|
||||
/* setegid: from System V. */
|
||||
extern "C" int
|
||||
setegid (gid_t gid)
|
||||
setegid (__gid16_t gid)
|
||||
{
|
||||
sigframe thisframe (mainthread);
|
||||
if (wincap.has_security ())
|
||||
{
|
||||
if (gid != (gid_t) -1)
|
||||
if (gid != ILLEGAL_GID)
|
||||
{
|
||||
struct group *gr;
|
||||
struct __group16 *gr;
|
||||
|
||||
if (!(gr = getgrgid (gid)))
|
||||
{
|
||||
@ -2377,7 +2377,7 @@ logout (char *line)
|
||||
{
|
||||
struct utmp *ut;
|
||||
struct utmp ut_buf[100];
|
||||
off_t pos = 0; /* Position in file */
|
||||
__off32_t pos = 0; /* Position in file */
|
||||
DWORD rd;
|
||||
|
||||
while (!res && ReadFile (ut_fd, ut_buf, sizeof ut_buf, &rd, NULL)
|
||||
|
@ -54,7 +54,7 @@ struct _winsup_t
|
||||
/*
|
||||
Needed for the group functions
|
||||
*/
|
||||
struct group _grp;
|
||||
struct __group16 _grp;
|
||||
char *_namearray[2];
|
||||
int _grp_pos;
|
||||
|
||||
|
@ -174,7 +174,7 @@ internal_getlogin (cygheap_user &user)
|
||||
if (psid.getfrompw (pw) && EqualSid (user.sid (), psid))
|
||||
{
|
||||
user.set_name (pw->pw_name);
|
||||
struct group *gr = getgrgid (pw->pw_gid);
|
||||
struct __group16 *gr = getgrgid (pw->pw_gid);
|
||||
if (gr)
|
||||
if (!gsid.getfromgr (gr))
|
||||
gsid = NO_SID;
|
||||
@ -249,9 +249,9 @@ uinfo_init ()
|
||||
cygheap->user.token = INVALID_HANDLE_VALUE;
|
||||
cygheap->user.impersonated = TRUE;
|
||||
|
||||
/* If uid is USHRT_MAX, the process is started from a non cygwin
|
||||
/* If uid is ILLEGAL_UID, the process is started from a non cygwin
|
||||
process or the user context was changed in spawn.cc */
|
||||
if (myself->uid == USHRT_MAX)
|
||||
if (myself->uid == ILLEGAL_UID)
|
||||
if ((p = internal_getlogin (cygheap->user)) != NULL)
|
||||
{
|
||||
myself->uid = p->pw_uid;
|
||||
@ -283,25 +283,25 @@ getlogin (void)
|
||||
return strcpy (this_username, cygheap->user.name ());
|
||||
}
|
||||
|
||||
extern "C" uid_t
|
||||
extern "C" __uid16_t
|
||||
getuid (void)
|
||||
{
|
||||
return cygheap->user.real_uid;
|
||||
}
|
||||
|
||||
extern "C" gid_t
|
||||
extern "C" __gid16_t
|
||||
getgid (void)
|
||||
{
|
||||
return cygheap->user.real_gid;
|
||||
}
|
||||
|
||||
extern "C" uid_t
|
||||
extern "C" __uid16_t
|
||||
geteuid (void)
|
||||
{
|
||||
return myself->uid;
|
||||
}
|
||||
|
||||
extern "C" gid_t
|
||||
extern "C" __gid16_t
|
||||
getegid (void)
|
||||
{
|
||||
return myself->gid;
|
||||
|
@ -145,6 +145,10 @@ extern "C" void __stdcall do_exit (int) __attribute__ ((noreturn));
|
||||
/* UID/GID */
|
||||
void uinfo_init (void);
|
||||
|
||||
#define ILLEGAL_UID ((__uid16_t)-1)
|
||||
#define ILLEGAL_GID ((__gid16_t)-1)
|
||||
#define ILLEGAL_SEEK ((__off32_t)-1)
|
||||
|
||||
/* various events */
|
||||
void events_init (void);
|
||||
void events_terminate (void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user