Commit Graph

794 Commits

Author SHA1 Message Date
Christopher Faylor a7670c1e82 * cygheap.cc (cygheap_fixup_in_child): Attempt Win95 workaround.
* dtable.cc (dtable::dup_worker): Add debugging output.
(dtable::vfork_child_dup): Correctly set close_on_exec.
* fhandler.cc (fhandler_base::fork_fixup): Don't mess with handle if there is
no need to get it from the parent.
* fhandler_tty.cc (fhandler_tty_common::close): Add debugging output.
2001-07-21 03:20:01 +00:00
Corinna Vinschen 1801eae1b1 * dir.cc (readdir): Protect FindNextFileA against INVALID_HANDLE_VALUE. 2001-07-20 07:24:02 +00:00
Christopher Faylor 16828fc5d4 * cygheap.cc (_cmalloc): Use correct constants for size calculation.
* dcrt0.cc (dll_crt0_1): Move uid initialization earlier.
* fork.cc (fork_parent): Move cygheap_setup_in_child to just prior to
CreateProcess so that all contents of cygheap are copied.
* spawn.cc (spawn_guts): Ditto.
2001-07-18 17:05:34 +00:00
Corinna Vinschen c9fbce2641 * security.cc (get_user_groups): Call Net function with NULL server
name under specific error conditions.
        (is_group_member): Ditto.
        (get_user_local_groups): Ditto.
        (get_user_primary_group): Ditto.
2001-07-18 12:56:26 +00:00
Corinna Vinschen 5564cd7a89 * syscalls.cc (_unlink): Explicitely check for non-existant file. 2001-07-18 11:00:05 +00:00
Corinna Vinschen 3ef6288c74 * delqueue.h: Remove obsolete file. 2001-07-17 08:28:27 +00:00
Christopher Faylor 5457dfcb81 * child_info.h: Bump magic number.
(class child_info): Add an element.
* cygheap.cc (init_cheap): Allocate cygwin heap in shared memory area.
(cygheap_fixup_in_child): Map cygwin heap, passed from parent via shared memory
into correct address.
(cygheap_setup_for_child): New function.
* cygheap.h: Declare new functions.
* dcrt0.cc (dll_crt0_1): Accomodate new cygheap_fixup_in_child arguments.
Avoid protecting subproc_ready unless it is spawn/nowait.
* fork.cc (fork_parent): Use new cygheap_setup_for_child function to setup
cygwin heap info.  Close passed cygheap shared memory handle.
* spawn.cc (spawn_guts): Ditto.  Also, reorganize to avoid synchronization
between parent and child in non-P_OVERLAY case.
* sigproc.cc (wait_sig): Only signal subproc_ready when execing.
2001-07-17 03:41:52 +00:00
Corinna Vinschen 27ea31cde4 * grp.cc: Add missing Copyright date 2001. 2001-07-16 13:22:29 +00:00
Corinna Vinschen 3a157c0d0d Change well_known_admin_sid to well_known_admins_sid throughout.
* sec_acl.cc (setacl): Never set DELETE permission. Set
        FILE_DELETE_CHILD only on readable and executable directories.
        * sec_helper.cc: Add constructor for `well_known_null_sid'.
        * security.cc (get_nt_attribute): Set S_ISVTX for directories if
        FILE_WRITE_DATA and FILE_EXECUTE but not FILE_DELETE_CHILD is set.
        Add evaluation of S_ISVTX, S_ISGID and S_ISUID from NULL ACE.
        (alloc_sd): Never set DELETE permission. Set FILE_DELETE_CHILD
        only on readable and executable directories.
        Add creation of NULL ACE for S_ISVTX, S_ISGID and S_ISUID permissions.
        * security.h: Add extern declaration for `well_known_null_sid'.
