Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Apr 2002 18:05:37 -0800 (PST)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 9079 for review
Message-ID:  <200204050205.g3525bN19609@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=9079

Change 9079 by peter@peter_daintree on 2002/04/04 18:04:48

	IFC @9077

Affected files ...

... //depot/projects/ia64/Makefile.inc1#15 integrate
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/INTERNALS#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/LICENSE#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/Makefile#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/PLATFORMS#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/README#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/pam_macros.h#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/pam_passwdqc.c#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/pam_passwdqc.spec#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/passwdqc.h#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/passwdqc_check.c#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/passwdqc_random.c#1 branch
... //depot/projects/ia64/contrib/pam_modules/pam_passwdqc/wordset_4k.c#1 branch
... //depot/projects/ia64/etc/mail/Makefile#5 integrate
... //depot/projects/ia64/gnu/usr.bin/cc/cc1/Makefile#3 integrate
... //depot/projects/ia64/gnu/usr.bin/cc/cc1obj/Makefile#3 integrate
... //depot/projects/ia64/gnu/usr.bin/cc/cc_tools/Makefile#4 integrate
... //depot/projects/ia64/gnu/usr.bin/cc/cc_tools/freebsd-native.h#3 integrate
... //depot/projects/ia64/gnu/usr.bin/send-pr/send-pr.1#2 integrate
... //depot/projects/ia64/include/string.h#4 integrate
... //depot/projects/ia64/include/strings.h#2 integrate
... //depot/projects/ia64/lib/libpam/modules/modules.inc#4 integrate
... //depot/projects/ia64/lib/libpam/modules/pam_passwdqc/Makefile#1 branch
... //depot/projects/ia64/lib/libpam/modules/pam_ssh/pam_ssh.c#6 integrate
... //depot/projects/ia64/lib/libpam/modules/pam_ssh/pam_ssh.h#2 integrate
... //depot/projects/ia64/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#8 integrate
... //depot/projects/ia64/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml#16 integrate
... //depot/projects/ia64/sbin/disklabel/disklabel.5#3 integrate
... //depot/projects/ia64/sbin/disklabel/disklabel.c#7 integrate
... //depot/projects/ia64/sbin/newfs/mkfs.c#7 integrate
... //depot/projects/ia64/sbin/newfs/newfs.c#8 integrate
... //depot/projects/ia64/share/termcap/Makefile#3 integrate
... //depot/projects/ia64/share/zoneinfo/asia#4 integrate
... //depot/projects/ia64/share/zoneinfo/australasia#4 integrate
... //depot/projects/ia64/share/zoneinfo/backward#3 integrate
... //depot/projects/ia64/share/zoneinfo/europe#4 integrate
... //depot/projects/ia64/share/zoneinfo/leapseconds#4 integrate
... //depot/projects/ia64/share/zoneinfo/northamerica#4 integrate
... //depot/projects/ia64/share/zoneinfo/southamerica#4 integrate
... //depot/projects/ia64/share/zoneinfo/zone.tab#4 integrate
... //depot/projects/ia64/sys/alpha/alpha/busdma_machdep.c#3 integrate
... //depot/projects/ia64/sys/alpha/alpha/interrupt.c#7 integrate
... //depot/projects/ia64/sys/alpha/alpha/machdep.c#9 integrate
... //depot/projects/ia64/sys/alpha/alpha/mp_machdep.c#6 integrate
... //depot/projects/ia64/sys/alpha/alpha/pmap.c#7 integrate
... //depot/projects/ia64/sys/alpha/alpha/vm_machdep.c#4 integrate
... //depot/projects/ia64/sys/alpha/osf1/osf1_misc.c#6 integrate
... //depot/projects/ia64/sys/alpha/osf1/osf1_signal.c#4 integrate
... //depot/projects/ia64/sys/boot/efi/loader/Makefile#6 integrate
... //depot/projects/ia64/sys/coda/coda_psdev.c#3 integrate
... //depot/projects/ia64/sys/compat/linux/linux_signal.c#2 integrate
... //depot/projects/ia64/sys/compat/svr4/svr4_signal.c#3 integrate
... //depot/projects/ia64/sys/conf/NOTES#2 integrate
... //depot/projects/ia64/sys/conf/files#13 integrate
... //depot/projects/ia64/sys/conf/files.sparc64#8 integrate
... //depot/projects/ia64/sys/conf/majors#3 integrate
... //depot/projects/ia64/sys/conf/options#8 integrate
... //depot/projects/ia64/sys/dev/aac/aacvar.h#5 integrate
... //depot/projects/ia64/sys/dev/acpica/Osd/OsdSchedule.c#5 integrate
... //depot/projects/ia64/sys/dev/acpica/Osd/OsdSynch.c#3 integrate
... //depot/projects/ia64/sys/dev/acpica/acpi.c#7 integrate
... //depot/projects/ia64/sys/dev/an/if_an.c#8 integrate
... //depot/projects/ia64/sys/dev/ar/if_ar.c#2 integrate
... //depot/projects/ia64/sys/dev/bge/if_bge.c#7 integrate
... //depot/projects/ia64/sys/dev/bge/if_bgereg.h#4 integrate
... //depot/projects/ia64/sys/dev/fxp/if_fxp.c#5 integrate
... //depot/projects/ia64/sys/dev/fxp/if_fxpvar.h#3 integrate
... //depot/projects/ia64/sys/dev/gx/if_gx.c#3 integrate
... //depot/projects/ia64/sys/dev/gx/if_gxvar.h#2 integrate
... //depot/projects/ia64/sys/dev/ichsmb/ichsmb.c#3 integrate
... //depot/projects/ia64/sys/dev/isp/isp.c#5 integrate
... //depot/projects/ia64/sys/dev/isp/isp_freebsd.c#4 integrate
... //depot/projects/ia64/sys/dev/isp/isp_freebsd.h#6 integrate
... //depot/projects/ia64/sys/dev/isp/isp_inline.h#4 integrate
... //depot/projects/ia64/sys/dev/isp/isp_pci.c#5 integrate
... //depot/projects/ia64/sys/dev/isp/ispmbox.h#4 integrate
... //depot/projects/ia64/sys/dev/isp/ispvar.h#6 integrate
... //depot/projects/ia64/sys/dev/lmc/if_lmc.c#2 integrate
... //depot/projects/ia64/sys/dev/mk48txx/mk48txx.c#1 branch
... //depot/projects/ia64/sys/dev/mk48txx/mk48txxreg.h#1 branch
... //depot/projects/ia64/sys/dev/my/if_my.c#1 branch
... //depot/projects/ia64/sys/dev/my/if_myreg.h#1 branch
... //depot/projects/ia64/sys/dev/nge/if_nge.c#5 integrate
... //depot/projects/ia64/sys/dev/pccbb/pccbb.c#5 integrate
... //depot/projects/ia64/sys/dev/pdq/pdq_ifsubr.c#4 integrate
... //depot/projects/ia64/sys/dev/random/yarrow.c#3 integrate
... //depot/projects/ia64/sys/dev/sio/sio.c#8 integrate
... //depot/projects/ia64/sys/dev/sound/isa/ad1816.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/isa/emu8000.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/isa/gusmidi.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/isa/mpu.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/isa/mss.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/isa/opl.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/isa/sbc.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/isa/uartsio.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/midi/midi.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/midi/sequencer.c#4 integrate
... //depot/projects/ia64/sys/dev/sound/midi/timer.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/pci/cmi.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/pci/csamidi.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/pci/ds1.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/pci/emu10k1.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/pci/t4dwave.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/pcm/ac97.c#4 integrate
... //depot/projects/ia64/sys/dev/sound/pcm/channel.c#5 integrate
... //depot/projects/ia64/sys/dev/sound/pcm/mixer.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/pcm/sndstat.c#2 integrate
... //depot/projects/ia64/sys/dev/sound/pcm/sound.c#3 integrate
... //depot/projects/ia64/sys/dev/sound/pcm/sound.h#3 integrate
... //depot/projects/ia64/sys/dev/sr/if_sr.c#2 integrate
... //depot/projects/ia64/sys/dev/txp/if_txp.c#5 integrate
... //depot/projects/ia64/sys/dev/usb/if_aue.c#6 integrate
... //depot/projects/ia64/sys/dev/usb/if_cue.c#4 integrate
... //depot/projects/ia64/sys/dev/usb/if_kue.c#4 integrate
... //depot/projects/ia64/sys/dev/usb/udbp.c#2 integrate
... //depot/projects/ia64/sys/dev/usb/usb_ethersubr.c#3 integrate
... //depot/projects/ia64/sys/dev/vinum/vinumconfig.c#3 integrate
... //depot/projects/ia64/sys/dev/wi/if_wavelan_ieee.h#4 integrate
... //depot/projects/ia64/sys/dev/wi/if_wi.c#12 integrate
... //depot/projects/ia64/sys/dev/wi/if_wi_pccard.c#2 integrate
... //depot/projects/ia64/sys/dev/wi/if_wireg.h#6 integrate
... //depot/projects/ia64/sys/dev/wi/if_wivar.h#2 integrate
... //depot/projects/ia64/sys/fs/hpfs/hpfs_hash.c#4 integrate
... //depot/projects/ia64/sys/fs/hpfs/hpfs_vfsops.c#6 integrate
... //depot/projects/ia64/sys/fs/msdosfs/msdosfs_denode.c#4 integrate
... //depot/projects/ia64/sys/fs/ntfs/ntfs_ihash.c#3 integrate
... //depot/projects/ia64/sys/fs/ntfs/ntfs_subr.c#6 integrate
... //depot/projects/ia64/sys/fs/pseudofs/pseudofs.c#5 integrate
... //depot/projects/ia64/sys/fs/pseudofs/pseudofs_fileno.c#3 integrate
... //depot/projects/ia64/sys/fs/pseudofs/pseudofs_vncache.c#4 integrate
... //depot/projects/ia64/sys/geom/geom.h#4 integrate
... //depot/projects/ia64/sys/geom/geom_bsd.c#5 integrate
... //depot/projects/ia64/sys/geom/geom_dev.c#6 integrate
... //depot/projects/ia64/sys/geom/geom_disk.c#5 integrate
... //depot/projects/ia64/sys/geom/geom_dump.c#4 integrate
... //depot/projects/ia64/sys/geom/geom_event.c#3 integrate
... //depot/projects/ia64/sys/geom/geom_int.h#2 integrate
... //depot/projects/ia64/sys/geom/geom_io.c#3 integrate
... //depot/projects/ia64/sys/geom/geom_mbr.c#4 integrate
... //depot/projects/ia64/sys/geom/geom_pc98.c#2 integrate
... //depot/projects/ia64/sys/geom/geom_slice.c#6 integrate
... //depot/projects/ia64/sys/geom/geom_slice.h#3 integrate
... //depot/projects/ia64/sys/geom/geom_subr.c#4 integrate
... //depot/projects/ia64/sys/geom/geom_sunlabel.c#4 integrate
... //depot/projects/ia64/sys/i386/i386/autoconf.c#7 integrate
... //depot/projects/ia64/sys/i386/i386/machdep.c#10 integrate
... //depot/projects/ia64/sys/i386/i386/mp_machdep.c#7 integrate
... //depot/projects/ia64/sys/i386/i386/trap.c#8 integrate
... //depot/projects/ia64/sys/i386/i386/vm86.c#4 integrate
... //depot/projects/ia64/sys/i386/ibcs2/ibcs2_signal.c#3 integrate
... //depot/projects/ia64/sys/i386/isa/if_el.c#2 integrate
... //depot/projects/ia64/sys/i386/isa/intr_machdep.c#4 integrate
... //depot/projects/ia64/sys/i386/linux/linux.h#2 integrate
... //depot/projects/ia64/sys/i386/linux/linux_sysvec.c#7 integrate
... //depot/projects/ia64/sys/i386/svr4/svr4_machdep.c#4 integrate
... //depot/projects/ia64/sys/i4b/capi/capi_l4if.c#4 integrate
... //depot/projects/ia64/sys/i4b/capi/iavc/iavc_isa.c#4 integrate
... //depot/projects/ia64/sys/i4b/capi/iavc/iavc_pci.c#4 integrate
... //depot/projects/ia64/sys/i4b/driver/i4b_ing.c#4 integrate
... //depot/projects/ia64/sys/i4b/driver/i4b_ipr.c#5 integrate
... //depot/projects/ia64/sys/i4b/driver/i4b_rbch.c#4 integrate
... //depot/projects/ia64/sys/i4b/driver/i4b_trace.c#4 integrate
... //depot/projects/ia64/sys/i4b/layer1/ifpi/i4b_ifpi_pci.c#3 integrate
... //depot/projects/ia64/sys/i4b/layer1/ifpi2/i4b_ifpi2_pci.c#2 integrate
... //depot/projects/ia64/sys/i4b/layer1/ifpnp/i4b_ifpnp_avm.c#3 integrate
... //depot/projects/ia64/sys/i4b/layer1/ihfc/i4b_ihfc_drv.c#3 integrate
... //depot/projects/ia64/sys/i4b/layer1/isic/i4b_bchan.c#4 integrate
... //depot/projects/ia64/sys/i4b/layer1/iwic/i4b_iwic_bchan.c#3 integrate
... //depot/projects/ia64/sys/i4b/layer2/i4b_l2.c#4 integrate
... //depot/projects/ia64/sys/i4b/layer4/i4b_i4bdrv.c#5 integrate
... //depot/projects/ia64/sys/ia64/ia64/autoconf.c#6 integrate
... //depot/projects/ia64/sys/ia64/ia64/interrupt.c#7 integrate
... //depot/projects/ia64/sys/ia64/ia64/machdep.c#22 integrate
... //depot/projects/ia64/sys/ia64/ia64/pmap.c#13 integrate
... //depot/projects/ia64/sys/ia64/ia64/trap.c#17 integrate
... //depot/projects/ia64/sys/ia64/ia64/vm_machdep.c#6 integrate
... //depot/projects/ia64/sys/ia64/include/elf.h#2 integrate
... //depot/projects/ia64/sys/isofs/cd9660/cd9660_node.c#4 integrate
... //depot/projects/ia64/sys/kern/clock_if.m#1 branch
... //depot/projects/ia64/sys/kern/init_main.c#5 integrate
... //depot/projects/ia64/sys/kern/kern_descrip.c#12 integrate
... //depot/projects/ia64/sys/kern/kern_exec.c#11 integrate
... //depot/projects/ia64/sys/kern/kern_fork.c#7 integrate
... //depot/projects/ia64/sys/kern/kern_intr.c#6 integrate
... //depot/projects/ia64/sys/kern/kern_jail.c#6 integrate
... //depot/projects/ia64/sys/kern/kern_lock.c#4 integrate
... //depot/projects/ia64/sys/kern/kern_malloc.c#5 integrate
... //depot/projects/ia64/sys/kern/kern_mtxpool.c#5 integrate
... //depot/projects/ia64/sys/kern/kern_mutex.c#6 integrate
... //depot/projects/ia64/sys/kern/kern_proc.c#8 integrate
... //depot/projects/ia64/sys/kern/kern_resource.c#6 integrate
... //depot/projects/ia64/sys/kern/kern_sema.c#3 integrate
... //depot/projects/ia64/sys/kern/kern_sig.c#7 integrate
... //depot/projects/ia64/sys/kern/kern_sx.c#6 integrate
... //depot/projects/ia64/sys/kern/kern_timeout.c#3 integrate
... //depot/projects/ia64/sys/kern/subr_clock.c#1 branch
... //depot/projects/ia64/sys/kern/subr_disklabel.c#6 integrate
... //depot/projects/ia64/sys/kern/subr_eventhandler.c#3 integrate
... //depot/projects/ia64/sys/kern/subr_mbuf.c#4 integrate
... //depot/projects/ia64/sys/kern/subr_rman.c#4 integrate
... //depot/projects/ia64/sys/kern/subr_smp.c#6 integrate
... //depot/projects/ia64/sys/kern/subr_taskqueue.c#3 integrate
... //depot/projects/ia64/sys/kern/subr_trap.c#6 integrate
... //depot/projects/ia64/sys/kern/subr_witness.c#7 integrate
... //depot/projects/ia64/sys/kern/sys_generic.c#8 integrate
... //depot/projects/ia64/sys/kern/sys_pipe.c#10 integrate
... //depot/projects/ia64/sys/kern/uipc_syscalls.c#7 integrate
... //depot/projects/ia64/sys/kern/vfs_bio.c#12 integrate
... //depot/projects/ia64/sys/kern/vfs_subr.c#9 integrate
... //depot/projects/ia64/sys/net/bpf.c#6 integrate
... //depot/projects/ia64/sys/net/bsd_comp.c#4 integrate
... //depot/projects/ia64/sys/net/ethernet.h#4 integrate
... //depot/projects/ia64/sys/net/if.c#6 integrate
... //depot/projects/ia64/sys/net/if_arcsubr.c#3 integrate
... //depot/projects/ia64/sys/net/if_ethersubr.c#8 integrate
... //depot/projects/ia64/sys/net/if_loop.c#5 integrate
... //depot/projects/ia64/sys/net/if_ppp.c#5 integrate
... //depot/projects/ia64/sys/net/if_sl.c#5 integrate
... //depot/projects/ia64/sys/net/if_spppsubr.c#3 integrate
... //depot/projects/ia64/sys/net/if_tap.c#7 integrate
... //depot/projects/ia64/sys/net/if_tun.c#4 integrate
... //depot/projects/ia64/sys/net/if_vlan.c#5 integrate
... //depot/projects/ia64/sys/net/ppp_deflate.c#4 integrate
... //depot/projects/ia64/sys/netatalk/ddp_usrreq.c#5 integrate
... //depot/projects/ia64/sys/netatm/atm_subr.c#4 integrate
... //depot/projects/ia64/sys/netgraph/ng_base.c#4 integrate
... //depot/projects/ia64/sys/netinet/if_ether.c#6 integrate
... //depot/projects/ia64/sys/netinet/ip_input.c#7 integrate
... //depot/projects/ia64/sys/netinet6/ip6_input.c#5 integrate
... //depot/projects/ia64/sys/netipx/ipx_input.c#3 integrate
... //depot/projects/ia64/sys/netnatm/natm_proto.c#4 integrate
... //depot/projects/ia64/sys/netns/ns_input.c#3 integrate
... //depot/projects/ia64/sys/netsmb/smb_subr.h#5 integrate
... //depot/projects/ia64/sys/pc98/i386/machdep.c#10 integrate
... //depot/projects/ia64/sys/pc98/pc98/sio.c#8 integrate
... //depot/projects/ia64/sys/pci/if_dc.c#8 integrate
... //depot/projects/ia64/sys/pci/if_pcn.c#4 integrate
... //depot/projects/ia64/sys/pci/if_rl.c#6 integrate
... //depot/projects/ia64/sys/pci/if_sf.c#4 integrate
... //depot/projects/ia64/sys/pci/if_sis.c#7 integrate
... //depot/projects/ia64/sys/pci/if_sk.c#4 integrate
... //depot/projects/ia64/sys/pci/if_ste.c#4 integrate
... //depot/projects/ia64/sys/pci/if_ti.c#6 integrate
... //depot/projects/ia64/sys/pci/if_tl.c#4 integrate
... //depot/projects/ia64/sys/pci/if_vr.c#4 integrate
... //depot/projects/ia64/sys/pci/if_wb.c#4 integrate
... //depot/projects/ia64/sys/pci/if_xl.c#6 integrate
... //depot/projects/ia64/sys/sparc64/sparc64/clock.c#3 integrate
... //depot/projects/ia64/sys/sparc64/sparc64/eeprom.c#1 branch
... //depot/projects/ia64/sys/sparc64/sparc64/eeprom_ebus.c#1 branch
... //depot/projects/ia64/sys/sparc64/sparc64/eeprom_sbus.c#1 branch
... //depot/projects/ia64/sys/sparc64/sparc64/intr_machdep.c#6 integrate
... //depot/projects/ia64/sys/sparc64/sparc64/machdep.c#9 integrate
... //depot/projects/ia64/sys/sparc64/sparc64/mp_machdep.c#4 integrate
... //depot/projects/ia64/sys/sys/_lock.h#2 integrate
... //depot/projects/ia64/sys/sys/clock.h#1 branch
... //depot/projects/ia64/sys/sys/disklabel.h#9 integrate
... //depot/projects/ia64/sys/sys/mutex.h#7 integrate
... //depot/projects/ia64/sys/sys/pcpu.h#5 integrate
... //depot/projects/ia64/sys/sys/proc.h#11 integrate
... //depot/projects/ia64/sys/sys/signalvar.h#4 integrate
... //depot/projects/ia64/sys/ufs/ffs/ffs_vfsops.c#10 integrate
... //depot/projects/ia64/sys/ufs/ifs/ifs_vfsops.c#4 integrate
... //depot/projects/ia64/sys/ufs/ufs/ufs_dirhash.c#5 integrate
... //depot/projects/ia64/sys/ufs/ufs/ufs_ihash.c#3 integrate
... //depot/projects/ia64/sys/vm/device_pager.c#5 integrate
... //depot/projects/ia64/sys/vm/phys_pager.c#3 integrate
... //depot/projects/ia64/sys/vm/swap_pager.c#7 integrate
... //depot/projects/ia64/sys/vm/uma_core.c#5 integrate
... //depot/projects/ia64/sys/vm/uma_int.h#3 integrate
... //depot/projects/ia64/sys/vm/vm_extern.h#6 integrate
... //depot/projects/ia64/sys/vm/vm_meter.c#3 integrate
... //depot/projects/ia64/sys/vm/vm_object.c#7 integrate
... //depot/projects/ia64/sys/vm/vm_page.c#7 integrate
... //depot/projects/ia64/sys/vm/vm_pageq.c#4 integrate
... //depot/projects/ia64/sys/vm/vm_pager.c#6 integrate
... //depot/projects/ia64/sys/vm/vm_zone.c#6 integrate
... //depot/projects/ia64/tools/regression/geom/geom_simdev.c#3 integrate
... //depot/projects/ia64/tools/regression/geom/geom_simdisk.c#3 integrate
... //depot/projects/ia64/tools/regression/geom/geom_simdisk.h#3 integrate
... //depot/projects/ia64/tools/regression/geom/geom_simdisk_xml.c#4 integrate
... //depot/projects/ia64/usr.bin/sort/extern.h#3 integrate
... //depot/projects/ia64/usr.bin/sort/fields.c#3 integrate
... //depot/projects/ia64/usr.bin/sort/files.c#3 integrate
... //depot/projects/ia64/usr.bin/sort/init.c#4 integrate
... //depot/projects/ia64/usr.bin/sort/msort.c#3 integrate
... //depot/projects/ia64/usr.bin/sort/sort.c#4 integrate
... //depot/projects/ia64/usr.bin/sort/sort.h#2 integrate
... //depot/projects/ia64/usr.bin/yacc/error.c#5 integrate
... //depot/projects/ia64/usr.bin/yacc/main.c#5 integrate
... //depot/projects/ia64/usr.bin/yacc/mkpar.c#5 integrate
... //depot/projects/ia64/usr.bin/yacc/output.c#5 integrate
... //depot/projects/ia64/usr.bin/yacc/reader.c#5 integrate
... //depot/projects/ia64/usr.bin/yacc/verbose.c#5 integrate
... //depot/projects/ia64/usr.bin/yacc/yacc.1#2 integrate
... //depot/projects/ia64/usr.bin/yacc/yyfix.1#2 integrate
... //depot/projects/ia64/usr.sbin/ppp/auth.c#3 integrate
... //depot/projects/ia64/usr.sbin/ppp/radius.h#2 integrate
... //depot/projects/ia64/usr.sbin/wicontrol/wicontrol.c#3 integrate

