4e3c8d9425
(exception::exception): Remove old code. Manually install SEH handler instead. (exception::~exception): For x86_64, define frame end label. * exceptions.cc (exception::handler_installed): Remove.
759 lines
30 KiB
Plaintext
759 lines
30 KiB
Plaintext
2014-03-04 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* exception.h (exception::handler_installed): Remove.
|
|
(exception::exception): Remove old code. Manually install SEH handler
|
|
instead.
|
|
(exception::~exception): For x86_64, define frame end label.
|
|
* exceptions.cc (exception::handler_installed): Remove.
|
|
|
|
2014-03-03 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* exception.h (exception::exception): Install vectored exception
|
|
handler rather than vectored continue handler.
|
|
|
|
2014-03-03 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* sec_helper.cc (cygpsid::get_id): Move Samba SID->uid/gid mapping
|
|
from get_sids_info here.
|
|
(get_sids_info): Vice versa.
|
|
* security.cc (convert_samba_sd): New static function to map a Samba
|
|
security descriptor to a security descriptor with UNIX users and groups
|
|
converted to Windows SIDs per RFC 2307 mapping.
|
|
(check_file_access): Call convert_samba_sd on Samba security
|
|
descriptors.
|
|
|
|
2014-02-28 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* uinfo.cc (pwdgrp::fetch_account_from_windows): Only fetch extended
|
|
user info if we're creating a passwd entry. Add comment.
|
|
|
|
2014-02-28 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* cygheap.h (cygheap_user::sid): Return reference to cygpsid rather
|
|
than PSID.
|
|
(cygheap_user::saved_sid): Ditto.
|
|
(cygheap_pwdgrp::cache_t): New type.
|
|
(cygheap_pwdgrp::caching): Convert to cache_t.
|
|
(cygheap_pwdgrp::nss_db_caching): Change accordingly.
|
|
(cygheap_pwdgrp::nss_db_full_caching): New inline method.
|
|
* grp.cc (internal_getgroups): Reinvent. Take cyg_ldap pointer as
|
|
third parameter and use throughout.
|
|
(getgroups32): Call internal_getgroups.
|
|
* pwdgrp.h (internal_getgroups): Declare.
|
|
* uinfo.cc (internal_getlogin): Partial rewrite to accommodate having
|
|
no connection to the DC. Give primary group from user token more
|
|
weight. Generate group entries for all groups in the user token if
|
|
caching is set to NSS_FULL_CACHING.
|
|
(cygheap_pwdgrp::init): Initialize caching to NSS_FULL_CACHING.
|
|
(cygheap_pwdgrp::nss_init_line): Handle "db_cache: full".
|
|
(pwdgrp::add_account_from_windows): Fix group handling in non-caching
|
|
mode.
|
|
(pwdgrp::fetch_account_from_windows): Default primary group for the
|
|
current user to primary group from user token. Check for primary
|
|
domain first after LookupAccountSid failed.
|
|
|
|
2014-02-27 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* autoload.cc (CheckTokenMembership): Import.
|
|
* external.cc (cygwin_internal): Call get_uid/get_gid instead of get_id.
|
|
* grp.cc (internal_getgrsid): Take additional cyg_ldap pointer.
|
|
Forward to pwdgrp::add_group_from_windows.
|
|
(internal_getgrnam): Ditto.
|
|
(internal_getgrgid): Ditto.
|
|
(gr_ent::enumerate_local): Drop ugid_caching bool from call to
|
|
pwdgrp::fetch_account_from_windows.
|
|
(getgroups32): Rename from internal_getgroups and drop getgroups32 stub.
|
|
Drop srchsid parameter and code handling it. Add local cyg_ldap
|
|
instance and forward to internal_getgrXXX.
|
|
(getgroups): Call getgroups32.
|
|
(get_groups): Add local cyg_ldap instance and forward to
|
|
internal_getgrXXX.
|
|
(getgrouplist): Ditto.
|
|
(setgroups32): Ditto.
|
|
* ldap.cc (cyg_ldap::open): Don't call close. Return true if connection
|
|
is already open.
|
|
(cyg_ldap::remap_uid): Forward this to internal_getpwsid.
|
|
(cyg_ldap::remap_gid): Forward this to internal_getgrsid.
|
|
* passwd.cc (internal_getpwsid): Take additional cyg_ldap pointer.
|
|
Forward to pwdgrp::add_user_from_windows.
|
|
(internal_getpwnam): Ditto.
|
|
(internal_getpwuid): Ditto.
|
|
(pg_ent::enumerate_builtin): Drop ugid_caching bool from call to
|
|
pwdgrp::fetch_account_from_windows.
|
|
(pg_ent::enumerate_sam): Ditto.
|
|
(pg_ent::enumerate_ad): Ditto. Forward local cldap instead.
|
|
* pwdgrp.h (internal_getpwsid): Align declaration to above change.
|
|
(internal_getpwnam): Ditto.
|
|
(internal_getpwuid): Ditto.
|
|
(internal_getgrsid): Ditto.
|
|
(internal_getgrgid): Ditto.
|
|
(internal_getgrnam): Ditto.
|
|
(internal_getgroups): Drop declaration.
|
|
(pwdgrp::add_account_from_windows): Align declaration to below change.
|
|
(pwdgrp::add_user_from_windows): Ditto.
|
|
(pwdgrp::add_group_from_windows): Ditto.
|
|
* sec_acl.cc (setacl): Add local cyg_ldap instance and forward to
|
|
internal_getpwuid and internal_getgrgid.
|
|
(getacl): Add local cyg_ldap instance and forward to cygpsid::get_id.
|
|
(aclfromtext32): Add local cyg_ldap instance and forward to
|
|
internal_getpwnam and internal_getgrnam.
|
|
* sec_helper.cc (cygpsid::get_id): Take additional cyg_ldap pointer.
|
|
Forward to internal_getgrsid and internal_getpwsid.
|
|
(get_sids_info): Drop ldap_open. Forward local cldap to
|
|
internal_getpwsid and internal_getgrXXX. Call CheckTokenMembership
|
|
rather than internal_getgroups.
|
|
* security.h (cygpsid::get_id): Add cyg_ldap pointer, drop default
|
|
parameter.
|
|
(cygpsid::get_uid): Add cyg_ldap pointer. Call get_id accordingly.
|
|
(cygpsid::get_gid): Ditto.
|
|
* uinfo.cc (internal_getlogin): Add local cyg_ldap instance and forward
|
|
to internal_getpwXXX and internal_getgrXXX calls.
|
|
(pwdgrp::add_account_from_windows): Take additional cyg_ldap pointer.
|
|
Forward to pwdgrp::fetch_account_from_windows.
|
|
(fetch_posix_offset): Drop ldap_open argument and handling. Get
|
|
cyg_ldap instance as pointer.
|
|
(pwdgrp::fetch_account_from_windows): Take additional cyg_ldap pointer.
|
|
Use it if it's not NULL, local instance otherwise. Drop ldap_open.
|
|
Drop fetching extended group arguments from AD for speed.
|
|
|
|
2014-02-27 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* path.cc (find_fast_cwd_pointer): Fix preceeding comment.
|
|
|
|
2014-02-25 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* fhandler.h (fhandler_console::scroll_buffer_screen): New function.
|
|
* fhandler_console.cc (fhandler_console::scroll_buffer_screen): New function.
|
|
(fhandler_console::char_command): Use scroll_buffer_screen as appropriate.
|
|
(dev_console::scroll_buffer): Remove if 0'ed block.
|
|
|
|
2014-02-22 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* dev_console::scroll_buffer): Reinstate clipping region.
|
|
|
|
2014-02-22 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* fhandler.h (dev_console::is_fullscreen): Delete.
|
|
(dev_console::scroll_window): Return bool indicating success.
|
|
(dev_console::scroll_screen): New function.
|
|
(dev_console::clear_screen): New function.
|
|
(fhandler_console::clear_screen): Make __reg3.
|
|
(fhandler_console::cursor_set): Ditto.
|
|
(fhandler_console::cursor_get): Ditto.
|
|
(fhandler_console::cursor_rel): Ditto.
|
|
* fhandler_console.cc (dev_console::scroll_buffer): Adapt from
|
|
fhandler_console.
|
|
(fhandler_console::scroll_buffer): Use dev_console function.
|
|
(dev_console::is_fullscreen): Delete.
|
|
(dev_console::scroll_window): Return true if we cleared the screen.
|
|
Shrink/grow buffer first before scrolling to ensure that there is
|
|
sufficient space after scrolling.
|
|
(fhandler_console::clear_screen): Make reg3, use dev_console function.
|
|
(dev_console::clear_screen): New function adapted from
|
|
fhandler_console.
|
|
(fhandler_console::cursor_set): Make __reg3.
|
|
(fhandler_console::cursor_rel): Ditto.
|
|
(fhandler_console::cursor_get): Ditto.
|
|
(fhandler_console::write): Fix "reverse index".
|
|
|
|
2014-02-22 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* external.cc (cygwin_internal): Add cases for CW_GETNSSSEP,
|
|
CW_GETPWSID and CW_GETGRSID.
|
|
* grp.cc (internal_getgrsid_from_db): New function.
|
|
* passwd.cc (internal_getpwsid_from_db): New function.
|
|
(pg_ent::setent): Add special case for call from mkpasswd/mkgroup.
|
|
* pwdgrp.h (internal_getpwsid_from_db): Declare.
|
|
(internal_getgrsid_from_db): Declare.
|
|
(enum nss_enum_t): Move to include/sys/cygwin.h.
|
|
(class pg_ent): Add comment.
|
|
* uinfo.cc (pwdgrp::fetch_account_from_windows): Fix typo in comment.
|
|
Change "UNIX" to "Unix" in domain name.
|
|
* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GETNSSSEP,
|
|
CW_GETPWSID and CW_GETGRSID.
|
|
(enum nss_enum_t): Define here.
|
|
|
|
2014-02-21 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* pwdgrp.h (pwdgrp::fetch_account_from_windows): Add bool parameter
|
|
to declaration, set to true by default.
|
|
* uinfo.cc (pwdgrp::fetch_account_from_windows): Add bool parameter
|
|
"ugid_caching". Only add account to ugid_cache if set to true.
|
|
* grp.cc (gr_ent::enumerate_local): Call fetch_account_from_windows
|
|
with ugid_caching parameter set to false.
|
|
* passwd.cc (pg_ent::enumerate_builtin): Ditto.
|
|
(pg_ent::enumerate_sam): Ditto.
|
|
(pg_ent::enumerate_ad): Ditto.
|
|
|
|
2014-02-20 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* grp.cc (getgrouplist): Fix previous fix so ret is only set to ngroups
|
|
if ngroups isn't too small.
|
|
|
|
2014-02-20 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* grp.cc (get_groups): Don't add gid to list if it's ILLEGAL_GID.
|
|
(getgrouplist): Return number of groups, just like glibc.
|
|
|
|
2014-02-19 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* passwd.cc (pg_ent::setent): Initialize cygheap domain info.
|
|
* sec_auth.cc (get_logon_server): Ditto.
|
|
|
|
2014-02-18 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* external.cc (cygwin_internal): Handle new CW_SETENT, CW_GETENT and
|
|
CW_ENDENT info types.
|
|
* grp.cc (setgrent_filtered): New function, called from cygwin_internal.
|
|
(getgrent_filtered): Ditto.
|
|
(endgrent_filtered): Ditto.
|
|
* passwd.cc (pg_ent::setent): Set state explicitely to from_cache.
|
|
(pg_ent::getent): Handle the fact that a DC has no SAM and enumerating
|
|
local accounts is equivalent to enumerating domain accounts.
|
|
(setpwent_filtered): New function, called from cygwin_internal.
|
|
(getpwent_filtered): Ditto.
|
|
(endpwent_filtered): Ditto.
|
|
* pwdgrp.h (setpwent_filtered): Declare.
|
|
(getgrent_filtered): Ditto.
|
|
(endgrent_filtered): Ditto.
|
|
(setpwent_filtered): Ditto.
|
|
(getpwent_filtered): Ditto.
|
|
(endpwent_filtered): Ditto.
|
|
* include/sys/cygwin.h (cygwin_getinfo_types): Add CW_SETENT, CW_GETENT,
|
|
and CW_ENDENT.
|
|
|
|
2014-02-18 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* setlsapwd.cc (setlsapwd): Fix conditional expression after breaking
|
|
it on 2014-01-23.
|
|
|
|
2014-02-17 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* autoload.cc (ldap_abandon): Import.
|
|
(ldap_result): Import.
|
|
(ldap_searchW): Import.
|
|
(NetGroupEnum): Import.
|
|
(NetLocalGroupEnum): Import.
|
|
(NetUserEnum): Import.
|
|
* cygheap.h (class cygheap_pwdgrp): Add members enums and enum_tdoms.
|
|
(cygheap_pwdgrp::nss_db_enums): New inline method.
|
|
(cygheap_pwdgrp::nss_db_enum_tdoms): Ditto.
|
|
* cygtls.h (struct _local_storage): Drop unused members pw_pos and
|
|
grp_pos.
|
|
* grp.cc (grent): New static variable of class gr_ent.
|
|
(gr_ent::enumerate_caches): New method.
|
|
(gr_ent::enumerate_local): New method.
|
|
(gr_ent::getgrent): New method.
|
|
(setgrent): Call gr_ent method.
|
|
(getgrent32): Ditto.
|
|
(endgrent): Ditto.
|
|
* ldap.cc (sid_attr): Rename from nfs_attr.
|
|
(cyg_ldap::close): Abandon still running asynchronous search.
|
|
(cyg_ldap::fetch_ad_account): Reduce filter buffer size.
|
|
(cyg_ldap::enumerate_ad_accounts): New method.
|
|
(cyg_ldap::next_account): New method.
|
|
(cyg_ldap::fetch_posix_offset_for_domain): Reduce filter buffer size.
|
|
(cyg_ldap::fetch_unix_sid_from_ad): Ditto. Fix return value in case
|
|
no value has been read.
|
|
(cyg_ldap::fetch_unix_name_from_rfc2307): Reduce filter buffer size.
|
|
* ldap.h (class cyg_ldap): Add msg_id member.
|
|
(cyg_ldap::enumerate_ad_accounts): Declare.
|
|
(cyg_ldap::next_account): Declare:
|
|
* passwd.cc (pwent): New static variable of class pw_ent.
|
|
(pg_ent::clear_cache): New method.
|
|
(pg_ent::setent): New method.
|
|
(pg_ent::getent): New method.
|
|
(pg_ent::endent): New method.
|
|
(pg_ent::enumerate_file): New method.
|
|
(pg_ent::enumerate_builtin): New method.
|
|
(pg_ent::enumerate_sam): New method.
|
|
(pg_ent::enumerate_ad): New method.
|
|
(pw_ent::enumerate_caches): New method.
|
|
(pw_ent::enumerate_local): New method.
|
|
(pw_ent::getpwent): New method.
|
|
(setpwent): Call pw_ent method.
|
|
(getpwent): Ditto.
|
|
(endpwent): Ditto.
|
|
* pwdgrp.h (class pwdgrp): Define pg_ent, pw_ent and gr_ent as friend
|
|
classes.
|
|
(pwdgrp::add_account_post_fetch): Declare with extra bool parameter.
|
|
(pwdgrp::file_attr): New inline method.
|
|
(enum nss_enum_t): Define.
|
|
(class pg_ent): Define.
|
|
(class pw_ent): Define.
|
|
(class gr_ent): Define.
|
|
* tlsoffsets.h: Regenerate.
|
|
* tlsoffsets64.h: Ditto.
|
|
* uinfo.cc (cygheap_pwdgrp::init): Initialize enums and enum_tdoms.
|
|
(cygheap_pwdgrp::nss_init_line): Fix typo in preceeding comment.
|
|
Handle new "db_enum" keyword.
|
|
(pwdgrp::add_account_post_fetch): Take additional `bool lock' parameter
|
|
and acquire pglock before adding element to array if lock is true.
|
|
(pwdgrp::add_account_from_file): Call add_account_post_fetch with lock
|
|
set to true.
|
|
(pwdgrp::add_account_from_windows): Ditto in case of caching.
|
|
(pwdgrp::fetch_account_from_windows): Handle builtin aliases only
|
|
known to the domain controller. Only call NetLocalGroupGetInfo for
|
|
aliases.
|
|
|
|
2014-02-16 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* miscfuncs.h (NT_readline::close): New function to close handle.
|
|
(NT_readline::~NT_readline): Call close.
|
|
* sec_auth.cc (verify_token): Use constructor to initialize tok_usersid.
|
|
* security.h (cygsid::cygsid): Add copy constructor taking cygsid as
|
|
source.
|
|
|
|
2014-02-16 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* dcrt0.cc (dll_crt0_1): Call initial_setlocale before fetching
|
|
current user information.
|
|
|
|
2014-02-15 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* DevNotes: Add entry cgf-000024.
|
|
* fhandler.h (dev_console::state): Remove trailing underscore.
|
|
(dev_console::args): Ditto.
|
|
(dev_console::nargs): Ditto.
|
|
(dev_console::info): Eliminate subclass.
|
|
(dev_console::dwEnd): New field.
|
|
(dev_console::scroll_window): New function.
|
|
(dev_console::is_fullscreen): Ditto.
|
|
(dev_console::fillin): Rename from fillin_info.
|
|
(fhandler_console::scroll_buffer): Rename from scroll_screen.
|
|
* fhandler_console.cc: Throughout s/dev_state\.info/dev_state/g.
|
|
Accommodate other name changes.
|
|
(dev_console::fillin): Accommodate rename. Notice max x/y written to.
|
|
Forgo memset if GetConsoleScreenBufferInfo fails.
|
|
(fhandler_console::scroll_buffer): Accommodate rename. Don't treat y
|
|
coordinate of zero as top of screen.
|
|
(dev_console::is_fullscreen): New function.
|
|
(dev_console::scroll_window): Ditto.
|
|
(fhandler_console::clear_screen): Just scroll the screen when clearing
|
|
the screen in a state where the screen buffer is bigger than the
|
|
screen.
|
|
(fhandler_console::char_command): Try harder to get 'S' and 'T' working
|
|
in the presence of a screen buffer. Use temporary 'n' variable rather
|
|
than dev_state.args[0]. Use GNU ?: shortcut method.
|
|
|
|
2014-02-14 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* pinfo.cc (winpids::add): Always copy pinfo structure when winpid.
|
|
Fill out dwProcessId explicitly to handle exec from a windows process.
|
|
(winpids::enum_processes): Reorganize to iterate over known cygwin pids
|
|
when !winpid. Simplify logic. Don't do duplicate detection for
|
|
winpid.
|
|
|
|
2014-02-14 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* uinfo.cc (pwdgrp::fetch_account_from_windows): Default to /bin/bash
|
|
as login shell.
|
|
|
|
2014-02-13 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* ldap.cc (cyg_ldap::fetch_posix_offset_for_domain): If domain name
|
|
has no dot, it's a Netbios name. Change the search filter expression
|
|
accordingly and filter by flatName. Add comment.
|
|
* uinfo.cc (cygheap_domain_info::init): Gracefully handle NULL
|
|
DnsDomainName and DomainSid members in DS_DOMAIN_TRUSTSW structure.
|
|
Add comment. Fix comment preceeding fetching the mapping server
|
|
from registry.
|
|
(pwdgrp::fetch_account_from_file): Convert str to a local array.
|
|
(fetch_posix_offset): New static function.
|
|
(pwdgrp::fetch_account_from_windows): Add debug output in case
|
|
LookupAccountSidW fails. Simplify code by calling fetch_posix_offset
|
|
where appropriate. If LookupAccountSidW fails, check if the SID is
|
|
one of the known trusted domains. If so, create a more informative
|
|
account entry.
|
|
|
|
2014-02-12 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* uinfo.cc (cygheap_pwdgrp::nss_init_line): Explicitely ignore a colon
|
|
as separator char.
|
|
|
|
2014-02-11 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* winsup.h: Turn off previous workaround but leave a comment.
|
|
|
|
2014-02-11 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* ldap.cc (rediscover_thread): Give argument a useful name.
|
|
* miscfuncs.cc (NT_readline::init): It's a really bad idea trying to
|
|
print a pointer to a PUNICODE_STRING as PUNICODE_STRING. Fix it.
|
|
* uinfo.cc (cygheap_domain_info::init): Print status codes as hex
|
|
values in debug output.
|
|
|
|
2014-02-11 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* autoload.cc (NetLocalGroupGetInfo): Replace NetGroupGetInfo.
|
|
* cygheap.h (class cygheap_ugid_cache): Move ugid_cache_t type here
|
|
and rename.
|
|
(struct init_cygheap): Add cygheap_ugid_cache member "ugid_cache".
|
|
* pwdgrp.h (class ugid_cache_t): Remove here.
|
|
* fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Accommodate
|
|
move of ugid_cache to cygheap.
|
|
* sec_helper.cc (get_sids_info): Ditto.
|
|
* uinfo.cc (ugid_cache): Remove.
|
|
(pwdgrp::fetch_account_from_windows): Define id_val globally.
|
|
Move SidTypeAlias handling into SidTypeUser/SidTypeGroup branch since
|
|
aliases are handled like groups in SAM. Accommodate move of ugid_cache
|
|
to cygheap. Consolidate code reading SAM comments into a single branch
|
|
for both, SidTypeUser and SidTypeAlias. For SidTypeAlias, fix thinko
|
|
and call NetLocalGroupGetInfo rather than NetGroupGetInfo. Simplify
|
|
code setting Cygwin primary group for SAM accounts. Add code to handle
|
|
UNIX uid/gid from SAM comment.
|
|
|
|
2014-02-11 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* winsup.h (Interlocked*): Use intrinsic versions of Interlocked
|
|
functions.
|
|
|
|
* cygwin.sc.in: More closely emulate default pe/i386 linker script.
|
|
|
|
2014-02-10 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* uinfo.cc (cygheap_domain_info::init): Drop accidentally leftover if
|
|
statement.
|
|
|
|
2014-02-10 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* uinfo.cc (cygheap_domain_info::init): Fix handling of account domain
|
|
on donmain controllers. Explain why.
|
|
|
|
2014-02-10 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* cygheap.cc (cwcsdup): Change parameter to correct PWCSTR.
|
|
(cwcsdup1): Ditto.
|
|
* cygheap_malloc.h: Change declarations accordingly.
|
|
|
|
2014-02-10 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* uinfo.cc (pwdgrp::fetch_account_from_windows): Add code to allow
|
|
setting the primary group from the SAM comment field.
|
|
|
|
2014-02-10 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* dcrt0.cc (child_info_spawn::handle_spawn): Call fixup_lockf_after_exec
|
|
with additional argument to specify if the process has been execed
|
|
or spawned.
|
|
* flock.cc (fixup_lockf_after_exec): Take bool parameter to handle
|
|
exec and spawn differently. In case of spawn, just give up POSIX
|
|
locks in favor of the still running parent. Add comments to explain.
|
|
|
|
2014-02-09 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* environ.cc (strbrk): Properly deal with environment variable sans
|
|
quote.
|
|
|
|
2014-02-09 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* environ.cc (strbrk): New function.
|
|
(parse_options): Use strbrk to parse CYGWIN environment variable.
|
|
|
|
2014-02-09 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
Introduce reading passwd/group entries from SAM/AD. Introduce
|
|
/etc/nsswitch.conf file to configure it.
|
|
* Makefile.in (DLL_OFILES): Add ldap.o.
|
|
* autoload.cc: Import ldap functions from wldap32.dll.
|
|
(DsEnumerateDomainTrustsW): Import.
|
|
(NetGroupGetInfo): Import.
|
|
* cygheap.h (class cygheap_domain_info): New class to keep global
|
|
domain info.
|
|
(class cygheap_pwdgrp): New class to keep passwd/group caches and
|
|
configuration info from /etc/nssswitch.conf.
|
|
(struct init_cygheap): Add cygheap_domain_info member "dom" and
|
|
cygheap_pwdgrp member "pg".
|
|
* cygtls.h (struct _local_storage): Remove unused member "res".
|
|
Rearrange slightly, Add members pwbuf and grbuf to implement non-caching
|
|
passwd/group fetching from SAM/AD. Make pw_pos and pw_pos unsigned.
|
|
* fhandler_disk_file.cc (fhandler_base::fstat_by_nfs_ea): Add RFC 2307
|
|
uid/gid mapping.
|
|
* fhandler_process.cc: Drop including pwdgrp.h.
|
|
* fhandler_procsysvipc.cc: Ditto.
|
|
* fhandler_registry.cc (fhandler_registry::fstat): Set key uid/gid
|
|
to ILLEGAL_UID/ILLEGAL_GID rather than UNKNOWN_UID/UNKNOWN_GID.
|
|
* grp.cc (group_buf): Drop.
|
|
(gr): Drop.
|
|
(pwdgrp::parse_group): Fill pg_grp.
|
|
(pwdgrp::read_group): Remove.
|
|
(pwdgrp::init_grp): New method.
|
|
(pwdgrp::prep_tls_grbuf): New method.
|
|
(pwdgrp::find_group): New methods.
|
|
(internal_getgrsid): Convert to call new pwdgrp methods.
|
|
(internal_getgrnam): Ditto.
|
|
(internal_getgrgid): Ditto.
|
|
(getgrgid_r): Drop 2nd parameter from internal_getgrgid call.
|
|
(getgrgid32): Ditto.
|
|
(getgrnam_r): Ditto for internal_getgrnam.
|
|
(getgrnam32): Ditto.
|
|
(getgrent32): Convert to call new pwdgrp methods.
|
|
(internal_getgrent): Remove.
|
|
(internal_getgroups): Simplify, especially drop calls to
|
|
internal_getgrent.
|
|
* ldap.cc: New file implementing cyg_ldap class for LDAP access to AD
|
|
and RFC 2307 server.
|
|
* ldap.h: New header, declaring cyg_ldap class.
|
|
* passwd.cc (passwd_buf): Drop.
|
|
(pr): Drop.
|
|
(pwdgrp::parse_passwd): Fill pg_pwd.
|
|
(pwdgrp::read_passwd): Remove.
|
|
(pwdgrp::init_pwd): New method.
|
|
(pwdgrp::prep_tls_pwbuf): New method.
|
|
(find_user): New methods.
|
|
(internal_getpwsid): Convert to call new pwdgrp methods.
|
|
(internal_getpwnam): Ditto.
|
|
(internal_getpwuid): Ditto.
|
|
(getpwuid32): Drop 2nd parameter from internal_getpwuid call.
|
|
(getpwuid_r): Ditto.
|
|
(getpwnam): Ditto for internal_getpwnam.
|
|
(getpwnam_r): Ditto.
|
|
(getpwent): Convert to call new pwdgrp methods.
|
|
* path.cc (class etc): Remove all methods.
|
|
* path.h (class etc): Drop.
|
|
* pinfo.cc (pinfo_basic::pinfo_basic): Set gid to ILLEGAL_GID rather
|
|
than UNKNOWN_GID.
|
|
(pinfo_init): Ditto.
|
|
* pwdgrp.h (internal_getpwnam): Drop 2nd parameter from declaration.
|
|
(internal_getpwuid): Ditto.
|
|
(internal_getgrgid): Ditto.
|
|
(internal_getgrnam): Ditto.
|
|
(internal_getgrent): Drop declaration.
|
|
(enum fetch_user_arg_type_t): New type.
|
|
(struct fetch_user_arg_t): New type.
|
|
(struct pg_pwd): New type.
|
|
(struct pg_grp): New type.
|
|
(class pwdgrp): Rework to provide functions for file and db requests
|
|
and caching.
|
|
(class ugid_cache_t): New class to provide RFC 2307 uid map caching.
|
|
(ugid_cache): Declare.
|
|
* sec_acl.cc: Drop including pwdgrp.h.
|
|
* sec_auth.cc: Drop including dsgetdc.h and pwdgrp.h.
|
|
(get_logon_server): Convert third parameter to ULONG flags argument
|
|
to allow arbitrary flags values in DsGetDcNameW call and change calls
|
|
to this function throughout. Use cached account domain name rather
|
|
than calling GetComputerNameW.
|
|
(get_unix_group_sidlist): Remove.
|
|
(get_server_groups): Drop call to get_unix_group_sidlist.
|
|
(verify_token): Rework token group check without calling
|
|
internal_getgrent.
|
|
* sec_helper.cc (cygpsid::pstring): New methods, like string() but
|
|
return pointer to end of string.
|
|
(cygsid::getfromstr): Add wide character implementation.
|
|
(get_sids_info): Add RFC 2307 uid/gid mapping for Samba shares.
|
|
* security.cc: Drop including pwdgrp.h.
|
|
* security.h (DEFAULT_UID): Remove.
|
|
(UNKNOWN_UID): Remove.
|
|
(UNKNOWN_GID): Remove.
|
|
(uinfo_init): Move here from winsup.h.
|
|
(ILLEGAL_UID): Ditto.
|
|
(ILLEGAL_GID): Ditto.
|
|
(UNIX_POSIX_OFFSET): Define. Add lengthy comment.
|
|
(UNIX_POSIX_MASK): Ditto.
|
|
(MAP_UNIX_TO_CYGWIN_ID): Ditto.
|
|
(ILLEGAL_UID16): Move here from winsup.h.
|
|
(ILLEGAL_GID16): Ditto.
|
|
(uid16touid32): Ditto.
|
|
(gid16togid32): Ditto.
|
|
(sid_id_auth): New convenience macro for SID component access.
|
|
(sid_sub_auth_count): Ditto.
|
|
(sid_sub_auth): Ditto.
|
|
(sid_sub_auth_rid): Ditto.
|
|
(cygpsid::pstring): Declare.
|
|
(cygsid::getfromstr): Declare wide character variant.
|
|
(cygsid::operator=): Ditto.
|
|
(cygsid::operator*=): Ditto.
|
|
(get_logon_server): Change declaration according to source code.
|
|
* setlsapwd.cc (setlsapwd): Drop 2nd parameter from internal_getpwnam
|
|
call.
|
|
* shared.cc (memory_init): Call cygheap->pg.init in first process.
|
|
* syscalls.cc: Drop including pwdgrp.h.
|
|
* tlsoffsets.h: Regenerate.
|
|
* tlsoffsets64.h: Ditto.
|
|
* uinfo.cc (internal_getlogin): Drop gratuitious internal_getpwuid
|
|
call. Fix debug output. Overwrite user gid in border case of a
|
|
missing passwd file while a group file exists.
|
|
(pwdgrp::add_line): Allocate memory on cygheap.
|
|
(pwdgrp::load): Remove.
|
|
(ugid_cache): Define.
|
|
(cygheap_pwdgrp::init): New method.
|
|
(cygheap_pwdgrp::nss_init_line): New method.
|
|
(cygheap_pwdgrp::_nss_init): New method.
|
|
(cygheap_domain_info::init): New method.
|
|
(logon_sid): Define.
|
|
(get_logon_sid): New function.
|
|
(pwdgrp::add_account_post_fetch): New method.
|
|
(pwdgrp::add_account_from_file): New methods.
|
|
(pwdgrp::add_account_from_windows): New methods.
|
|
(pwdgrp::check_file): New method.
|
|
(pwdgrp::fetch_account_from_line): New method.
|
|
(pwdgrp::fetch_account_from_file): New method.
|
|
(pwdgrp::fetch_account_from_windows): New method.
|
|
* winsup.h: Move aforementioned macros and declarations to security.h.
|
|
|
|
2014-02-09 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* sigproc.cc (sig_send): Don't bother with an error message if we are
|
|
exiting.
|
|
|
|
2014-02-08 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* miscfuncs.h (class NT_readline): New class to implement line-wise
|
|
reading from file using native NT functions.
|
|
* miscfuncs.cc (NT_readline::init): New method.
|
|
(NT_readline::fgets): New method.
|
|
* mount.cc (mount_info::from_fstab): Utilize NT_readline to read
|
|
fstab files.
|
|
|
|
2014-02-06 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* fhandler_disk_file.cc (fhandler_disk_file::fchown): Fix typo in
|
|
comment.
|
|
* mount.cc (mount_info::from_fstab): Use tmp_pathbuf rather than
|
|
stack for big local buffer.
|
|
* net.cc (cygwin_gethostname): Call GetComputerNameExA rather than
|
|
GetComputerNameA if gethostname failed.
|
|
* shared.cc (user_info::initialize): Fix formatting.
|
|
|
|
2014-02-06 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* include/sys/file.h: Define flock and accompanying macros if not
|
|
already defined in sys/_default_fcntl.h.
|
|
|
|
2014-02-04 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 29.
|
|
|
|
2014-01-30 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* dir.cc (opendir): Call set_unique_id only with valid fh.
|
|
|
|
2014-01-30 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* fhandler.h (cltype): Add cl_buf_beg, cl_buf_end.
|
|
* fhandler_console.cc (dev_console::console_attrs::set_cl_x): Honor
|
|
buffer locations.
|
|
(dev_console::console_attrs::set_cl_y): Ditto.
|
|
(fhandler_console::write): On reset, use absolute positioning to go to
|
|
beginning of buffer. Clear entire buffer.
|
|
|
|
2014-01-27 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* gendef (_setjmp (x86)): Save FPU control word location in sequential
|
|
location. Adjust sigstack save accordingly.
|
|
(_longjmp (x86)): Ditto for restore.
|
|
|
|
2014-01-27 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* gendef (sigdelayed (x86_64)): Save and restore FPU control word.
|
|
(_sigdelayed (x86)): Ditto. Save and restore XMM registers. Add
|
|
comment.
|
|
(_setjmp (x86)): Save FPU control word, following FreeBSD here.
|
|
(_longjmp (x86)): Restore FPU control word.
|
|
|
|
2014-01-24 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* winf.cc (linebuf::fromargv): Treat '=' as a special character.
|
|
|
|
2014-01-23 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* security.h (open_local_policy): Remove declaration.
|
|
(lsa_open_policy): Declare.
|
|
(lsa_close_policy): Declare.
|
|
* sec_auth.cc (lsa_open_policy): Rename from open_local_policy. Take
|
|
server name as parameter. Return NULL in case of error, rather than
|
|
INVALID_HANDLE_VALUE.
|
|
(lsa_close_policy): Rename from close_local_policy. Make externally
|
|
available. Get handle by value.
|
|
(create_token): Convert call to open_local_policy/close_local_policy
|
|
according to aforementioned changes.
|
|
(lsaauth): Ditto.
|
|
(lsaprivkeyauth): Ditto.
|
|
* setlsapwd.cc (setlsapwd): Ditto.
|
|
|
|
2014-01-22 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* path.cc (etc::test_file_change): In case of NtQueryFullAttributesFile
|
|
returning an error, only return true if file actually exists.
|
|
|
|
2014-01-20 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* include/cygwin/in6.h (struct ipv6_rt_hdr): Define.
|
|
* include/cygwin/socket.h: Fix formatting.
|
|
(IP_UNICAST_IF): Define.
|
|
(IPV6_JOIN_GROUP): Remove Windowism.
|
|
(IPV6_LEAVE_GROUP): Ditto.
|
|
(IPV6_UNICAST_IF): Define.
|
|
(IPV6_TCLASS): Ditto.
|
|
(IPV6_RECVTCLASS): Ditto.
|
|
|
|
2014-01-18 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* include/netinet/ip6.h: New file, copied from FreeBSD vebatim.
|
|
|
|
2014-01-17 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* dtable.h (dtable::lock): Revert static.
|
|
(dtable::unlock): Ditto.
|
|
|
|
2014-01-17 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* passwd.cc (setpassent): Align to BSD definition.
|
|
|
|
2014-01-17 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* syscalls.cc (popen): Introduce Glibc 'e' flag to allow thread-safe
|
|
opening of the pipe with O_CLOEXEC flag. Simplify FD_CLOEXEC handling.
|
|
|
|
2014-01-17 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* include/sys/file.h (LOCK_SH): Drop definition in favor of new
|
|
definitions in newlib.
|
|
(LOCK_EX): Ditto.
|
|
(LOCK_NB): Ditto.
|
|
(LOCK_UN): Ditto.
|
|
(flock): Ditto.
|
|
(F_OK): Drop. Already correctly defined in unistd.h.
|
|
(X_OK): Ditto.
|
|
(W_OK): Ditto.
|
|
(R_OK): Ditto.
|
|
|
|
2014-01-17 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
* include/cygwin/config.h (_STDIO_BSD_SEMANTICS): Define as 1.
|
|
|
|
2014-01-16 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* dtable.h (dtable::lock): Make static.
|
|
(dtable::unlock): Ditto.
|
|
|
|
2014-01-08 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* exception.h (cygwin_exception::open_stackdumpfile): Move old
|
|
function into class.
|
|
(cygwin_exception::h): New member.
|
|
(cygwin_exception::cygwin_exception): Initialize h to NULL.
|
|
* exceptions.cc (cygwin_exception::open_stackdumpfile): Move into
|
|
cygwin_exception class. Use 'h' class member.
|
|
(cygwin_exception::dumpstack): Close stack dump file handle if opened.
|
|
|
|
2014-01-04 Christopher Faylor <me.cygwin2014@cgf.cx>
|
|
|
|
* fhandler.h (cltype): New enum.
|
|
(dev_console::console_attrs): Define struct name.
|
|
(dev_console::console_attrs::set_cl_x): New function.
|
|
(dev_console::console_attrs::set_cl_y): New function.
|
|
(fhandler_console::clear_screen): Redefine input params.
|
|
* fhandler_console.cc: Throughout, reflect change in arguments to
|
|
fhandler_console::clear_screeen.
|
|
(fhandler_console::mouse_aware): Simplify logic slightly.
|
|
(fhandler_console::scroll_screen): Remove hopefully obsolete win95
|
|
code.
|
|
(dev_console::console_attrs::set_cl_x): New function.
|
|
(dev_console::console_attrs::set_cl_y): New function.
|
|
(fhandler_console::clear_screen): Redefine input params. Calculate
|
|
position based on enum value.
|
|
(region_split): Change arguments. Simplify.
|
|
(ReadConsoleOutputWrapper): Remove coord argument since we now always
|
|
use 0, 0. Send extra arguments to region_split.
|