* uinfo.cc (pwdgrp::load): Regularize strace output. Add warning for

CreateFile failure.
This commit is contained in:
Christopher Faylor 2003-01-26 06:42:40 +00:00
parent 989c97fe14
commit 9a75162166
10 changed files with 126 additions and 118 deletions

View file

@ -1,3 +1,8 @@
2003-01-26 Christopher Faylor <cgf@redhat.com>
* uinfo.cc (pwdgrp::load): Regularize strace output. Add warning for
CreateFile failure.
2003-01-26 Christopher Faylor <cgf@redhat.com>
* passwd.cc (pwdgrp::parse_passwd): Eliminate use of memset. The

View file

@ -201,112 +201,112 @@ fhandler_dev_floppy::ioctl (unsigned int cmd, void *buf)
{
case HDIO_GETGEO:
{
debug_printf ("HDIO_GETGEO");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
debug_printf ("disk geometry: (%ld cyl)*(%ld trk)*(%ld sec)*(%ld bps)",
di.Cylinders.LowPart,
di.TracksPerCylinder,
di.SectorsPerTrack,
di.BytesPerSector);
if (DeviceIoControl (get_handle (),
IOCTL_DISK_GET_PARTITION_INFO,
NULL, 0,
&pi, sizeof (pi),
&bytes_read, NULL))
{
debug_printf ("partition info: %ld (%ld)",
pi.StartingOffset.LowPart,
pi.PartitionLength.LowPart);
start = pi.StartingOffset.QuadPart >> 9ULL;
}
struct hd_geometry *geo = (struct hd_geometry *) buf;
geo->heads = di.TracksPerCylinder;
geo->sectors = di.SectorsPerTrack;
geo->cylinders = di.Cylinders.LowPart;
geo->start = start;
return 0;
debug_printf ("HDIO_GETGEO");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
debug_printf ("disk geometry: (%ld cyl)*(%ld trk)*(%ld sec)*(%ld bps)",
di.Cylinders.LowPart,
di.TracksPerCylinder,
di.SectorsPerTrack,
di.BytesPerSector);
if (DeviceIoControl (get_handle (),
IOCTL_DISK_GET_PARTITION_INFO,
NULL, 0,
&pi, sizeof (pi),
&bytes_read, NULL))
{
debug_printf ("partition info: %ld (%ld)",
pi.StartingOffset.LowPart,
pi.PartitionLength.LowPart);
start = pi.StartingOffset.QuadPart >> 9ULL;
}
struct hd_geometry *geo = (struct hd_geometry *) buf;
geo->heads = di.TracksPerCylinder;
geo->sectors = di.SectorsPerTrack;
geo->cylinders = di.Cylinders.LowPart;
geo->start = start;
return 0;
}
case BLKGETSIZE:
case BLKGETSIZE64:
{
debug_printf ("BLKGETSIZE");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
debug_printf ("disk geometry: (%ld cyl)*(%ld trk)*(%ld sec)*(%ld bps)",
di.Cylinders.LowPart,
di.TracksPerCylinder,
di.SectorsPerTrack,
di.BytesPerSector);
if (DeviceIoControl (get_handle (),
IOCTL_DISK_GET_PARTITION_INFO,
NULL, 0,
&pi, sizeof (pi),
&bytes_read, NULL))
{
debug_printf ("partition info: %ld (%ld)",
pi.StartingOffset.LowPart,
pi.PartitionLength.LowPart);
drive_size = pi.PartitionLength.QuadPart;
}
else
{
drive_size = di.Cylinders.QuadPart * di.TracksPerCylinder *
di.SectorsPerTrack * di.BytesPerSector;
}
if (cmd == BLKGETSIZE)
*(long *)buf = drive_size >> 9UL;
else
*(__off64_t *)buf = drive_size;
return 0;
debug_printf ("BLKGETSIZE");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
debug_printf ("disk geometry: (%ld cyl)*(%ld trk)*(%ld sec)*(%ld bps)",
di.Cylinders.LowPart,
di.TracksPerCylinder,
di.SectorsPerTrack,
di.BytesPerSector);
if (DeviceIoControl (get_handle (),
IOCTL_DISK_GET_PARTITION_INFO,
NULL, 0,
&pi, sizeof (pi),
&bytes_read, NULL))
{
debug_printf ("partition info: %ld (%ld)",
pi.StartingOffset.LowPart,
pi.PartitionLength.LowPart);
drive_size = pi.PartitionLength.QuadPart;
}
else
{
drive_size = di.Cylinders.QuadPart * di.TracksPerCylinder *
di.SectorsPerTrack * di.BytesPerSector;
}
if (cmd == BLKGETSIZE)
*(long *)buf = drive_size >> 9UL;
else
*(__off64_t *)buf = drive_size;
return 0;
}
case BLKRRPART:
{
debug_printf ("BLKRRPART");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_UPDATE_DRIVE_SIZE,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
return 0;
debug_printf ("BLKRRPART");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_UPDATE_DRIVE_SIZE,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
return 0;
}
case BLKSSZGET:
{
debug_printf ("BLKSSZGET");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
debug_printf ("disk geometry: (%ld cyl)*(%ld trk)*(%ld sec)*(%ld bps)",
di.Cylinders.LowPart,
di.TracksPerCylinder,
di.SectorsPerTrack,
di.BytesPerSector);
*(int *)buf = di.BytesPerSector;
return 0;
debug_printf ("BLKSSZGET");
if (!DeviceIoControl (get_handle (),
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL, 0,
&di, sizeof (di),
&bytes_read, NULL))
{
__seterrno ();
return -1;
}
debug_printf ("disk geometry: (%ld cyl)*(%ld trk)*(%ld sec)*(%ld bps)",
di.Cylinders.LowPart,
di.TracksPerCylinder,
di.SectorsPerTrack,
di.BytesPerSector);
*(int *)buf = di.BytesPerSector;
return 0;
}
default:
return fhandler_dev_raw::ioctl (cmd, buf);

View file

@ -1115,7 +1115,7 @@ fhandler_socket::ioctl (unsigned int cmd, void *p)
}
ifr->ifr_flags = IFF_NOTRAILERS | IFF_UP | IFF_RUNNING;
if (!strncmp(ifr->ifr_name, "lo", 2)
|| ntohl (((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr)
|| ntohl (((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr.s_addr)
== INADDR_LOOPBACK)
ifr->ifr_flags |= IFF_LOOPBACK;
else

View file

@ -116,7 +116,7 @@ internal_getgrsid (cygsid &sid)
if (sid.string (sid_string))
for (int i = 0; i < gr.curr_lines; i++)
if (!strcmp (sid_string, group_buf[i].gr_passwd))
return group_buf + i;
return group_buf + i;
return NULL;
}
@ -244,9 +244,9 @@ internal_getgroups (int gidsetsize, __gid32_t *grouplist, cygsid * srchsid)
{
/* If impersonated, use impersonation token. */
if (cygheap->user.issetuid ())
hToken = cygheap->user.token;
hToken = cygheap->user.token;
else if (!OpenProcessToken (hMainProc, TOKEN_QUERY, &hToken))
hToken = NULL;
hToken = NULL;
}
if (hToken)
{
@ -261,7 +261,7 @@ internal_getgroups (int gidsetsize, __gid32_t *grouplist, cygsid * srchsid)
cygsid sid;
if (srchsid)
{
{
for (DWORD pg = 0; pg < groups->GroupCount; ++pg)
if (*srchsid == groups->Groups[pg].Sid)
return 1;
@ -289,7 +289,7 @@ internal_getgroups (int gidsetsize, __gid32_t *grouplist, cygsid * srchsid)
else
debug_printf ("%d = GetTokenInformation(NULL) %E", size);
if (hToken != cygheap->user.token)
CloseHandle (hToken);
CloseHandle (hToken);
if (cnt)
return cnt;
}

View file

@ -124,7 +124,7 @@ set_socket_inheritance (SOCKET sock)
SOCKET osock = sock;
if (!DuplicateHandle (hMainProc, (HANDLE) sock, hMainProc, (HANDLE *) &sock,
0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
0, TRUE, DUPLICATE_SAME_ACCESS | DUPLICATE_CLOSE_SOURCE))
system_printf ("DuplicateHandle failed %E");
else
debug_printf ("DuplicateHandle succeeded osock %p, sock %p", osock, sock);
@ -153,7 +153,7 @@ extern "C" unsigned short
htons (unsigned short x)
{
return ((((x & 0x000000ffU) << 8) |
((x & 0x0000ff00U) >> 8)));
((x & 0x0000ff00U) >> 8)));
}
/* ntohs: standards? */

View file

@ -138,15 +138,15 @@ setacl (const char *file, int nentries, __aclent16_t *aclbufp)
*/
if (!(aclbufp[i].a_type & ACL_DEFAULT)
&& aclbufp[i].a_type & (USER|GROUP|OTHER_OBJ)
&& (pos = searchace (aclbufp + i + 1, nentries - i - 1,
&& (pos = searchace (aclbufp + i + 1, nentries - i - 1,
aclbufp[i].a_type | ACL_DEFAULT,
(aclbufp[i].a_type & (USER|GROUP))
? aclbufp[i].a_id : -1)) >= 0
&& aclbufp[i].a_perm == aclbufp[pos].a_perm)
{
inheritance = SUB_CONTAINERS_AND_OBJECTS_INHERIT;
/* This invalidates the corresponding default entry. */
aclbufp[pos].a_type = USER|GROUP|ACL_DEFAULT;
/* This invalidates the corresponding default entry. */
aclbufp[pos].a_type = USER|GROUP|ACL_DEFAULT;
}
switch (aclbufp[i].a_type)
{
@ -230,7 +230,7 @@ setacl (const char *file, int nentries, __aclent16_t *aclbufp)
static void
getace (__aclent16_t &acl, int type, int id, DWORD win_ace_mask,
DWORD win_ace_type)
DWORD win_ace_type)
{
acl.a_type = type;
acl.a_id = id;
@ -405,7 +405,7 @@ getacl (const char *file, DWORD attr, int nentries, __aclent16_t *aclbufp)
lacl[0].a_perm = lacl[1].a_perm;
if (pos > nentries)
{
set_errno (ENOSPC);
set_errno (ENOSPC);
return -1;
}
memcpy (aclbufp, lacl, pos * sizeof (__aclent16_t));

View file

@ -194,10 +194,10 @@ is_grp_member (__uid32_t uid, __gid32_t gid)
{
/* If gid == primary group of current user, return immediately. */
if (gid == myself->gid)
return TRUE;
return TRUE;
/* Calling getgroups only makes sense when reading the access token. */
if (allow_ntsec)
{
{
__gid32_t grps[NGROUPS_MAX];
int cnt = internal_getgroups (NGROUPS_MAX, grps);
for (idx = 0; idx < cnt; ++idx)

View file

@ -1243,8 +1243,8 @@ get_attribute_from_acl (int * attribute, PACL acl, PSID owner_sid,
| ((!(*anti & S_IWUSR)) ? S_IWUSR : 0);
if (ace->Mask & FILE_EXECUTE)
*flags |= ((!(*anti & S_IXOTH)) ? S_IXOTH : 0)
| ((!(*anti & S_IXGRP)) ? S_IXGRP : 0)
| ((!(*anti & S_IXUSR)) ? S_IXUSR : 0);
| ((!(*anti & S_IXGRP)) ? S_IXGRP : 0)
| ((!(*anti & S_IXUSR)) ? S_IXUSR : 0);
if ((*attribute & S_IFDIR) &&
(ace->Mask & (FILE_WRITE_DATA | FILE_EXECUTE | FILE_DELETE_CHILD))
== (FILE_WRITE_DATA | FILE_EXECUTE))
@ -1374,7 +1374,7 @@ get_file_attribute (int use_ntsec, const char *file,
{
res = get_nt_attribute (file, attribute, uidret, gidret);
if (res)
{
{
/* If reading the security descriptor failed, treat the file
as unreadable. */
*attribute &= ~(S_IRWXU | S_IRWXG | S_IRWXO);

View file

@ -810,7 +810,7 @@ chown_worker (const char *name, unsigned fmode, __uid32_t uid, __gid32_t gid)
win32_path.get_win32 (),
(int *) &attrib);
if (!res)
res = set_file_attribute (win32_path.has_acls (), win32_path, uid,
res = set_file_attribute (win32_path.has_acls (), win32_path, uid,
gid, attrib);
if (res != 0 && (!win32_path.has_acls () || !allow_ntsec))
{

View file

@ -107,7 +107,7 @@ uinfo_init ()
if (!child_proc_info)
internal_getlogin (cygheap->user); /* Set the cygheap->user. */
else
CloseHandle (cygheap->user.token);
CloseHandle (cygheap->user.token);
cygheap->user.set_orig_sid (); /* Update the original sid */
cygheap->user.token = INVALID_HANDLE_VALUE; /* No token present */
}
@ -469,7 +469,10 @@ pwdgrp::load (const char *posix_fname)
HANDLE fh = CreateFile (pc, GENERIC_READ, wincap.shared (), NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (fh == INVALID_HANDLE_VALUE)
res = failed;
{
paranoid_printf ("%s CreateFile failed, %E");
res = failed;
}
else
{
DWORD size = GetFileSize (fh, NULL), read_bytes;
@ -497,7 +500,7 @@ pwdgrp::load (const char *posix_fname)
}
}
debug_printf ("load of %s %s", posix_fname, res);
debug_printf ("%s load %s", posix_fname, res);
initialized = true;
return;
}