Differences ...

==== //depot/projects/ia64/Makefile.inc1#15 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile.inc1,v 1.248 2002/04/01 20:47:27 joe Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.249 2002/04/04 06:49:46 ru Exp $
 #
 # Make command line options:
 #	-DMAKE_KERBEROS4 to build KerberosIV
@@ -226,8 +226,8 @@
 		usr/share/groff_font/devutf8 \
 		usr/share/tmac/mdoc usr/share/tmac/mm
 
-INCDIRS=	arpa g++/std isc objc protocols readline rpc rpcsvc openssl \
-		security
+INCDIRS=	arpa dev fs g++/std isc isofs objc protocols \
+		readline rpc rpcsvc openssl security ufs
 
 #
 # buildworld

==== //depot/projects/ia64/etc/mail/Makefile#5 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/etc/mail/Makefile,v 1.24 2002/03/28 03:30:27 gshapiro Exp $
+# $FreeBSD: src/etc/mail/Makefile,v 1.26 2002/04/04 07:42:12 ru Exp $
 #
 # This Makefile provides an easy way to generate the configuration
 # file and database maps for the sendmail(8) daemon.

==== //depot/projects/ia64/gnu/usr.bin/cc/cc1/Makefile#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/usr.bin/cc/cc1/Makefile,v 1.22 2002/04/04 01:25:26 obrien Exp $
+# $FreeBSD: src/gnu/usr.bin/cc/cc1/Makefile,v 1.23 2002/04/04 19:26:12 obrien Exp $
 
 .include "../Makefile.inc"
 
