summaryrefslogtreecommitdiffstats
path: root/winsup/lsaauth/cyglsa.c
diff options
context:
space:
mode:
authorcvs2svn <>2014-02-18 19:58:41 +0000
committercvs2svn <>2014-02-18 19:58:41 +0000
commitb5279ecc51ff751ccd052fbb7c20efd529575f7e (patch)
tree64141e96a5d64ae59fb7f410270e4daa41878a03 /winsup/lsaauth/cyglsa.c
parenta2a48cb593a9b3cc3f5c63c39f52c32db31cec50 (diff)
downloadcygnal-b5279ecc51ff751ccd052fbb7c20efd529575f7e.tar.gz
cygnal-b5279ecc51ff751ccd052fbb7c20efd529575f7e.tar.bz2
cygnal-b5279ecc51ff751ccd052fbb7c20efd529575f7e.zip
This commit was manufactured by cvs2svn to create tag 'cygwin-pre-user-db'.cygwin-pre-user-db
Sprout from cygwin-1_7_29-release-branchpoint 2014-02-18 19:58:40 UTC cvs2svn 'This commit was manufactured by cvs2svn to create branch 'cygwin-1_7_29' Cherrypick from master 2014-02-08 22:25:11 UTC Corinna Vinschen <corinna@vinschen.de> 'Fix ChangeLog': winsup/cygwin/ChangeLog winsup/cygwin/miscfuncs.cc winsup/cygwin/miscfuncs.h winsup/cygwin/mount.cc Delete: winsup/COPYING winsup/CYGWIN_LICENSE winsup/ChangeLog winsup/Makefile.common winsup/Makefile.in winsup/README winsup/acinclude.m4 winsup/aclocal.m4 winsup/autogen.sh winsup/c++wrap winsup/ccwrap winsup/config.guess winsup/config.sub winsup/configure winsup/configure.ac winsup/configure.cygwin winsup/cygserver/ChangeLog winsup/cygserver/ChangeLog.64bit winsup/cygserver/Makefile.in winsup/cygserver/README winsup/cygserver/aclocal.m4 winsup/cygserver/autogen.sh winsup/cygserver/bsd_helper.cc winsup/cygserver/bsd_helper.h winsup/cygserver/bsd_log.cc winsup/cygserver/bsd_log.h winsup/cygserver/bsd_mutex.cc winsup/cygserver/bsd_mutex.h winsup/cygserver/client.cc winsup/cygserver/configure winsup/cygserver/configure.ac winsup/cygserver/cygserver-config winsup/cygserver/cygserver.cc winsup/cygserver/cygserver.conf winsup/cygserver/msg.cc winsup/cygserver/process.cc winsup/cygserver/process.h winsup/cygserver/sem.cc winsup/cygserver/setpwd.cc winsup/cygserver/shm.cc winsup/cygserver/sysv_msg.cc winsup/cygserver/sysv_sem.cc winsup/cygserver/sysv_shm.cc winsup/cygserver/threaded_queue.cc winsup/cygserver/threaded_queue.h winsup/cygserver/transport.cc winsup/cygserver/transport.h winsup/cygserver/transport_pipes.cc winsup/cygserver/transport_pipes.h winsup/cygserver/woutsup.h winsup/cygwin/release/1.7.29 winsup/doc/.cvsignore winsup/doc/ChangeLog winsup/doc/Makefile.in winsup/doc/README winsup/doc/Wishlist winsup/doc/aclocal.m4 winsup/doc/bodysnatcher.pl winsup/doc/configure winsup/doc/configure.ac winsup/doc/cygserver.xml winsup/doc/cygwin-api.in.xml winsup/doc/cygwin-ug-net.xml winsup/doc/cygwin.xsl winsup/doc/cygwinenv.xml winsup/doc/dll.xml winsup/doc/doctool.c winsup/doc/doctool.txt winsup/doc/effectively.xml winsup/doc/faq-api.xml winsup/doc/faq-copyright.xml winsup/doc/faq-programming.xml winsup/doc/faq-resources.xml winsup/doc/faq-setup.xml winsup/doc/faq-using.xml winsup/doc/faq-what.xml winsup/doc/faq.xml winsup/doc/fhandler-tut.txt winsup/doc/filemodes.xml winsup/doc/fo.xsl winsup/doc/gcc.xml winsup/doc/gdb.xml winsup/doc/highlights.xml winsup/doc/legal.xml winsup/doc/new-features.xml winsup/doc/ntsec.xml winsup/doc/ov-ex-unix.xml winsup/doc/ov-ex-win.xml winsup/doc/overview.xml winsup/doc/pathnames.xml winsup/doc/programming.xml winsup/doc/setup-env.xml winsup/doc/setup-files.xml winsup/doc/setup-locale.xml winsup/doc/setup-maxmem.xml winsup/doc/setup-net.xml winsup/doc/specialnames.xml winsup/doc/textbinary.xml winsup/doc/ug-info.xml winsup/doc/using.xml winsup/doc/windres.xml winsup/doc/xidepend winsup/install-sh winsup/lsaauth/ChangeLog winsup/lsaauth/ChangeLog.64bit winsup/lsaauth/Makefile.in winsup/lsaauth/aclocal.m4 winsup/lsaauth/configure winsup/lsaauth/configure.ac winsup/lsaauth/cyglsa-config winsup/lsaauth/cyglsa.c winsup/lsaauth/cyglsa.din winsup/lsaauth/cyglsa64.def winsup/testsuite/ChangeLog winsup/testsuite/Makefile.in winsup/testsuite/README winsup/testsuite/aclocal.m4 winsup/testsuite/config/default.exp winsup/testsuite/configure winsup/testsuite/configure.ac winsup/testsuite/cygrun.c winsup/testsuite/libltp/include/dataascii.h winsup/testsuite/libltp/include/databin.h winsup/testsuite/libltp/include/file_lock.h winsup/testsuite/libltp/include/forker.h winsup/testsuite/libltp/include/open_flags.h winsup/testsuite/libltp/include/pattern.h winsup/testsuite/libltp/include/random_range.h winsup/testsuite/libltp/include/rmobj.h winsup/testsuite/libltp/include/search_path.h winsup/testsuite/libltp/include/str_to_bytes.h winsup/testsuite/libltp/include/string_to_tokens.h winsup/testsuite/libltp/include/test.h winsup/testsuite/libltp/include/tlibio.h winsup/testsuite/libltp/include/usctest.h winsup/testsuite/libltp/include/write_log.h winsup/testsuite/libltp/lib/dataascii.c winsup/testsuite/libltp/lib/databin.c winsup/testsuite/libltp/lib/datapid.c winsup/testsuite/libltp/lib/forker.c winsup/testsuite/libltp/lib/get_high_address.c winsup/testsuite/libltp/lib/libtestsuite.c winsup/testsuite/libltp/lib/open_flags.c winsup/testsuite/libltp/lib/parse_opts.c winsup/testsuite/libltp/lib/pattern.c winsup/testsuite/libltp/lib/rmobj.c winsup/testsuite/libltp/lib/search_path.c winsup/testsuite/libltp/lib/str_to_bytes.c winsup/testsuite/libltp/lib/string_to_tokens.c winsup/testsuite/libltp/lib/tst_res.c winsup/testsuite/libltp/lib/tst_sig.c winsup/testsuite/libltp/lib/tst_tmpdir.c winsup/testsuite/libltp/lib/write_log.c winsup/testsuite/winsup.api/checksignal.c winsup/testsuite/winsup.api/crlf.c winsup/testsuite/winsup.api/cygload.cc winsup/testsuite/winsup.api/cygload.exp winsup/testsuite/winsup.api/cygload.h winsup/testsuite/winsup.api/devdsp.c winsup/testsuite/winsup.api/devdsp_okay.h winsup/testsuite/winsup.api/devzero.c winsup/testsuite/winsup.api/iospeed.c winsup/testsuite/winsup.api/known_bugs.tcl winsup/testsuite/winsup.api/ltp/access01.c winsup/testsuite/winsup.api/ltp/access03.c winsup/testsuite/winsup.api/ltp/access04.c winsup/testsuite/winsup.api/ltp/access05.c winsup/testsuite/winsup.api/ltp/alarm01.c winsup/testsuite/winsup.api/ltp/alarm02.c winsup/testsuite/winsup.api/ltp/alarm03.c winsup/testsuite/winsup.api/ltp/alarm07.c winsup/testsuite/winsup.api/ltp/asyncio02.c winsup/testsuite/winsup.api/ltp/chdir02.c winsup/testsuite/winsup.api/ltp/chdir04.c winsup/testsuite/winsup.api/ltp/chmod01.c winsup/testsuite/winsup.api/ltp/chmod02.c winsup/testsuite/winsup.api/ltp/chown01.c winsup/testsuite/winsup.api/ltp/close01.c winsup/testsuite/winsup.api/ltp/close02.c winsup/testsuite/winsup.api/ltp/close08.c winsup/testsuite/winsup.api/ltp/creat01.c winsup/testsuite/winsup.api/ltp/creat03.c winsup/testsuite/winsup.api/ltp/creat09.c winsup/testsuite/winsup.api/ltp/dup01.c winsup/testsuite/winsup.api/ltp/dup02.c winsup/testsuite/winsup.api/ltp/dup03.c winsup/testsuite/winsup.api/ltp/dup04.c winsup/testsuite/winsup.api/ltp/dup05.c winsup/testsuite/winsup.api/ltp/execl01.c winsup/testsuite/winsup.api/ltp/execle01.c winsup/testsuite/winsup.api/ltp/execlp01.c winsup/testsuite/winsup.api/ltp/execv01.c winsup/testsuite/winsup.api/ltp/execve01.c winsup/testsuite/winsup.api/ltp/execvp01.c winsup/testsuite/winsup.api/ltp/exit01.c winsup/testsuite/winsup.api/ltp/exit02.c winsup/testsuite/winsup.api/ltp/fchdir01.c winsup/testsuite/winsup.api/ltp/fchdir02.c winsup/testsuite/winsup.api/ltp/fchmod01.c winsup/testsuite/winsup.api/ltp/fchown01.c winsup/testsuite/winsup.api/ltp/fcntl02.c winsup/testsuite/winsup.api/ltp/fcntl03.c winsup/testsuite/winsup.api/ltp/fcntl04.c winsup/testsuite/winsup.api/ltp/fcntl05.c winsup/testsuite/winsup.api/ltp/fcntl07.c winsup/testsuite/winsup.api/ltp/fcntl07B.c winsup/testsuite/winsup.api/ltp/fcntl08.c winsup/testsuite/winsup.api/ltp/fcntl09.c winsup/testsuite/winsup.api/ltp/fcntl10.c winsup/testsuite/winsup.api/ltp/fork01.c winsup/testsuite/winsup.api/ltp/fork02.c winsup/testsuite/winsup.api/ltp/fork03.c winsup/testsuite/winsup.api/ltp/fork04.c winsup/testsuite/winsup.api/ltp/fork06.c winsup/testsuite/winsup.api/ltp/fork07.c winsup/testsuite/winsup.api/ltp/fork09.c winsup/testsuite/winsup.api/ltp/fork10.c winsup/testsuite/winsup.api/ltp/fork11.c winsup/testsuite/winsup.api/ltp/fpathconf01.c winsup/testsuite/winsup.api/ltp/fstat01.c winsup/testsuite/winsup.api/ltp/fstat02.c winsup/testsuite/winsup.api/ltp/fstat03.c winsup/testsuite/winsup.api/ltp/fstat04.c winsup/testsuite/winsup.api/ltp/fsync01.c winsup/testsuite/winsup.api/ltp/ftruncate01.c winsup/testsuite/winsup.api/ltp/ftruncate02.c winsup/testsuite/winsup.api/ltp/ftruncate03.c winsup/testsuite/winsup.api/ltp/getegid01.c winsup/testsuite/winsup.api/ltp/geteuid01.c winsup/testsuite/winsup.api/ltp/getgid01.c winsup/testsuite/winsup.api/ltp/getgid02.c winsup/testsuite/winsup.api/ltp/getgid03.c winsup/testsuite/winsup.api/ltp/getgroups01.c winsup/testsuite/winsup.api/ltp/getgroups02.c winsup/testsuite/winsup.api/ltp/gethostid01.c winsup/testsuite/winsup.api/ltp/gethostname01.c winsup/testsuite/winsup.api/ltp/getpgid01.c winsup/testsuite/winsup.api/ltp/getpgid02.c winsup/testsuite/winsup.api/ltp/getpgrp01.c winsup/testsuite/winsup.api/ltp/getpid01.c winsup/testsuite/winsup.api/ltp/getpid02.c winsup/testsuite/winsup.api/ltp/getppid01.c winsup/testsuite/winsup.api/ltp/getppid02.c winsup/testsuite/winsup.api/ltp/getuid01.c winsup/testsuite/winsup.api/ltp/getuid02.c winsup/testsuite/winsup.api/ltp/getuid03.c winsup/testsuite/winsup.api/ltp/kill01.c winsup/testsuite/winsup.api/ltp/kill02.c winsup/testsuite/winsup.api/ltp/kill03.c winsup/testsuite/winsup.api/ltp/kill04.c winsup/testsuite/winsup.api/ltp/kill09.c winsup/testsuite/winsup.api/ltp/link02.c winsup/testsuite/winsup.api/ltp/link03.c winsup/testsuite/winsup.api/ltp/link04.c winsup/testsuite/winsup.api/ltp/link05.c winsup/testsuite/winsup.api/ltp/lseek01.c winsup/testsuite/winsup.api/ltp/lseek02.c winsup/testsuite/winsup.api/ltp/lseek03.c winsup/testsuite/winsup.api/ltp/lseek04.c winsup/testsuite/winsup.api/ltp/lseek05.c winsup/testsuite/winsup.api/ltp/lseek06.c winsup/testsuite/winsup.api/ltp/lseek07.c winsup/testsuite/winsup.api/ltp/lseek08.c winsup/testsuite/winsup.api/ltp/lseek09.c winsup/testsuite/winsup.api/ltp/lseek10.c winsup/testsuite/winsup.api/ltp/lstat02.c winsup/testsuite/winsup.api/ltp/mkdir01.c winsup/testsuite/winsup.api/ltp/mkdir08.c winsup/testsuite/winsup.api/ltp/mknod01.c winsup/testsuite/winsup.api/ltp/mmap001.c winsup/testsuite/winsup.api/ltp/mmap02.c winsup/testsuite/winsup.api/ltp/mmap03.c winsup/testsuite/winsup.api/ltp/mmap04.c winsup/testsuite/winsup.api/ltp/mmap05.c winsup/testsuite/winsup.api/ltp/mmap06.c winsup/testsuite/winsup.api/ltp/mmap07.c winsup/testsuite/winsup.api/ltp/mmap08.c winsup/testsuite/winsup.api/ltp/munmap01.c winsup/testsuite/winsup.api/ltp/munmap02.c winsup/testsuite/winsup.api/ltp/nice05.c winsup/testsuite/winsup.api/ltp/open02.c winsup/testsuite/winsup.api/ltp/open03.c winsup/testsuite/winsup.api/ltp/pathconf01.c winsup/testsuite/winsup.api/ltp/pause01.c winsup/testsuite/winsup.api/ltp/pipe01.c winsup/testsuite/winsup.api/ltp/pipe08.c winsup/testsuite/winsup.api/ltp/pipe09.c winsup/testsuite/winsup.api/ltp/pipe10.c winsup/testsuite/winsup.api/ltp/pipe11.c winsup/testsuite/winsup.api/ltp/poll01.c winsup/testsuite/winsup.api/ltp/read01.c winsup/testsuite/winsup.api/ltp/read04.c winsup/testsuite/winsup.api/ltp/readdir01.c winsup/testsuite/winsup.api/ltp/readlink01.c winsup/testsuite/winsup.api/ltp/readlink02.c winsup/testsuite/winsup.api/ltp/readlink03.c winsup/testsuite/winsup.api/ltp/rename01.c winsup/testsuite/winsup.api/ltp/rename02.c winsup/testsuite/winsup.api/ltp/rename08.c winsup/testsuite/winsup.api/ltp/rename10.c winsup/testsuite/winsup.api/ltp/rmdir01.c winsup/testsuite/winsup.api/ltp/rmdir04.c winsup/testsuite/winsup.api/ltp/rmdir05.c winsup/testsuite/winsup.api/ltp/sbrk01.c winsup/testsuite/winsup.api/ltp/select01.c winsup/testsuite/winsup.api/ltp/select02.c winsup/testsuite/winsup.api/ltp/select03.c winsup/testsuite/winsup.api/ltp/setgid01.c winsup/testsuite/winsup.api/ltp/setgroups01.c winsup/testsuite/winsup.api/ltp/setpgid01.c winsup/testsuite/winsup.api/ltp/setregid01.c winsup/testsuite/winsup.api/ltp/setreuid01.c winsup/testsuite/winsup.api/ltp/setuid01.c winsup/testsuite/winsup.api/ltp/setuid02.c winsup/testsuite/winsup.api/ltp/signal03.c winsup/testsuite/winsup.api/ltp/stat01.c winsup/testsuite/winsup.api/ltp/stat02.c winsup/testsuite/winsup.api/ltp/stat03.c winsup/testsuite/winsup.api/ltp/stat05.c winsup/testsuite/winsup.api/ltp/stat06.c winsup/testsuite/winsup.api/ltp/symlink01.c winsup/testsuite/winsup.api/ltp/symlink02.c winsup/testsuite/winsup.api/ltp/symlink03.c winsup/testsuite/winsup.api/ltp/symlink04.c winsup/testsuite/winsup.api/ltp/symlink05.c winsup/testsuite/winsup.api/ltp/sync01.c winsup/testsuite/winsup.api/ltp/sync02.c winsup/testsuite/winsup.api/ltp/time01.c winsup/testsuite/winsup.api/ltp/time02.c winsup/testsuite/winsup.api/ltp/times01.c winsup/testsuite/winsup.api/ltp/times02.c winsup/testsuite/winsup.api/ltp/times03.c winsup/testsuite/winsup.api/ltp/truncate01.c winsup/testsuite/winsup.api/ltp/truncate02.c winsup/testsuite/winsup.api/ltp/ulimit01.c winsup/testsuite/winsup.api/ltp/umask01.c winsup/testsuite/winsup.api/ltp/umask02.c winsup/testsuite/winsup.api/ltp/umask03.c winsup/testsuite/winsup.api/ltp/uname01.c winsup/testsuite/winsup.api/ltp/unlink05.c winsup/testsuite/winsup.api/ltp/unlink06.c winsup/testsuite/winsup.api/ltp/unlink07.c winsup/testsuite/winsup.api/ltp/unlink08.c winsup/testsuite/winsup.api/ltp/vfork01.c winsup/testsuite/winsup.api/ltp/wait02.c winsup/testsuite/winsup.api/ltp/wait401.c winsup/testsuite/winsup.api/ltp/wait402.c winsup/testsuite/winsup.api/ltp/write01.c winsup/testsuite/winsup.api/ltp/write02.c winsup/testsuite/winsup.api/ltp/write03.c winsup/testsuite/winsup.api/mmaptest01.c winsup/testsuite/winsup.api/mmaptest02.c winsup/testsuite/winsup.api/mmaptest03.c winsup/testsuite/winsup.api/mmaptest04.c winsup/testsuite/winsup.api/msgtest.c winsup/testsuite/winsup.api/nullgetcwd.c winsup/testsuite/winsup.api/pthread/cancel1.c winsup/testsuite/winsup.api/pthread/cancel10.c winsup/testsuite/winsup.api/pthread/cancel11.c winsup/testsuite/winsup.api/pthread/cancel12.c winsup/testsuite/winsup.api/pthread/cancel2.c winsup/testsuite/winsup.api/pthread/cancel3.c winsup/testsuite/winsup.api/pthread/cancel4.c winsup/testsuite/winsup.api/pthread/cancel5.c winsup/testsuite/winsup.api/pthread/cancel6.c winsup/testsuite/winsup.api/pthread/cancel7.c winsup/testsuite/winsup.api/pthread/cancel8.c winsup/testsuite/winsup.api/pthread/cancel9.c winsup/testsuite/winsup.api/pthread/cleanup2.c winsup/testsuite/winsup.api/pthread/cleanup3.c winsup/testsuite/winsup.api/pthread/condvar1.c winsup/testsuite/winsup.api/pthread/condvar2.c winsup/testsuite/winsup.api/pthread/condvar2_1.c winsup/testsuite/winsup.api/pthread/condvar3.c winsup/testsuite/winsup.api/pthread/condvar3_1.c winsup/testsuite/winsup.api/pthread/condvar3_2.c winsup/testsuite/winsup.api/pthread/condvar3_3.c winsup/testsuite/winsup.api/pthread/condvar4.c winsup/testsuite/winsup.api/pthread/condvar5.c winsup/testsuite/winsup.api/pthread/condvar6.c winsup/testsuite/winsup.api/pthread/condvar7.c winsup/testsuite/winsup.api/pthread/condvar8.c winsup/testsuite/winsup.api/pthread/condvar9.c winsup/testsuite/winsup.api/pthread/count1.c winsup/testsuite/winsup.api/pthread/create1.c winsup/testsuite/winsup.api/pthread/create2.c winsup/testsuite/winsup.api/pthread/equal1.c winsup/testsuite/winsup.api/pthread/exit1.c winsup/testsuite/winsup.api/pthread/exit2.c winsup/testsuite/winsup.api/pthread/exit3.c winsup/testsuite/winsup.api/pthread/inherit1.c winsup/testsuite/winsup.api/pthread/join0.c winsup/testsuite/winsup.api/pthread/join1.c winsup/testsuite/winsup.api/pthread/join2.c winsup/testsuite/winsup.api/pthread/mainthreadexits.c winsup/testsuite/winsup.api/pthread/mutex1.c winsup/testsuite/winsup.api/pthread/mutex1d.c winsup/testsuite/winsup.api/pthread/mutex1e.c winsup/testsuite/winsup.api/pthread/mutex1n.c winsup/testsuite/winsup.api/pthread/mutex1r.c winsup/testsuite/winsup.api/pthread/mutex2.c winsup/testsuite/winsup.api/pthread/mutex3.c winsup/testsuite/winsup.api/pthread/mutex4.c winsup/testsuite/winsup.api/pthread/mutex5.c winsup/testsuite/winsup.api/pthread/mutex6d.c winsup/testsuite/winsup.api/pthread/mutex6e.c winsup/testsuite/winsup.api/pthread/mutex6n.c winsup/testsuite/winsup.api/pthread/mutex6r.c winsup/testsuite/winsup.api/pthread/mutex7.c winsup/testsuite/winsup.api/pthread/mutex7d.c winsup/testsuite/winsup.api/pthread/mutex7e.c winsup/testsuite/winsup.api/pthread/mutex7n.c winsup/testsuite/winsup.api/pthread/mutex7r.c winsup/testsuite/winsup.api/pthread/mutex8e.c winsup/testsuite/winsup.api/pthread/mutex8n.c winsup/testsuite/winsup.api/pthread/mutex8r.c winsup/testsuite/winsup.api/pthread/once1.c winsup/testsuite/winsup.api/pthread/priority1.c winsup/testsuite/winsup.api/pthread/priority2.c winsup/testsuite/winsup.api/pthread/rwlock1.c winsup/testsuite/winsup.api/pthread/rwlock2.c winsup/testsuite/winsup.api/pthread/rwlock3.c winsup/testsuite/winsup.api/pthread/rwlock4.c winsup/testsuite/winsup.api/pthread/rwlock5.c winsup/testsuite/winsup.api/pthread/rwlock6.c winsup/testsuite/winsup.api/pthread/rwlock7.c winsup/testsuite/winsup.api/pthread/self1.c winsup/testsuite/winsup.api/pthread/self2.c winsup/testsuite/winsup.api/pthread/test.h winsup/testsuite/winsup.api/pthread/threadidafterfork.c winsup/testsuite/winsup.api/pthread/tsd1.c winsup/testsuite/winsup.api/resethand.c winsup/testsuite/winsup.api/samples/sample-fail.c winsup/testsuite/winsup.api/samples/sample-miscompile.c winsup/testsuite/winsup.api/samples/sample-pass.c winsup/testsuite/winsup.api/semtest.c winsup/testsuite/winsup.api/shmtest.c winsup/testsuite/winsup.api/sigchld.c winsup/testsuite/winsup.api/signal-into-win32-api.c winsup/testsuite/winsup.api/systemcall.c winsup/testsuite/winsup.api/user_malloc.c winsup/testsuite/winsup.api/waitpid.c winsup/testsuite/winsup.api/winsup.exp winsup/utils/COPYING.dumper winsup/utils/ChangeLog winsup/utils/ChangeLog-2000 winsup/utils/ChangeLog.64bit winsup/utils/Makefile.in winsup/utils/aclocal.m4 winsup/utils/autogen.sh winsup/utils/bloda.cc winsup/utils/configure winsup/utils/configure.ac winsup/utils/cygcheck.cc winsup/utils/cygpath.cc winsup/utils/cygwin-console-helper.cc winsup/utils/dump_setup.cc winsup/utils/dumper.cc winsup/utils/dumper.h winsup/utils/getconf.c winsup/utils/getfacl.c winsup/utils/kill.cc winsup/utils/ldd.cc winsup/utils/ldh.cc winsup/utils/loadlib.h winsup/utils/locale.cc winsup/utils/minidumper.cc winsup/utils/mkgroup.c winsup/utils/mkpasswd.c winsup/utils/module_info.cc winsup/utils/mount.cc winsup/utils/parse_pe.cc winsup/utils/passwd.c winsup/utils/path.cc winsup/utils/path.h winsup/utils/pldd.c winsup/utils/ps.cc winsup/utils/regtool.cc winsup/utils/setfacl.c winsup/utils/setmetamode.c winsup/utils/ssp.c winsup/utils/ssp.txt winsup/utils/strace.cc winsup/utils/testsuite.cc winsup/utils/testsuite.h winsup/utils/tzset.c winsup/utils/umount.cc winsup/utils/utils.xml winsup/utils/wide_path.h
Diffstat (limited to 'winsup/lsaauth/cyglsa.c')
-rw-r--r--winsup/lsaauth/cyglsa.c633
1 files changed, 0 insertions, 633 deletions
diff --git a/winsup/lsaauth/cyglsa.c b/winsup/lsaauth/cyglsa.c
deleted file mode 100644
index 341fdd12c..000000000
--- a/winsup/lsaauth/cyglsa.c
+++ /dev/null
@@ -1,633 +0,0 @@
-/* cyglsa.c: LSA authentication module for Cygwin
-
- Copyright 2006, 2008, 2010, 2011, 2012 Red Hat, Inc.
-
- Written by Corinna Vinschen <corinna@vinschen.de>
-
-This file is part of Cygwin.
-
-This software is a copyrighted work licensed under the terms of the
-Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */
-
-#define WINVER 0x0600
-#include <ntstatus.h>
-#include <windows.h>
-#include <wininet.h>
-#include <lmcons.h>
-#include <iptypes.h>
-#include <ntsecapi.h>
-#include "../cygwin/cyglsa.h"
-#include "../cygwin/include/cygwin/version.h"
-
-static PLSA_SECPKG_FUNCS funcs;
-static BOOL must_create_logon_sid;
-
-BOOL APIENTRY
-DllMain (HINSTANCE inst, DWORD reason, LPVOID res)
-{
- switch (reason)
- {
- case DLL_PROCESS_ATTACH:
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
-}
-
-/* Declare NTDLL functions here to avoid problems with different
- header file layout in different compiler environments. */
-#ifndef NT_SUCCESS
-#define NT_SUCCESS(s) ((s) >= 0)
-#endif
-/* These standard POSIX functions are implemented in NTDLL and exported.
- There's just no header to define them and using wchar.h from mingw
- or Cygwin seems wrong somehow. */
-wchar_t *__cdecl wcscpy (wchar_t *, const wchar_t *);
-size_t __cdecl wcslen (const wchar_t *);
-
-#ifndef RtlInitEmptyUnicodeString
-__inline VOID NTAPI
-RtlInitEmptyUnicodeString(PUNICODE_STRING dest, PCWSTR buf, USHORT len)
-{
- dest->Length = 0;
- dest->MaximumLength = len;
- dest->Buffer = (PWSTR) buf;
-}
-#endif
-
-static PUNICODE_STRING
-uni_alloc (PWCHAR src, USHORT len)
-{
- PUNICODE_STRING tgt;
-
- if (!(tgt = funcs->AllocateLsaHeap (sizeof (UNICODE_STRING))))
- return NULL;
- tgt->Length = len * sizeof (WCHAR);
- tgt->MaximumLength = tgt->Length + sizeof (WCHAR);
- if (!(tgt->Buffer = funcs->AllocateLsaHeap (tgt->MaximumLength)))
- {
- funcs->FreeLsaHeap (tgt);
- return NULL;
- }
- wcscpy (tgt->Buffer, src);
- return tgt;
-}
-
-/* No, I don't want to include stdio.h so I take what ntdll offers. */
-extern int _vsnprintf (char *, size_t, const char *, va_list);
-
-static HANDLE fh = INVALID_HANDLE_VALUE;
-
-static int
-cyglsa_printf (const char *format, ...)
-{
- char buf[256];
- DWORD wr;
- int ret;
- va_list ap;
-
- if (fh == INVALID_HANDLE_VALUE)
- return 0;
-
- va_start (ap, format);
- ret = _vsnprintf (buf, 256, format, ap);
- va_end (ap);
- if (ret <= 0)
- return ret;
- if (ret > 256)
- ret = 255;
- buf[255] = '\0';
- WriteFile (fh, buf, ret, &wr, NULL);
- return wr;
-}
-
-static void
-print_sid (const char *prefix, int idx, PISID sid)
-{
- DWORD i;
-
- cyglsa_printf ("%s", prefix);
- if (idx >= 0)
- cyglsa_printf ("[%d] ", idx);
- cyglsa_printf ("(0x%08x) ", (INT_PTR) sid);
- if (!sid)
- cyglsa_printf ("NULL\n");
- else if (IsBadReadPtr (sid, 8))
- cyglsa_printf ("INVALID POINTER\n");
- else if (!IsValidSid ((PSID) sid))
- cyglsa_printf ("INVALID SID\n");
- else if (IsBadReadPtr (sid, 8 + sizeof (DWORD) * sid->SubAuthorityCount))
- cyglsa_printf ("INVALID POINTER SPACE\n");
- else
- {
- cyglsa_printf ("S-%d-%d", sid->Revision, sid->IdentifierAuthority.Value[5]);
- for (i = 0; i < sid->SubAuthorityCount; ++i)
- cyglsa_printf ("-%lu", sid->SubAuthority[i]);
- cyglsa_printf ("\n");
- }
-}
-
-static void
-print_groups (PTOKEN_GROUPS grps)
-{
- DWORD i;
-
- cyglsa_printf ("Groups: (0x%08x) ", (INT_PTR) grps);
- if (!grps)
- cyglsa_printf ("NULL\n");
- else if (IsBadReadPtr (grps, sizeof (DWORD)))
- cyglsa_printf ("INVALID POINTER\n");
- else if (IsBadReadPtr (grps, sizeof (DWORD) + sizeof (SID_AND_ATTRIBUTES)
- * grps->GroupCount))
- cyglsa_printf ("INVALID POINTER SPACE\n");
- else
- {
- cyglsa_printf ("Count: %lu\n", grps->GroupCount);
- for (i = 0; i < grps->GroupCount; ++i)
- {
- cyglsa_printf ("(attr: 0x%lx)", grps->Groups[i].Attributes);
- print_sid (" ", i, (PISID) grps->Groups[i].Sid);
- }
- }
-}
-
-static void
-print_privs (PTOKEN_PRIVILEGES privs)
-{
- DWORD i;
-
- cyglsa_printf ("Privileges: (0x%08x) ", (INT_PTR) privs);
- if (!privs)
- cyglsa_printf ("NULL\n");
- else if (IsBadReadPtr (privs, sizeof (DWORD)))
- cyglsa_printf ("INVALID POINTER\n");
- else if (IsBadReadPtr (privs, sizeof (DWORD) + sizeof (LUID_AND_ATTRIBUTES)
- * privs->PrivilegeCount))
- cyglsa_printf ("INVALID POINTER SPACE\n");
- else
- {
- cyglsa_printf ("Count: %lu\n", privs->PrivilegeCount);
- for (i = 0; i < privs->PrivilegeCount; ++i)
- cyglsa_printf ("Luid: {%ld, %lu} Attributes: 0x%lx\n",
- privs->Privileges[i].Luid.HighPart,
- privs->Privileges[i].Luid.LowPart,
- privs->Privileges[i].Attributes);
- }
-}
-
-static void
-print_dacl (PACL dacl)
-{
- DWORD i;
-
- cyglsa_printf ("DefaultDacl: (0x%08x) ", (INT_PTR) dacl);
- if (!dacl)
- cyglsa_printf ("NULL\n");
- else if (IsBadReadPtr (dacl, sizeof (ACL)))
- cyglsa_printf ("INVALID POINTER\n");
- else if (IsBadReadPtr (dacl, dacl->AclSize))
- cyglsa_printf ("INVALID POINTER SPACE\n");
- else
- {
- cyglsa_printf ("Rev: %d, Count: %d\n", dacl->AclRevision, dacl->AceCount);
- for (i = 0; i < dacl->AceCount; ++i)
- {
- PVOID vace;
- PACCESS_ALLOWED_ACE ace;
-
- if (!GetAce (dacl, i, &vace))
- cyglsa_printf ("[%lu] GetAce error %lu\n", i, GetLastError ());
- else
- {
- ace = (PACCESS_ALLOWED_ACE) vace;
- cyglsa_printf ("Type: %x, Flags: %x, Access: %lx,",
- ace->Header.AceType, ace->Header.AceFlags, (DWORD) ace->Mask);
- print_sid (" ", i, (PISID) &ace->SidStart);
- }
- }
- }
-}
-
-static void
-print_tokinf (PLSA_TOKEN_INFORMATION_V2 ptok, size_t size,
- PVOID got_start, PVOID gotinf_start, PVOID gotinf_end)
-{
- if (fh == INVALID_HANDLE_VALUE)
- return;
-
- cyglsa_printf ("INCOMING: start: 0x%08x infstart: 0x%08x infend: 0x%08x\n",
- (INT_PTR) got_start, (INT_PTR) gotinf_start,
- (INT_PTR) gotinf_end);
-
- cyglsa_printf ("LSA_TOKEN_INFORMATION_V2: 0x%08x - 0x%08x\n",
- (INT_PTR) ptok, (INT_PTR) ptok + size);
-
- /* User SID */
- cyglsa_printf ("User: (attr: 0x%lx)", ptok->User.User.Attributes);
- print_sid (" ", -1, (PISID) ptok->User.User.Sid);
-
- /* Groups */
- print_groups (ptok->Groups);
-
- /* Primary Group SID */
- print_sid ("Primary Group: ", -1, (PISID)ptok->PrimaryGroup.PrimaryGroup);
-
- /* Privileges */
- print_privs (ptok->Privileges);
-
- /* Owner */
- print_sid ("Owner: ", -1, (PISID) ptok->Owner.Owner);
-
- /* Default DACL */
- print_dacl (ptok->DefaultDacl.DefaultDacl);
-
- // CloseHandle (fh);
-}
-
-NTSTATUS NTAPI
-LsaApInitializePackage (ULONG authp_id, PLSA_SECPKG_FUNCS dpt,
- PLSA_STRING dummy1, PLSA_STRING dummy2,
- PLSA_STRING *authp_name)
-{
- PLSA_STRING name = NULL;
- DWORD vers, major, minor;
-
- /* Set global pointer to lsa helper function table. */
- funcs = dpt;
-
- /* Allocate and set the name of the authentication package. This is the
- name which has to be used in LsaLookupAuthenticationPackage. */
- if (!(name = funcs->AllocateLsaHeap (sizeof *name)))
- return STATUS_NO_MEMORY;
- if (!(name->Buffer = funcs->AllocateLsaHeap (sizeof (CYG_LSA_PKGNAME))))
- {
- funcs->FreeLsaHeap (name);
- return STATUS_NO_MEMORY;
- }
- name->Length = sizeof (CYG_LSA_PKGNAME) - 1;
- name->MaximumLength = sizeof (CYG_LSA_PKGNAME);
- strcpy (name->Buffer, CYG_LSA_PKGNAME);
- (*authp_name) = name;
-
- vers = GetVersion ();
- major = LOBYTE (LOWORD (vers));
- minor = HIBYTE (LOWORD (vers));
- /* Check if we're running on Windows 2000 or lower. If so, we must create
- the logon sid in the group list by ourselves. */
- if (major < 5 || (major == 5 && minor == 0))
- must_create_logon_sid = TRUE;
-
-#ifdef DEBUGGING
- fh = CreateFile ("C:\\cyglsa.dbgout", GENERIC_WRITE,
- FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
- NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
- cyglsa_printf ("Initialized\n");
-#endif /* DEBUGGING */
-
- return STATUS_SUCCESS;
-}
-
-NTSTATUS NTAPI
-LsaApLogonUserEx (PLSA_CLIENT_REQUEST request, SECURITY_LOGON_TYPE logon_type,
- PVOID auth, PVOID client_auth_base, ULONG auth_len,
- PVOID *pbuf, PULONG pbuf_len, PLUID logon_id,
- PNTSTATUS sub_stat, PLSA_TOKEN_INFORMATION_TYPE tok_type,
- PVOID *tok, PUNICODE_STRING *account,
- PUNICODE_STRING *authority, PUNICODE_STRING *machine)
-{
- DWORD checksum, i;
- PDWORD csp, csp_end;
- NTSTATUS stat;
- SECPKG_CLIENT_INFO clinf;
- PLSA_TOKEN_INFORMATION_V2 tokinf;
-
- cyglsa_t *authinf = (cyglsa_t *) auth;
-
- /* Check if the caller has the SeTcbPrivilege, otherwise refuse service. */
- stat = funcs->GetClientInfo (&clinf);
- if (stat != STATUS_SUCCESS)
- {
- cyglsa_printf ("GetClientInfo failed: 0x%08lx\n", stat);
- return stat;
- }
- if (!clinf.HasTcbPrivilege)
- {
- cyglsa_printf ("Client has no TCB privilege. Access denied.\n");
- return STATUS_ACCESS_DENIED;
- }
-
- /* Make a couple of validity checks. */
- if (auth_len < sizeof *authinf
- || authinf->magic != CYG_LSA_MAGIC
- || !authinf->username[0]
- || !authinf->domain[0])
- {
- cyglsa_printf ("Invalid authentication parameter.\n");
- return STATUS_INVALID_PARAMETER;
- }
- checksum = CYG_LSA_MAGIC;
- csp = (PDWORD) &authinf->username;
- csp_end = (PDWORD) ((PBYTE) authinf + auth_len);
- while (csp < csp_end)
- checksum += *csp++;
- if (authinf->checksum != checksum)
- {
- cyglsa_printf ("Invalid checksum.\n");
- return STATUS_INVALID_PARAMETER_3;
- }
-
- /* Set account to username and authority to domain resp. machine name.
- The name of the logon account name as returned by LookupAccountSid
- is created from here as "authority\account". */
- authinf->username[UNLEN] = '\0';
- authinf->domain[MAX_DOMAIN_NAME_LEN] = '\0';
- if (account && !(*account = uni_alloc (authinf->username,
- wcslen (authinf->username))))
- {
- cyglsa_printf ("No memory trying to create account.\n");
- return STATUS_NO_MEMORY;
- }
- if (authority && !(*authority = uni_alloc (authinf->domain,
- wcslen (authinf->domain))))
- {
- cyglsa_printf ("No memory trying to create authority.\n");
- return STATUS_NO_MEMORY;
- }
- if (machine)
- {
- WCHAR mach[MAX_COMPUTERNAME_LENGTH + 1];
- DWORD msize = MAX_COMPUTERNAME_LENGTH + 1;
- if (!GetComputerNameW (mach, &msize))
- wcscpy (mach, L"UNKNOWN");
- if (!(*machine = uni_alloc (mach, wcslen (mach))))
- {
- cyglsa_printf ("No memory trying to create machine.\n");
- return STATUS_NO_MEMORY;
- }
- }
- /* Create a fake buffer in pbuf which is free'd again in the client.
- Windows 2000 tends to crash when setting this pointer to NULL. */
- if (pbuf)
- {
-#ifdef JUST_ANOTHER_NONWORKING_SOLUTION
- cygprf_t prf;
- WCHAR sam_username[MAX_DOMAIN_NAME_LEN + UNLEN + 2];
- SECURITY_STRING sam_user, prefix;
- PUCHAR user_auth;
- ULONG user_auth_size;
- WCHAR flatname[UNLEN + 1];
- UNICODE_STRING flatnm;
- TOKEN_SOURCE ts;
- HANDLE token;
-#endif /* JUST_ANOTHER_NONWORKING_SOLUTION */
-
- stat = funcs->AllocateClientBuffer (request, 64UL, pbuf);
- if (!LSA_SUCCESS (stat))
- {
- cyglsa_printf ("AllocateClientBuffer failed: 0x%08lx\n", stat);
- return stat;
- }
-#ifdef JUST_ANOTHER_NONWORKING_SOLUTION
- prf.magic_pre = MAGIC_PRE;
- prf.token = NULL;
- prf.magic_post = MAGIC_POST;
-
-#if 0
- /* That's how it was supposed to work according to MSDN... */
- wcscpy (sam_username, authinf->domain);
- wcscat (sam_username, L"\\");
- wcscat (sam_username, authinf->username);
-#else
- /* That's the only solution which worked, and then it only worked
- for machine local accounts. No domain authentication possible.
- STATUS_NO_SUCH_USER galore! */
- wcscpy (sam_username, authinf->username);
-#endif
- RtlInitUnicodeString (&sam_user, sam_username);
- RtlInitUnicodeString (&prefix, L"");
- RtlInitEmptyUnicodeString (&flatnm, flatname,
- (UNLEN + 1) * sizeof (WCHAR));
-
- stat = funcs->GetAuthDataForUser (&sam_user, SecNameSamCompatible,
- NULL, &user_auth,
- &user_auth_size, &flatnm);
- if (!NT_SUCCESS (stat))
- {
- char sam_u[MAX_DOMAIN_NAME_LEN + UNLEN + 2];
- wcstombs (sam_u, sam_user.Buffer, sizeof (sam_u));
- cyglsa_printf ("GetAuthDataForUser (%u,%u,%s) failed: 0x%08lx\n",
- sam_user.Length, sam_user.MaximumLength, sam_u, stat);
- return stat;
- }
-
- memcpy (ts.SourceName, "Cygwin.1", 8);
- ts.SourceIdentifier.HighPart = 0;
- ts.SourceIdentifier.LowPart = 0x0104;
- RtlInitEmptyUnicodeString (&flatnm, flatname,
- (UNLEN + 1) * sizeof (WCHAR));
- stat = funcs->ConvertAuthDataToToken (user_auth, user_auth_size,
- SecurityDelegation, &ts,
- Interactive, *authority,
- &token, logon_id, &flatnm,
- sub_stat);
- if (!NT_SUCCESS (stat))
- {
- cyglsa_printf ("ConvertAuthDataToToken failed: 0x%08lx\n", stat);
- return stat;
- }
-
- stat = funcs->DuplicateHandle (token, &prf.token);
- if (!NT_SUCCESS (stat))
- {
- cyglsa_printf ("DuplicateHandle failed: 0x%08lx\n", stat);
- return stat;
- }
-
- stat = funcs->CopyToClientBuffer (request, sizeof prf, *pbuf, &prf);
- if (!NT_SUCCESS (stat))
- {
- cyglsa_printf ("CopyToClientBuffer failed: 0x%08lx\n", stat);
- return stat;
- }
- funcs->FreeLsaHeap (user_auth);
-#endif /* JUST_ANOTHER_NONWORKING_SOLUTION */
- }
- if (pbuf_len)
- *pbuf_len = 64UL;
-
- /* A PLSA_TOKEN_INFORMATION_V2 is allocated in one piece, so... */
-#if defined (__x86_64__) || defined (_M_AMD64)
- {
- /* ...on 64 bit systems we have to convert the incoming 32 bit offsets
- into 64 bit pointers. That requires to re-evaluate the size of the
- outgoing tokinf structure and a somewhat awkward procedure to copy
- the information over. */
- LONG_PTR base;
- PBYTE tptr;
- DWORD size, newsize;
- PSID src_sid;
- PCYG_TOKEN_GROUPS src_grps;
- PTOKEN_GROUPS grps;
- PTOKEN_PRIVILEGES src_privs;
- PACL src_acl;
-
- base = (LONG_PTR) &authinf->inf;
-
- newsize = authinf->inf_size;
- newsize += sizeof (TOKEN_USER) - sizeof (CYG_TOKEN_USER); /* User SID */
- newsize += sizeof (PTOKEN_GROUPS) - sizeof (OFFSET); /* Groups */
- src_grps = (PCYG_TOKEN_GROUPS) (base + authinf->inf.Groups);
- newsize += src_grps->GroupCount /* Group SIDs */
- * (sizeof (SID_AND_ATTRIBUTES)
- - sizeof (CYG_SID_AND_ATTRIBUTES));
- newsize += sizeof (PSID) - sizeof (OFFSET); /* Primary Group SID */
- newsize += sizeof (PTOKEN_PRIVILEGES) - sizeof (OFFSET); /* Privileges */
- newsize += 0; /* Owner SID */
- newsize += sizeof (PACL) - sizeof (OFFSET); /* Default DACL */
-
- if (!(tokinf = funcs->AllocateLsaHeap (newsize)))
- return STATUS_NO_MEMORY;
- tptr = (PBYTE)(tokinf + 1);
-
- tokinf->ExpirationTime = authinf->inf.ExpirationTime;
- /* User SID */
- src_sid = (PSID) (base + authinf->inf.User.User.Sid);
- size = GetLengthSid (src_sid);
- CopySid (size, (PSID) tptr, src_sid);
- tokinf->User.User.Sid = (PSID) tptr;
- tptr += size;
- tokinf->User.User.Attributes = authinf->inf.User.User.Attributes;
- /* Groups */
- grps = (PTOKEN_GROUPS) tptr;
- tokinf->Groups = grps;
- grps->GroupCount = src_grps->GroupCount;
- tptr += sizeof grps->GroupCount
- + grps->GroupCount * sizeof (SID_AND_ATTRIBUTES);
- /* Group SIDs */
- for (i = 0; i < src_grps->GroupCount; ++i)
- {
- src_sid = (PSID) (base + src_grps->Groups[i].Sid);
- size = GetLengthSid (src_sid);
- CopySid (size, (PSID) tptr, src_sid);
- tokinf->Groups->Groups[i].Sid = (PSID) tptr;
- tptr += size;
- tokinf->Groups->Groups[i].Attributes = src_grps->Groups[i].Attributes;
- }
- /* Primary Group SID */
- src_sid = (PSID) (base + authinf->inf.PrimaryGroup.PrimaryGroup);
- size = GetLengthSid (src_sid);
- CopySid (size, (PSID) tptr, src_sid);
- tokinf->PrimaryGroup.PrimaryGroup = (PSID) tptr;
- tptr += size;
- /* Privileges */
- src_privs = (PTOKEN_PRIVILEGES) (base + authinf->inf.Privileges);
- size = sizeof src_privs->PrivilegeCount
- + src_privs->PrivilegeCount * sizeof (LUID_AND_ATTRIBUTES);
- memcpy (tptr, src_privs, size);
- tokinf->Privileges = (PTOKEN_PRIVILEGES) tptr;
- tptr += size;
- /* Owner */
- tokinf->Owner.Owner = NULL;
- /* Default DACL */
- src_acl = (PACL) (base + authinf->inf.DefaultDacl.DefaultDacl);
- size = src_acl->AclSize;
- memcpy (tptr, src_acl, size);
- tokinf->DefaultDacl.DefaultDacl = (PACL) tptr;
- }
-#else
- {
- /* ...on 32 bit systems we just allocate tokinf with the same size as
- we get, copy the whole structure and convert offsets into pointers. */
-
- /* Allocate LUID for usage in the logon SID on Windows 2000. This is
- not done in the 64 bit code above for hopefully obvious reasons... */
- LUID logon_sid_id;
-
- if (must_create_logon_sid && !AllocateLocallyUniqueId (&logon_sid_id))
- return STATUS_INSUFFICIENT_RESOURCES;
-
- if (!(tokinf = funcs->AllocateLsaHeap (authinf->inf_size)))
- return STATUS_NO_MEMORY;
- memcpy (tokinf, &authinf->inf, authinf->inf_size);
-
- /* User SID */
- tokinf->User.User.Sid = (PSID)
- ((PBYTE) tokinf + (LONG_PTR) tokinf->User.User.Sid);
- /* Groups */
- tokinf->Groups = (PTOKEN_GROUPS)
- ((PBYTE) tokinf + (LONG_PTR) tokinf->Groups);
- /* Group SIDs */
- for (i = 0; i < tokinf->Groups->GroupCount; ++i)
- {
- tokinf->Groups->Groups[i].Sid = (PSID)
- ((PBYTE) tokinf + (LONG_PTR) tokinf->Groups->Groups[i].Sid);
- if (must_create_logon_sid
- && tokinf->Groups->Groups[i].Attributes & SE_GROUP_LOGON_ID
- && *GetSidSubAuthorityCount (tokinf->Groups->Groups[i].Sid) == 3
- && *GetSidSubAuthority (tokinf->Groups->Groups[i].Sid, 0)
- == SECURITY_LOGON_IDS_RID)
- {
- *GetSidSubAuthority (tokinf->Groups->Groups[i].Sid, 1)
- = logon_sid_id.HighPart;
- *GetSidSubAuthority (tokinf->Groups->Groups[i].Sid, 2)
- = logon_sid_id.LowPart;
- }
- }
-
- /* Primary Group SID */
- tokinf->PrimaryGroup.PrimaryGroup = (PSID)
- ((PBYTE) tokinf + (LONG_PTR) tokinf->PrimaryGroup.PrimaryGroup);
- /* Privileges */
- tokinf->Privileges = (PTOKEN_PRIVILEGES)
- ((PBYTE) tokinf + (LONG_PTR) tokinf->Privileges);
- /* Owner SID */
- tokinf->Owner.Owner = NULL;
- /* Default DACL */
- tokinf->DefaultDacl.DefaultDacl = (PACL)
- ((PBYTE) tokinf + (LONG_PTR) tokinf->DefaultDacl.DefaultDacl);
-
- }
-#endif
-
- *tok = (PVOID) tokinf;
- *tok_type = LsaTokenInformationV2;
-
- print_tokinf (tokinf, authinf->inf_size, authinf, &authinf->inf,
- (PVOID)((LONG_PTR) &authinf->inf + authinf->inf_size));
-
- /* Create logon session. */
- if (!AllocateLocallyUniqueId (logon_id))
- {
- funcs->FreeLsaHeap (*tok);
- *tok = NULL;
- cyglsa_printf ("AllocateLocallyUniqueId failed: Win32 error %lu\n",
- GetLastError ());
- return STATUS_INSUFFICIENT_RESOURCES;
- }
- stat = funcs->CreateLogonSession (logon_id);
- if (stat != STATUS_SUCCESS)
- {
- funcs->FreeLsaHeap (*tok);
- *tok = NULL;
- cyglsa_printf ("CreateLogonSession failed: 0x%08lx\n", stat);
- return stat;
- }
-
- cyglsa_printf ("BINGO!!!\n", stat);
- return STATUS_SUCCESS;
-}
-
-VOID NTAPI
-LsaApLogonTerminated(PLUID LogonId)
-{
-}
-
-NTSTATUS NTAPI
-LsaApCallPackage (PLSA_CLIENT_REQUEST request, PVOID authinf,
- PVOID client_auth_base, ULONG auth_len, PVOID *ret_buf,
- PULONG ret_buf_len, PNTSTATUS ret_stat)
-{
- return STATUS_NOT_IMPLEMENTED;
-}