2001-07-15 22:40:07 +00:00
Christopher Faylor fc901253d1 * syscalls.cc (stat_worker): Simplify previous change. 2001-07-14 00:09:33 +00:00
Christopher Faylor 2aa2adb2d2 * syscalls.cc (_unlink): Correct (?) logic which determines when to report an
access violation and when to queue file for eventual deletion.
(stat_worker): Check for invalid buf argument.
2001-07-13 17:22:15 +00:00
Corinna Vinschen 8595942c8e * mmap.cc (fhandler_disk_file::mmap): Try to open file mappings
by a unified name when running under 9x/ME. If that failes, create
        the file mapping using the unified name.
2001-07-10 21:04:14 +00:00
Corinna Vinschen a8506a1917 * uinfo.cc (internal_getlogin): Add pointer check. 2001-07-09 09:05:17 +00:00
Corinna Vinschen 5d0cbc17db * security.cc (alloc_sd): Don't set inheritance attribute for
permissions given to directories.
2001-07-09 09:02:41 +00:00
Christopher Faylor 2113bf6c1a * fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Return 0 for success. 2001-06-29 02:20:01 +00:00
Christopher Faylor 7a4078ee34 Change check_null_empty_path* to check_null_empty_str* throughout.
* path.cc (path_conv::check): Add signal protection here since retrieving info
about remote shares can take some time.
* path.h (check_null_empty_str_errno): Convert to a function prototype.
* path.cc (check_null_empty_str): Move to miscfuncs.cc.
* miscfuncs.cc (check_null_empty_str_errno): New function.
(__check_null_invalid_struct): Ditto.
(__check_null_invalid_struct_errno): Ditto.
(check_null_empty_str): Change from VirtualQuery to IsBadWritePtr.
* thread.cc (check_valid_pointer): Ditto.
* resource.cc (getrlimit): Use check_null_invalid_struct macro for checking
validity of pointer.
(setrlimit): Ditto.
2001-06-28 02:19:57 +00:00
Christopher Faylor 07c3cd5bb1 * fhandler.cc (fhandler_disk_file::fstat): Don't rely on exactly 3 characters
being read for executable test since we could be checking for less than that.
* syscalls.cc (stat_worker): Try opening the file the "correct" way first so
that #! processing can potentially happen.  If that fails, then use "query
open" method.
* spawn.cc (spawn_guts): Delay processing of signal until after we've notified
parent about reparenting.
2001-06-26 21:03:08 +00:00
Christopher Faylor 32c3034969 Remove trailing tabs. 2001-06-26 14:57:33 +00:00
Christopher Faylor 462f4effb1 * mmap.cc: Clean up *ResourceLock calls throughout.
* thread.cc (pthread_cond::TimedWait): Check for WAIT_TIMEOUT as well as
WAIT_ABANDONED.
(__pthread_cond_timedwait): Calculate a relative wait from the abstime
parameter.
2001-06-26 14:47:48 +00:00
Christopher Faylor 7333875c53 Fix typo 2001-06-24 22:00:04 +00:00
Christopher Faylor 125205875b * exceptions.cc (interrupt_setup): Move actions from setup_handler to here.
(setup_handler): Move actions after a successful interrupt to interrupt_setup.
* fork.cc (vfork): Augment debugging output.
* sigproc.cc (proc_subproc): Ditto.
* spawn.cc (spawn_guts): Ditto.  Correctly fill out progname when spawn
NO_WAIT.  Call signal handler when a signal arrives.
* sigproc.h: Declare a function.
2001-06-24 21:57:50 +00:00
Corinna Vinschen 50b1264871 * fhandler.h class fhandler_socket): Declare new method
`set_close_on_exec'.
        * fhandler_socket.cc (fhandler_socket::set_close_on_exec):
        New method.
2001-06-22 20:53:45 +00:00
Corinna Vinschen 3b295174e3 * fhandler_tape.cc (fhandler_dev_tape::tape_erase): Set size
parameter to value expected by GetTapeParameters().
2001-06-22 20:13:00 +00:00
Corinna Vinschen 26da27a5f6 * fhandler_console.cc (fhandler_console::read): Detect AltGr more
robustly on WinNT.
2001-06-22 20:08:06 +00:00
Robert Collins b643afa4c7 2001-06-22 Robert Collins rbtcollins@hotmail.com
* thread.cc (__pthread_cond_timedwait): Lock the waiting mutex before
	the condition protect mutex to avoid deadlocking. (Found by Greg Smith).
	(__pthread_cond_wait): Ditto.
2001-06-21 22:27:20 +00:00
Egor Duda 9cc97acbd0 * fhandler.cc (fhandler_base::open): Work around windows bug when
CreateFile() with dwDesiredAccess == 0 called on remote share returns
valid handle even if file doesn't exist.
2001-06-20 07:44:33 +00:00
Egor Duda ae036f47c5 * fhandler_socket.cc (fhandler_socket::signal_secret_event): New
function.
* fhandler.h: Declare it.
* fhandler_socket.cc (fhandler_socket::create_secret_event): Don't
signal secret event immediately.
(fhandler_socket::check_peer_secret_event): Do it after peer event
was opened.
* net.cc (cygwin_connect): Or if socket is non-blocking.
(cygwin_accept): Ditto.
2001-06-20 06:50:13 +00:00
Christopher Faylor 20a2c44362 * fhandler_tty.cc (fhandler_tty_slave::init): Revert 2001-06-16 change.
* fork.cc (fork_copy): Print more debugging info.
(fork_parent): Change order of arguments to accomdate buggy gcc.
(fork): Ditto.
* syscalls.cc (_unlink): Reorganize to try harder to delete file with
DeleteFile and to recover more gracefully if FILE_FLAG_DELETE_ON_CLOSE doesn't
work properly.
2001-06-18 21:18:59 +00:00
Christopher Faylor 99a5bd2fab * exceptions.cc (sig_handle_tty_stop): Reset PID_STOPPED if not actually
stopping.
* fhandler_console.cc (fhandler_console::fixup_after_fork): Don't set
controlling terminal if just inheriting a handle.
(fhandler_console::fixup_after_exec): Ditto.
* fhandler_tty.cc (fhandler_tty_slave::init): Ditto.
* signal.cc (kill_worker): Set appropriate errno if proc_exists determines that
process does not really exist.
2001-06-16 17:09:19 +00:00
Christopher Faylor 947ab99ee9 * path.cc (path_conv::check): Deal more robustly with foo/ behavior. 2001-06-15 20:35:51 +00:00
Corinna Vinschen 4d52d5b0fb * fhandler_tape.cc (fhandler_dev_tape::tape_status): Set size
parameter to value expected by GetTapeParameters().
2001-06-15 09:17:10 +00:00
Christopher Faylor e8d6e78f34 * fhandler.cc (fhandler_disk_file::fstat): Properly set executable bits for
directory when !ntsec && !ntea.  Also move common code prior to call to
get_attributes.
2001-06-15 00:21:06 +00:00
Christopher Faylor 47132198ad * thread.cc (pthread_cond::Signal): Release the condition access variable
correctly.
2001-06-14 23:53:27 +00:00
Egor Duda 96d95e535e * fhandler.cc (fhandler_base::open): Set win32 access flags
to 0, when requested.
* fhandler.h: New status flag FH_QUERYOPEN.
(fhandler::get_query_open): New function.
(fhandler::set_query_open): Ditto.
* syscalls.cc (stat_worker): Request query-only open mode.
2001-06-14 18:21:17 +00:00
Egor Duda 4c15b7aba0 * environ.cc (set_file_api_mode): New function. Move setting
of file APIs mode (OEM/ANSI) here.
(codepage_init): From here.
* winsup.h (set_file_api_mode): Declare it.
* fork.cc (fork_child): Set file APIs mode in forkee.
2001-06-12 11:31:05 +00:00
Christopher Faylor f569bfcfb2 Add missing entry. 2001-06-11 18:20:53 +00:00
Christopher Faylor 3ecfcf5715 * pinfo.cc: Use autoloaded ToolHelp functions throughout for Win9x.
* autoload.cc: Autoload ToolHelp functions.
2001-06-11 17:57:10 +00:00
Christopher Faylor f375b8d9f4 * path.cc (chdir): Fix call to path_conv constructor so that it REALLY doesn't
check for the null/non-empty path.
2001-06-11 15:20:49 +00:00
Christopher Faylor fc633b63a2 * path.cc (path_conv::update_fs_info): Don't consider remote drives to be NTFS.
Set root_dir before invoking GetDriveType (from Kazuhiro Fujieda
<fujieda@jaist.ac.jp>).  Eliminate extra checks for rootdir.
2001-06-11 03:38:32 +00:00
Christopher Faylor 02782489a9 * path.cc (chdir): Pre-check path for validity before eating trailing space.
Then, ensure that path_conv doesn't check the path for validity again.
2001-06-11 00:24:28 +00:00
Christopher Faylor 161edfaa00 * exceptions.cc (sigdelayed): Ensure that signal is cleared as the last
operation or suffer races.
* sigproc.cc (proc_subproc): Deal with zombie array overflow.
2001-06-10 16:00:23 +00:00
Corinna Vinschen 463513f0e2 * cygwin.din: Add fchdir symbols.
* path.cc (chdir): Guard against invalid parameter.
         (fchdir): New function.
         * include/cygwin/version.h: Bump API minor version to 40.
         * uinfo.cc (internal_getlogin): Remove unused variable.
2001-06-10 10:00:21 +00:00
Corinna Vinschen d4217d5680 * syscalls.cc (seteuid): Set environment variables USERNAME and
USERDOMAIN before impersonation to workaround a LookupAccountSid()
        misbehaviour.
        * uinfo.cc (internal_getlogin): Revert most of the previous change.
        Don't set environment variables USERNAME and USERDOMAIN. That's
        the job of seteuid() now. Try to get logon server from Lsa
        only if logon server isn't already known.
2001-06-09 21:25:55 +00:00
Christopher Faylor 5691881058 * thread.cc (pthread_cond::Broadcast): Don't print error messages on invalid
mutexs - user programs are allowed to call pthread_cond_broadcast like that.
(__pthread_cond_timedwait): Initialise themutex properly.
(__pthread_cond_wait): Initialise themutex properly.
2001-06-07 19:55:06 +00:00
Corinna Vinschen 235661a37f * fhandler_console.cc (fhandler_console::dup): Allocate space for
savebuf on Cygwin heap.
        (fhandler_console::char_command): Ditto. Use correct values for size.
2001-06-05 17:59:46 +00:00
Egor Duda 149da470f3 * security.h (NTWriteEA): Change prototype.
* ntea.cc (NTReadEA): Don't check for global ntea setting, now
it's caller responsibility.
(NTWriteEA): Ditto.
* security.cc (get_file_attribute): Read attribute from EA only
if 'ntea' is enabled.
(set_file_attribute): Ditto.
* path.h: (class path_conv): Add members to store file system
information.
(path_conv::get_drive_type): New function.
* syscalls.cc (stat_worker): Use it.
* path.cc (path_conv::update_fs_info): New functions.
(path_conv::check): Get file system information from device where
file resides. On NTFS, try to read symlink contents from EA.
(get_symlink_ea): New function.
(set_symlink_ea): Ditto.
(symlink): Store symlink in extended attribute, if possible.
2001-06-05 10:45:52 +00:00
Corinna Vinschen fa821be37b * fhandler.cc (fhandler_disk_file::fstat): Always reset file position
to original value after checking for executable magic.
2001-06-05 09:21:39 +00:00
Corinna Vinschen f7fa593d6b * cygheap.h (cygheap_user::cygheap_user): Initialize token to
INVALID_HANDLE_VALUE.
        * uinfo.cc (uinfo_init): Close token handle if needed.
2001-06-04 14:29:54 +00:00
Christopher Faylor ac5561f2ed * path.cc (normalize_posix_path): Revert .. check removed by previous changes.
* cygheap.h: Temporarily declare path_prefix_p here.
2001-06-04 01:28:09 +00:00
Corinna Vinschen 9f13167f77 * net.cc (wsock_event): Add destructor. 2001-06-03 22:18:19 +00:00