@@ -27,7 +27,7 @@
 	    ${.ALLSRC} > c-parse.y
 	${YACC} -d -o c-parse.c c-parse.y
 
-CLEANFILES+=	c-parse.c c-parse.h c-parse.y 		# insurance
+CLEANFILES+=	c-parse.c c-parse.h c-parse.y		# insurance
 
 #-----------------------------------------------------------------------
 

==== //depot/projects/ia64/gnu/usr.bin/cc/cc1obj/Makefile#3 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/usr.bin/cc/cc1obj/Makefile,v 1.16 2002/04/04 01:25:26 obrien Exp $
+# $FreeBSD: src/gnu/usr.bin/cc/cc1obj/Makefile,v 1.17 2002/04/04 19:26:13 obrien Exp $
 
 .include "../Makefile.inc"
 
@@ -28,7 +28,7 @@
 	${YACC} -d -o objc-parse.c objc-parse.y
 	mv objc-parse.h c-parse.h
 
-CLEANFILES+=	objc-parse.c c-parse.h objc-parse.y 	# insurance
+CLEANFILES+=	objc-parse.c c-parse.h objc-parse.y		# insurance
 
 #-----------------------------------------------------------------------
 

==== //depot/projects/ia64/gnu/usr.bin/cc/cc_tools/Makefile#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/gnu/usr.bin/cc/cc_tools/Makefile,v 1.54 2002/04/04 00:11:00 obrien Exp $
+# $FreeBSD: src/gnu/usr.bin/cc/cc_tools/Makefile,v 1.55 2002/04/04 18:24:56 obrien Exp $
 
 #
 # This could probably be merged with ../cc_int/Makefile, but bsd.lib.mk
@@ -12,7 +12,6 @@
 # aliases of generated headers.
 
 CFLAGS+=	-I.
-WARNS=		0
 
 .include "../Makefile.inc"
 

==== //depot/projects/ia64/gnu/usr.bin/cc/cc_tools/freebsd-native.h#3 (text+ko) ====

@@ -1,10 +1,9 @@
-/* $FreeBSD: src/gnu/usr.bin/cc/cc_tools/freebsd-native.h,v 1.13 2002/02/24 06:05:22 obrien Exp $ */
+/* $FreeBSD: src/gnu/usr.bin/cc/cc_tools/freebsd-native.h,v 1.14 2002/04/04 19:36:33 obrien Exp $ */
 
 /* FREEBSD_NATIVE is defined when gcc is integrated into the FreeBSD
    source tree so it can be configured appropriately without using
    the GNU configure/build mechanism. */
 
-#undef  FREEBSD_NATIVE
 #define FREEBSD_NATIVE 1
 
 #undef SYSTEM_INCLUDE_DIR		/* We don't need one for now. */
@@ -29,17 +28,17 @@
    libraries: MD_EXEC_PREFIX:MD_STARTFILE_PREFIX:STANDARD_STARTFILE_PREFIX
 */
 #undef  TOOLDIR_BASE_PREFIX		/* Old??  This is not documented. */
+#define STANDARD_EXEC_PREFIX		PREFIX"/libexec/"
 #undef  MD_EXEC_PREFIX			/* We don't want one. */
-#define STANDARD_EXEC_PREFIX		PREFIX"/libexec/"
 
 /* Under FreeBSD, the normal location of the various *crt*.o files is the
    /usr/lib directory.  */
 
-#undef  MD_STARTFILE_PREFIX		/* We don't need one for now. */
 #define STANDARD_STARTFILE_PREFIX	PREFIX"/lib/"
 #ifdef CROSS_COMPILE
 #define CROSS_STARTFILE_PREFIX		PREFIX"/lib/"
 #endif
+#undef  MD_STARTFILE_PREFIX		/* We don't need one for now. */
 
 /* For the native system compiler, we actually build libgcc in a profiled
    version.  So we should use it with -pg.  */

==== //depot/projects/ia64/gnu/usr.bin/send-pr/send-pr.1#2 (text+ko) ====

@@ -22,7 +22,7 @@
 .\"
 .\" ---------------------------------------------------------------------------
 .\"
-.\" $FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.11 2001/06/17 11:22:57 alex Exp $
+.\" $FreeBSD: src/gnu/usr.bin/send-pr/send-pr.1,v 1.12 2002/04/04 18:31:36 des Exp $
 .nh
 .TH SEND-PR 1 3.113 "February 1993"
 .SH NAME
@@ -194,6 +194,9 @@
 .B i386
 Intel x86 processor specific problems.
 .TP
+.B ia64
+Intel ia64 processor specific problems.
+.TP
 .B kern
 Changes or enhancements to the architecture independent kernel sources.
 .TP
@@ -203,8 +206,14 @@
 .B ports
 Corrections or enhancements (including new ports) to the ports collection.
 .TP
-.B sparc
+.B sparc64
 SPARC processor specific problems.
+.TP
+.B standards
+Standards conformance issues.
+.TP
+.B www
+Changes or enhancements to the FreeBSD website.
 .SH ENVIRONMENT
 The environment variable 
 .B EDITOR

==== //depot/projects/ia64/include/string.h#4 (text+ko) ====

@@ -31,13 +31,23 @@
  * SUCH DAMAGE.
  *
  *	@(#)string.h	8.1 (Berkeley) 6/2/93
- * $FreeBSD: src/include/string.h,v 1.12 2002/03/23 17:24:53 imp Exp $
+ * $FreeBSD: src/include/string.h,v 1.13 2002/04/04 05:41:57 mike Exp $
  */
 
 #ifndef _STRING_H_
 #define	_STRING_H_
+
+#include <sys/cdefs.h>
 #include <machine/ansi.h>
 
+/*
+ * Prototype functions which were historically defined in <string.h>, but
+ * are required by POSIX to be prototyped in <strings.h>.
+ */
+#if __BSD_VISIBLE
+#include <strings.h>
+#endif
+
 #ifdef	_BSD_SIZE_T_
 typedef	_BSD_SIZE_T_	size_t;
 #undef	_BSD_SIZE_T_
@@ -47,53 +57,45 @@
 #define	NULL	0
 #endif
 
-#include <sys/cdefs.h>
-
 __BEGIN_DECLS
 void	*memchr(const void *, int, size_t);
 int	 memcmp(const void *, const void *, size_t);
-void	*memcpy(void *, const void *, size_t);
+void	*memcpy(void * __restrict, const void * __restrict, size_t);
 void	*memmove(void *, const void *, size_t);
 void	*memset(void *, int, size_t);
-char	*strcat(char *, const char *);
+char	*strcat(char * __restrict, const char * __restrict);
 char	*strchr(const char *, int);
 int	 strcmp(const char *, const char *);
 int	 strcoll(const char *, const char *);
-char	*strcpy(char *, const char *);
+char	*strcpy(char * __restrict, const char * __restrict);
 size_t	 strcspn(const char *, const char *);
 char	*strerror(int);
 size_t	 strlen(const char *);
-char	*strncat(char *, const char *, size_t);
+char	*strncat(char * __restrict, const char * __restrict, size_t);
 int	 strncmp(const char *, const char *, size_t);
-char	*strncpy(char *, const char *, size_t);
+char	*strncpy(char * __restrict, const char * __restrict, size_t);
 char	*strpbrk(const char *, const char *);
 char	*strrchr(const char *, int);
 size_t	 strspn(const char *, const char *);
 char	*strstr(const char *, const char *);
-char	*strtok(char *, const char *);
-size_t	 strxfrm(char *, const char *, size_t);
+char	*strtok(char * __restrict, const char * __restrict);
+size_t	 strxfrm(char * __restrict, const char * __restrict, size_t);
 
-/* Nonstandard routines */
-#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
-int	 bcmp(const void *, const void *, size_t);
-void	 bcopy(const void *, void *, size_t);
-void	 bzero(void *, size_t);
-int	 ffs(int);
-char	*index(const char *, int);
-void	*memccpy(void *, const void *, int, size_t);
-char	*rindex(const char *, int);
-int	 strcasecmp(const char *, const char *);
-char	*strcasestr(const char *, const char *);
+#if __POSIX_VISIBLE >= 200112
+void	*memccpy(void * __restrict, const void * __restrict, int, size_t);
 char	*strdup(const char *);
 int	 strerror_r(int, char *, size_t);
+char	*strtok_r(char *, const char *, char **);
+#endif
+
+#if __BSD_VISIBLE
+char	*strcasestr(const char *, const char *);
 size_t	 strlcat(char *, const char *, size_t);
 size_t	 strlcpy(char *, const char *, size_t);
 void	 strmode(int, char *);
-int	 strncasecmp(const char *, const char *, size_t);
 char	*strnstr(const char *, const char *, size_t);
 char	*strsep(char **, const char *);
 char	*strsignal(int);
-char	*strtok_r(char *, const char *, char **);
 void	 swab(const void *, void *, size_t);
 #endif
 __END_DECLS

==== //depot/projects/ia64/include/strings.h#2 (text+ko) ====

@@ -1,6 +1,6 @@
 /*-
- * Copyright (c) 1990, 1993
- *	The Regents of the University of California.  All rights reserved.
+ * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
+ * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -10,18 +10,11 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -30,7 +23,29 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	@(#)strings.h	8.1 (Berkeley) 6/2/93
+ * $FreeBSD: src/include/strings.h,v 1.2 2002/04/04 05:41:57 mike Exp $
  */
 
-#include <string.h>
+#ifndef _STRINGS_H_
+#define	_STRINGS_H_
+
+#include <sys/cdefs.h>
+#include <machine/ansi.h>
+
+#ifdef	_BSD_SIZE_T_
+typedef	_BSD_SIZE_T_	size_t;
+#undef	_BSD_SIZE_T_
+#endif
+
+__BEGIN_DECLS
+int	 bcmp(const void *, const void *, size_t);	/* LEGACY */
+void	 bcopy(const void *, void *, size_t);		/* LEGACY */
+void	 bzero(void *, size_t);				/* LEGACY */
+int	 ffs(int);
+char	*index(const char *, int);			/* LEGACY */
+char	*rindex(const char *, int);			/* LEGACY */
+int	 strcasecmp(const char *, const char *);
+int	 strncasecmp(const char *, const char *, size_t);
+__END_DECLS
+
+#endif /* _STRINGS_H_ */

==== //depot/projects/ia64/lib/libpam/modules/modules.inc#4 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/lib/libpam/modules/modules.inc,v 1.3 2002/03/07 02:23:16 green Exp $
+# $FreeBSD: src/lib/libpam/modules/modules.inc,v 1.4 2002/04/04 16:08:28 des Exp $
 
 MODULES		 =
 MODULES		+= pam_deny
@@ -14,6 +14,7 @@
 MODULES		+= pam_nologin
 MODULES		+= pam_opie
 MODULES		+= pam_opieaccess
+MODULES		+= pam_passwdqc
 MODULES		+= pam_permit
 MODULES		+= pam_radius
 MODULES		+= pam_rootok

==== //depot/projects/ia64/lib/libpam/modules/pam_ssh/pam_ssh.c#6 (text+ko) ====

@@ -32,27 +32,26 @@
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
+ *
+ * $Id: pam_ssh.c,v 1.23 2001/08/20 01:44:02 akorty Exp $
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/lib/libpam/modules/pam_ssh/pam_ssh.c,v 1.28 2002/03/14 23:27:59 des Exp $");
+__FBSDID("$FreeBSD: src/lib/libpam/modules/pam_ssh/pam_ssh.c,v 1.29 2002/04/04 18:45:21 des Exp $");
 
 #include <sys/param.h>
-#include <sys/socket.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
 
-#include <dirent.h>
+#include <fcntl.h>
 #include <pwd.h>
 #include <signal.h>
-#include <ssh.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <syslog.h>
 #include <unistd.h>
 
-#define	PAM_SM_AUTH
+#define PAM_SM_AUTH
 #define PAM_SM_ACCOUNT
 #define PAM_SM_SESSION
 #define PAM_SM_PASSWORD
@@ -70,16 +69,12 @@
 #include "log.h"
 #include "pam_ssh.h"
 
-static int auth_via_key(pam_handle_t *, int, const char *, const char *, const struct passwd *, const char *);
-static void key_cleanup(pam_handle_t *, void *, int);
-static void ssh_cleanup(pam_handle_t *, void *, int);
-
 /*
- * Generic cleanup function for SSH "Key" type.
+ * Generic cleanup function for OpenSSH "Key" type.
  */
 
-static void
-key_cleanup(pam_handle_t *pamh __unused, void *data, int error_status __unused)
+void
+key_cleanup(pam_handle_t *pamh, void *data, int error_status)
 {
 	if (data)
 		key_free(data);
@@ -90,8 +85,8 @@
  * Generic PAM cleanup function for this module.
  */
 
-static void
-ssh_cleanup(pam_handle_t *pamh __unused, void *data, int error_status __unused)
+void
+ssh_cleanup(pam_handle_t *pamh, void *data, int error_status)
 {
 	if (data)
 		free(data);
@@ -107,39 +102,46 @@
  */
 
 static int
-auth_via_key(pam_handle_t *pamh, int type, const char *file,
-    const char *dir, const struct passwd *user, const char *pass)
+auth_via_key(pam_handle_t *pamh, const char *file, const char *dir,
+    const struct passwd *user, const char *pass)
 {
-	char		*comment;		/* private key comment */
-	char		*data_name;		/* PAM state */
-	static int	 indx = 0;		/* for saved keys */
-	Key		*key;			/* user's key */
-	char		*path;			/* to key files */
-	int		 retval;		/* from calls */
-	uid_t		 saved_uid;		/* caller's uid */
+	char *comment;		/* private key comment */
+	char *data_name;	/* PAM state */
+	static int index = 0;	/* for saved keys */
+	Key *key;		/* user's key */
+	char *path;		/* to key files */
+	int retval;		/* from calls */
+	uid_t saved_uid;	/* caller's uid */
 
 	/* locate the user's private key file */
+
 	if (!asprintf(&path, "%s/%s", dir, file)) {
-		syslog(LOG_CRIT, "%s: %m", MODULE_NAME);
+		openpam_log(PAM_LOG_ERROR, "%s: %m", MODULE_NAME);
 		return PAM_SERVICE_ERR;
 	}
-	saved_uid = geteuid();
-	/*
-	 * Try to decrypt the private key with the passphrase provided.
-	 * If success, the user is authenticated.
-	 */
-	seteuid(user->pw_uid);
-	key = key_load_private_type(type, path, pass, &comment);
+
+	saved_uid = getuid();
+
+	/* Try to decrypt the private key with the passphrase provided.  If
+	   success, the user is authenticated. */
+
+	comment = NULL;
+	(void) setreuid(user->pw_uid, saved_uid);
+	key = key_load_private(path, pass, &comment);
+	(void) setuid(saved_uid);
 	free(path);
-	seteuid(saved_uid);
-	if (key == NULL)
+	if (!comment)
+		comment = strdup(file);
+	if (!key) {
+		free(comment);
 		return PAM_AUTH_ERR;
-	/*
-	 * Save the key and comment to pass to ssh-agent in the session
-	 * phase.
-	 */
-	if (!asprintf(&data_name, "ssh_private_key_%d", indx)) {
-		syslog(LOG_CRIT, "%s: %m", MODULE_NAME);
+	}
+
+	/* save the key and comment to pass to ssh-agent in the session
+	   phase */
+
+	if (!asprintf(&data_name, "ssh_private_key_%d", index)) {
+		openpam_log(PAM_LOG_ERROR, "%s: %m", MODULE_NAME);
 		free(comment);
 		return PAM_SERVICE_ERR;
 	}
@@ -150,8 +152,8 @@
 		free(comment);
 		return retval;
 	}
-	if (!asprintf(&data_name, "ssh_key_comment_%d", indx)) {
-		syslog(LOG_CRIT, "%s: %m", MODULE_NAME);
+	if (!asprintf(&data_name, "ssh_key_comment_%d", index)) {
+		openpam_log(PAM_LOG_ERROR, "%s: %m", MODULE_NAME);
 		free(comment);
 		return PAM_SERVICE_ERR;
 	}
@@ -161,435 +163,478 @@
 		free(comment);
 		return retval;
 	}
-	++indx;
+
+	++index;
 	return PAM_SUCCESS;
 }
 
 
-PAM_EXTERN int
-pam_sm_authenticate(pam_handle_t *pamh, int flags __unused, int argc, const char **argv)
+/*
+ * Add the keys stored by auth_via_key() to the agent connected to the
+ * socket provided.
+ */
+
+static int
+add_keys(pam_handle_t *pamh, char *socket)
 {
-	struct options	 options;		/* module options */
-	int		 authenticated;		/* user authenticated? */
-	char		*dotdir;		/* .ssh2 dir name */
-	struct dirent	*dotdir_ent;		/* .ssh2 dir entry */
-	DIR		*dotdir_p;		/* .ssh2 dir pointer */
-	const char	*pass;			/* passphrase */
-	struct passwd	*pwd;			/* user's passwd entry */
-	struct passwd	*pwd_keep;		/* our own copy */
-	int		 retval;		/* from calls */
-	int		 pam_auth_dsa;		/* Authorised via DSA */
-	int		 pam_auth_rsa;		/* Authorised via RSA */
-	const char	*user;			/* username */
-
-	pam_std_option(&options, NULL, argc, argv);
+	AuthenticationConnection *ac;	/* connection to ssh-agent */
+	char *comment;			/* private key comment */
+	char *data_name;		/* PAM state */
+	int final;			/* final return value */
+	int index;			/* for saved keys */
+	Key *key;			/* user's private key */
+	int retval;			/* from calls */
 
-	PAM_LOG("Options processed");
-
-	retval = pam_get_user(pamh, &user, NULL);
-	if (retval != PAM_SUCCESS)
-		PAM_RETURN(retval);
-	pwd = getpwnam(user);
-	if (pwd == NULL || pwd->pw_dir == NULL)
-		/* delay? */
-		PAM_RETURN(PAM_AUTH_ERR);
-
-	PAM_LOG("Got user: %s", user);
-
 	/*
-	 * Pass prompt message to application and receive
-	 * passphrase.
+	 * Connect to the agent.
+	 *
+	 * XXX Because ssh_get_authentication_connection() gets the
+	 * XXX agent parameters from the environment, we have to
+	 * XXX temporarily replace the environment with the PAM
+	 * XXX environment list.  This is a hack.
 	 */
-	retval = pam_get_authtok(pamh, &pass, NEED_PASSPHRASE);
-	if (retval != PAM_SUCCESS)
-		PAM_RETURN(retval);
-	OpenSSL_add_all_algorithms();	/* required for DSA */
+	{
+		extern char **environ;
+		char **saved, **evp;
 
-	PAM_LOG("Got passphrase");
-
-	/*
-	 * Either the DSA or the RSA key will authenticate us, but if
-	 * we can decrypt both, we'll do so here so we can cache them in
-	 * the session phase.
-	 */
-	if (!asprintf(&dotdir, "%s/%s", pwd->pw_dir, SSH_CLIENT_DIR)) {
-		syslog(LOG_CRIT, "%s: %m", MODULE_NAME);
-		PAM_RETURN(PAM_SERVICE_ERR);
+		saved = environ;
+		if ((environ = pam_getenvlist(pamh)) == NULL) {
+			environ = saved;
+			openpam_log(PAM_LOG_ERROR, "%s: %m", MODULE_NAME);
+			return (PAM_BUF_ERR);
+		}
+		ac = ssh_get_authentication_connection();
+		for (evp = environ; *evp; evp++)
+			free(*evp);
+		free(environ);
+		environ = saved;
 	}
-	pam_auth_dsa = auth_via_key(pamh, KEY_DSA, SSH_CLIENT_ID_DSA, dotdir,
-	    pwd, pass);
-	pam_auth_rsa = auth_via_key(pamh, KEY_RSA1, SSH_CLIENT_IDENTITY, dotdir,
-	    pwd, pass);
-	authenticated = 0;
-	if (pam_auth_dsa == PAM_SUCCESS)
-		authenticated++;
-	if (pam_auth_rsa == PAM_SUCCESS)
-		authenticated++;
-
-	PAM_LOG("Done pre-authenticating; got %d", authenticated);
-
-	/*
-	 * Compatibility with SSH2 from SSH Communications Security.
-	 */
-	if (!asprintf(&dotdir, "%s/%s", pwd->pw_dir, SSH2_CLIENT_DIR)) {
-		syslog(LOG_CRIT, "%s: %m", MODULE_NAME);
-		PAM_RETURN(PAM_SERVICE_ERR);
+	if (!ac) {
+		openpam_log(PAM_LOG_ERROR, "%s: %s: %m", MODULE_NAME, socket);
+		return PAM_SESSION_ERR;
 	}
-	/*
-	 * Try to load anything that looks like a private key.  For
-	 * now, we only support DSA and RSA keys.
-	 */
-	dotdir_p = opendir(dotdir);
-	while (dotdir_p && (dotdir_ent = readdir(dotdir_p))) {
-		/* skip public keys */
-		if (strcmp(&dotdir_ent->d_name[dotdir_ent->d_namlen -
-		    strlen(SSH2_PUB_SUFFIX)], SSH2_PUB_SUFFIX) == 0)
-			continue;
-		/* DSA keys */
-		if (strncmp(dotdir_ent->d_name, SSH2_DSA_PREFIX,
-		    strlen(SSH2_DSA_PREFIX)) == 0)
-			retval = auth_via_key(pamh, KEY_DSA,
-			    dotdir_ent->d_name, dotdir, pwd, pass);
-		/* RSA keys */
-		else if (strncmp(dotdir_ent->d_name, SSH2_RSA_PREFIX,
-		    strlen(SSH2_RSA_PREFIX)) == 0)
-			retval = auth_via_key(pamh, KEY_RSA,
-			    dotdir_ent->d_name, dotdir, pwd, pass);
-		/* skip other files */
-		else
-			continue;
-		authenticated += (retval == PAM_SUCCESS);
-	}
-	if (!authenticated) {
-		PAM_VERBOSE_ERROR("SSH authentication refused");
-		PAM_RETURN(PAM_AUTH_ERR);
-	}
 
-	PAM_LOG("Done authenticating; got %d", authenticated);
+	/* hand off each private key to the agent */
 
-	/*
-	 * Copy the passwd entry (in case successive calls are made)
-	 * and save it for the session phase.
-	 */
-	pwd_keep = malloc(sizeof *pwd);
-	if (pwd_keep == NULL) {
-		syslog(LOG_CRIT, "%m");
-		PAM_RETURN(PAM_SERVICE_ERR);
+	final = 0;
+	for (index = 0; ; index++) {
+		if (!asprintf(&data_name, "ssh_private_key_%d", index)) {
+			openpam_log(PAM_LOG_ERROR, "%s: %m", MODULE_NAME);
+			ssh_close_authentication_connection(ac);
+			return PAM_SERVICE_ERR;
+		}
+		retval = pam_get_data(pamh, data_name, (const void **)&key);
+		free(data_name);
+		if (retval != PAM_SUCCESS)
+			break;
+		if (!asprintf(&data_name, "ssh_key_comment_%d", index)) {
+			openpam_log(PAM_LOG_ERROR, "%s: %m", MODULE_NAME);
+			ssh_close_authentication_connection(ac);
+			return PAM_SERVICE_ERR;
+		}
+		retval = pam_get_data(pamh, data_name,
+		    (const void **)&comment);
+		free(data_name);
+		if (retval != PAM_SUCCESS)
+			break;
+		retval = ssh_add_identity(ac, key, comment);
+		if (!final)
+			final = retval;
 	}
-	memcpy(pwd_keep, pwd, sizeof *pwd_keep);
-	retval = pam_set_data(pamh, "ssh_passwd_entry", pwd_keep, ssh_cleanup);
-	if (retval != PAM_SUCCESS) {
-		free(pwd_keep);
-		PAM_RETURN(retval);
-	}
+	ssh_close_authentication_connection(ac);
 
-	PAM_LOG("Saved ssh_passwd_entry");
-
-	PAM_RETURN(PAM_SUCCESS);
+	return final ? PAM_SUCCESS : PAM_SESSION_ERR;
 }
 
 
 PAM_EXTERN int
-pam_sm_setcred(pam_handle_t *pamh __unused, int flags __unused, int argc, const char **argv)
+pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc,
+    const char **argv)
 {
-	struct options	 options;		/* module options */
+	int authenticated;		/* user authenticated? */
+	char *dotdir;			/* .ssh dir name */
+	char *file;			/* current key file */
+	char *keyfiles;			/* list of key files to add */

>>> TRUNCATED FOR MAIL (1000 lines) <<<

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200204050205.g3525bN19609>