# PaCkAgE DaTaStReAm ESUscponly 1 480 # end of header 07070100006286000081a400000000000000000000000147ce05570000010b000000200000001b00000000000000000000001300000000ESUscponly/pkginfoCLASSES=none BASEDIR=/usr/local PKG=ESUscponly NAME=scponly utilities for Solaris 10 ARCH=sparc VERSION=4.8 CATEGORY=application VENDOR=Joe Boyle EMAIL=http://sublimation.org/scponly/wiki/index.php/Main_Page PSTAMP=2008-03-04 PKGINST=ESUscponly 07070100006284000081a400000000000000000000000147ce0557000005e1000000200000001b00000000000000000000001200000000ESUscponly/pkgmap: 1 480 1 d none bin 0555 bin bin 1 f none bin/scponly 0555 bin bin 65860 42826 1204651356 1 f none bin/setup_scponly 0555 bin bin 6957 65513 1204683507 1 f none bin/setup_scponlyc 0555 bin bin 6958 182 1204683560 1 d none doc 0555 bin bin 1 d none doc/scponly 0555 bin bin 1 f none doc/scponly/AUTHOR 0444 bin bin 32 2936 1204672127 1 f none doc/scponly/BUILDING-JAILS.TXT 0444 bin bin 7927 31627 1204672127 1 f none doc/scponly/CHANGELOG 0444 bin bin 11102 41054 1204672127 1 f none doc/scponly/CONTRIB 0444 bin bin 3671 58306 1204672127 1 f none doc/scponly/COPYING 0444 bin bin 1247 32312 1204672127 1 f none doc/scponly/ES-UNIX_ADDITIONS 0444 bin bin 1607 12047 1204673749 1 f none doc/scponly/INSTALL 0444 bin bin 6304 37076 1204672127 1 f none doc/scponly/README 0444 bin bin 4047 41370 1204672127 1 f none doc/scponly/SECURITY 0444 bin bin 2778 45861 1204672127 1 f none doc/scponly/TODO 0444 bin bin 89 7427 1204672127 1 d none etc 0555 bin bin 1 d none etc/scponly 0555 bin bin 1 f none etc/scponly/debuglevel 0644 bin bin 2 60 1204676167 1 f none etc/scponly/scponly.binaries 0644 bin bin 216 19197 1204654633 1 f none etc/scponly/scponly.defaults 0644 bin bin 95 8920 1204663208 1 d none man 0555 bin bin 1 d none man/man8 0555 bin bin 1 f none man/man8/scponly.8 0644 bin bin 5122 48930 1204651356 1 i pkginfo 267 22695 1204684119 1 i postinstall 505 44008 1204684076 1 i postremove 426 35802 1204684076 1 d none sbin 0555 bin bin 1 f none sbin/scponlyc 4555 root root 65860 42826 1204651357 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!07070100006286000081a400000000000000000000000147ce05570000010b000000200000001b00000000000000000000000800000000pkginfoCLASSES=none BASEDIR=/usr/local PKG=ESUscponly NAME=scponly utilities for Solaris 10 ARCH=sparc VERSION=4.8 CATEGORY=application VENDOR=Joe Boyle EMAIL=http://sublimation.org/scponly/wiki/index.php/Main_Page PSTAMP=2008-03-04 PKGINST=ESUscponly 07070100006284000081a400000000000000000000000147ce0557000005e1000000200000001b00000000000000000000000700000000pkgmap: 1 480 1 d none bin 0555 bin bin 1 f none bin/scponly 0555 bin bin 65860 42826 1204651356 1 f none bin/setup_scponly 0555 bin bin 6957 65513 1204683507 1 f none bin/setup_scponlyc 0555 bin bin 6958 182 1204683560 1 d none doc 0555 bin bin 1 d none doc/scponly 0555 bin bin 1 f none doc/scponly/AUTHOR 0444 bin bin 32 2936 1204672127 1 f none doc/scponly/BUILDING-JAILS.TXT 0444 bin bin 7927 31627 1204672127 1 f none doc/scponly/CHANGELOG 0444 bin bin 11102 41054 1204672127 1 f none doc/scponly/CONTRIB 0444 bin bin 3671 58306 1204672127 1 f none doc/scponly/COPYING 0444 bin bin 1247 32312 1204672127 1 f none doc/scponly/ES-UNIX_ADDITIONS 0444 bin bin 1607 12047 1204673749 1 f none doc/scponly/INSTALL 0444 bin bin 6304 37076 1204672127 1 f none doc/scponly/README 0444 bin bin 4047 41370 1204672127 1 f none doc/scponly/SECURITY 0444 bin bin 2778 45861 1204672127 1 f none doc/scponly/TODO 0444 bin bin 89 7427 1204672127 1 d none etc 0555 bin bin 1 d none etc/scponly 0555 bin bin 1 f none etc/scponly/debuglevel 0644 bin bin 2 60 1204676167 1 f none etc/scponly/scponly.binaries 0644 bin bin 216 19197 1204654633 1 f none etc/scponly/scponly.defaults 0644 bin bin 95 8920 1204663208 1 d none man 0555 bin bin 1 d none man/man8 0555 bin bin 1 f none man/man8/scponly.8 0644 bin bin 5122 48930 1204651356 1 i pkginfo 267 22695 1204684119 1 i postinstall 505 44008 1204684076 1 i postremove 426 35802 1204684076 1 d none sbin 0555 bin bin 1 f none sbin/scponlyc 4555 root root 65860 42826 1204651357 0707010000640e000041ed00000000000000000000000247ce055700000000000000200000001b00000000000000000000000800000000install0707010000641b0000816d00000000000000000000000147ce052c000001f9000000200000001b00000000000000000000001400000000install/postinstall#!/usr/bin/sh #ESUscponly: scponly postinstall script #Set initial status for exit, changing it on failure ST=0 # Add /usr/local/sbin/scponlyc to /etc/shells if it does not exist /usr/bin/egrep -s "^/usr/local/sbin/scponlyc$" /etc/shells || \ echo "/usr/local/sbin/scponlyc">>/etc/shells || ST=1 # Add /usr/local/bin/scponly to /etc/shells if it does not exist /usr/bin/egrep -s "^/usr/local/bin/scponly$" /etc/shells || \ echo "/usr/local/bin/scponly" >> /etc/shells || ST=1 #Exit status exit $ST 0707010000657c0000816d00000000000000000000000147ce052c000001aa000000200000001b00000000000000000000001300000000install/postremove#!/usr/bin/sh #ESUscponly: scponly postremove script #Set initial status for exit, changing it on failure ST=0 if [ -f /etc/shells ]; then cp /etc/shells /etc/shells.postremove.scponly || ST=1 if [ $ST = 0 ]; then chmod 555 /etc/shells || ST=1 fi if [ $ST = 0 ]; then /usr/bin/egrep -v "^/usr/local/sbin/scponlyc$|^/usr/local/bin/scponly$" /etc/shells.postremove.scponly>/etc/shells fi fi #Exit status exit $ST 07070100006287000041ed00000000000000000000000747ce055700000000000000200000001b00000000000000000000000600000000reloc07070100006288000041ed00000000000000000000000247ce055700000000000000200000001b00000000000000000000000a00000000reloc/bin07070100006289000081ed00000002000000020000000147cd855c00010144000000200000001b00000000000000000000001200000000reloc/bin/scponlyELF44 (44::::P=`=`/usr/lib/ld.so.1kj "$&()-12345678:;>?@ACDEGHIJKNOQRVWX[]^_abcdghi  !#%'*+,./09<=BFLMPSTUYZ\`ef'l ;<<  =PF!;d% <x 2< I'`L PAV;]!` r;xt <`D $Tt <@H@!;$ ( ;(<$;- =,<: ?@.= 5A?<<E:_=g;@H@n;u- {, L F   - ( AJ;<= <  H+ \Ac%H4 t;{A?0?()P $ ;.;@;'<S< O<<$2<0<<; //@H: M@`  @H@H)M@H @H X@( K@b 8@H -@H`"L``"@M @G˒`?@G0@G֒ @G`@! M@`@GА@GِM@G ؐ @G@@K&bp@G @@ @2 w@ݐ@Ð *c$`@Gc(`"ؐ M@G @G  @Ma @Gp0@vMa  @Gf0@l+MaP @G]c(`1@G'T "@GT@Gs X@Gp h@@Go@GmKV @G'@G@Eጚ M@G4ah@GY@{c(`2d@1!M @a@&M @Gak @Аv@!M @a?@G,!K@G9!M!b@F 㿐 L`"&J@F 2  &K ` &+@`& 㿐@G!"` %M@8  `0@F,``$㿐@@Fف㿐`@FѰ `㿐`8 @F `(@`) @F@F  @Fې  @`  ,@@F `ݐ0M@F"@`@FU @F0@Fߒ 㿈b'쀤`4 @  @F 2)```4@Y1@!M bH@ `"`%M@J!x@ ` @[   ``2@\ @2@` M b@F! 0P@'1@!M @b` ``#a#!%``@FV?Ѡ@! M@c` ` ?@ `?"`@@M c0@E "`@ @ M@Eђc㿐b   @E@ "  2  `2 ``" 㿐@Fb @E `@E@Eْ  20@E@Eʁ@Eː!@E`'X#M "XJ`" Xc耢  $J`2  X$``!@E &` &@Eg " '\*X `'\$\^c耢 \'XK@&@Enx@E}!'` *    @E   ,`2,`ܛ, @ @ `b  @  @EP,``&@Eq,,`Y& + ` *`8`  ;`@ + b`2  㿐N@EU N@EP  Mc@D1N#H h @D#H㿐@E @E @E@E/ @D@㿐N@E%`@@D%Nh  # @ @E hN@E`hN  @E  2㿐N@D! <@E -@D# @@D N@Da5 aN @a8a Nah@  @D"h $"@D 0rN a@Db 0@Db#@D a@D[_N a㾈! N@DT!`!'%Nሐ @Z   ` @DZ@D+ሔN b@ 㾐#L`G` a`2  `? `?@ N@D( L`G, @D1a  &@ `G `+`,`G8`&@㿐c@ *c@%'N)N+N@DB0  @@@ "@`@`0  @Cɒ"X`@@b`㿐@C@C`?`?@" @C` `@C   @C@C֔0N@CՐ"@Cv 㿐/CT`@?㿐㿠S㿠/usr/lib/ssh/sftp-server/usr/bin/ls/usr/bin/chmod/usr/bin/chown/usr/bin/chgrp/usr/bin/mkdir/usr/bin/rmdir/usr/bin/scp/usr/bin/ln/usr/bin/mv/usr/bin/rmcd/usr/bin/groups/usr/bin/pwd/usr/bin/echof:l:SoFdfl:prtvBCc:i:P:q1246S:o:F:/usr/local/etc/scponly/debuglevelr%uscponlyopened log at LOG_AUTH, opts 0x%08x//%sSetting homedir to %schrooting to dir: "%s"chdiring to dir: "%s"setting uid to %uscponly completedbad request: %s [%s]entering WinSCP compatibility mode [%s]failed WinSCP compatibility mode [%s]couldn't revert to my real uid. seteuid: %mchdir: %mcouldn't chdir to %s [%s]chroot: %mcouldn't chroot to %s [%s]chroot dir writable by group: %schroot dir writable by other: %schroot dir not owned by root: %scouldnt stat chroot dir: %s with errno %u%s is misconfigured. contact sysadmin.incorrect number of argsroot login denied [%s]%d arguments in total. arg %u is %sscponlycchrooted binary in place, will chroot()echo "WinSCP: this is begin-of-file" ; WinSCP: this is begin-of-file ; echo "WinSCP: this is end-of-file:0"echo "$status"echo "$?"0unset unalias ; echo "WinSCP: this is end-of-file:$status" ; echo "WinSCP: this is end-of-file:$?"command wasn't terminated with %s, %s or %s %s%d WinSCP: this is end-of-file:test -x /usr/lib/sftp-server && exec /usr/lib/sftp-server test -x /usr/local/lib/sftp-server && exec /usr/local/lib/sftp-server exec sftp-serverprocessing request: "%s" echo -n xsftp ; xsftpbogus chdir request: %s (%s)chdir: %s (%s)malloccommand not permitted by scponlydenied request: %s [%s]denied request: %s (resolved to: %s) [%s]running: %s (%s)failed: %s with error %s(%u) (%s)about to exec "%s" (%s)requested command (%s) tried to use disallowed argument (%s))rejected because of invalid chars (%s)winscp3 compat correcting to: "[%s]" --reallocNot using getopt processing on cmd %s (%s)Verifying that %s is an allowed option (%s)%s is not permitted for use with %s (%s))Using getopt processing for cmd %s (%s)getopt processing returned '%c' (%s)an unrecognized option was encountered while processing cmd %s (arg was %s) (%s))option '%c' or a related long option is not permitted for use with %s (arg was %s) (%s)) no ip?!SSH_CLIENTSSH2_CLIENTusername: %s(%d), IP/port: %sabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890 ./-*\_'":?()=invalid characters in scp command! here:%s try using a wildcard to match this file/directory USER%s's uid doesn't match getuid(): %d [%s]determined USER is "%s" from environmentretrieved home directory of "%s" for user "%s"no knowledge of username %s [%s]no knowledge of uid %d [%s]%s=Looking for '%s' in '%s''%s' env entry now reads '%s'%s=%sFound "%s" and setting it to "%s"Unable to set environment var "%s" to "%s"Unable to find "%s" in the environmentmalloc=`>? ???>00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c - - D o"KooL oo:-.. .0.@.P.`.p.......-.?0.p..?0>D < - - - : :=`>>>>???]Jc ?%>0- ?OL j J v>>>>e ? ???7  @G?H?>-\ - />v><?H>Vk'l t;{<< =PF!;d <x < '`L A;!` ;t <`D $Tt <!@H@!&;+$ A( S;(J<$O;V- \=,c<j: ?@= A<<:=; @H@;- , L F    0- =( IAPJU;^<g=Y n< sH+ A%H4 ;A?0?(")P .$ B E? `U yV \ ] ^ ր_ a b "c 7p Py fz ~{ } ~ À ڀ4LgҀ)D\uɀ7RhD_,s37ABـHN ["\9]Q^j_`agǀkހsw y$z>{X|r}€*;_^΀5]ŀހ #;!U&m,-./ǀc߀de f$]gwhƀ)>9O8Ā܂ Ҁ!!"."MX"cZ"z"y"Ђ"$΀&g&&&G&̀' r'#'d((),?&,Y//8/߀/0000R0l:01r1Ȁ1292Y23G@3_3V34*m4C4Y4o434ƀ85c554&5p5555΂5؂56Q6Z6$7;$7G@7S@DDD(D4D<DPD`DlD DDDD'D.D2D2D6 D7D8D7 D8(DC(D:@D*XD<XD>tD?D@DADFDGDJDQDVD[DDDD0DDDdDDDDDD%DDDD<DDDTD\DlDDD]DXDSDID)D$,DHD `DpDDDDD7h@7h7@ 7@273hD7@273h\7@ `(8$(8$ 8 @ D DDD D(D0D<DD81@D8F$L8G$"8e@!D"D*D(D*D)D+D=$D@`DAlDOxDPDFDMDKDLDLD.D-D.D/D1D2 D4D60DQ48v@'8@(8@)48$<8$TDDTDYD[ DYD[D[De DiPDgTDiXDldDmpDltDmxDoDsDzD{DuDqD}D~8ȀU8@V8@W8$8$$9 @DDDD D(D0D4DDDLDPDTDXD\D`DtDDDDDDDDDD D@De@DfDDeHDfPDTD\DlDDDDDDjDDDDDDDDDD $DY8D`HDbPDddD[xD\D^D(D(D+D.D2D3$D40D5<D9DD:LD;TDB\DBdDDlDEDFDKDRDADDDD(DHDPDXD`DdDhDk9@9%@93@9I@9\@9pX9@9@9@@9@T9؀-T\9$9 9 : : :? :N :_ : : : X: ; ;Id1 dd%<4^xH$S}c}0U~%+BcӀi"<A:[JmRWŀڀ$k! % ( E6 Z< p= D H I ʀJ O X Y *h Bi [q vw x } ʀ  ! > Z w π )> B? ]U vV \ ] ^ Ӏ_ a b c 4p My cz {{ } ~  ׀ 1Idπ&AYrƀ4OeA\,p37ABրHN[\6]N^g_`agĀkۀswy!z;{U|o}'8\[ˀ2Z€ۀ  8!R&j,-./Āc܀de f!ZgthÀ)>6|O5|ق π!!"."JX"`Z"w"y"͂"$ˀ&d&&&&Ƃ&߂&'Ӏ(:(P(f(3(8(c) )+&)g)})))**#*b$++ +!++$2+@1+@1 D2+$+$8,@7,)@7D8D;D@DA(DF@DH\DI`D<hDBhDDhDBlDCpDD|DJ|,9$,:$Q <,O@PDQDSDW DSDVDWDTDWDY(D[@DZXD^p,[@R,j@S,v@Tp,$x,$a ,@`DaDbDc ,$,$g ,@fDgDiDj,@h,,$4,$n!,@mDnDuDuDwDy0D{4D}@D~LD\DtDxDDDDDDDDDDDD-@o-@p-@q--@r-=@s-H@s-V$-W$!-s@DDDD DDDDD D0DDDTDtD|DDDD D DDDD@DDDPDTDdDhDlDpDtDxD|DDDDD0DXD X-~@-@-@-@-X-$`-$$T-@DDDD DD(D<D HDPDlD!l-@l.$t.$$$."@#D$D%D$D& D'D' D)(D+8D0TD-dD.lD3x.3@%.>@&x.T$.U$6%H.n@5D6D<D?D>DAD? DA(D>,DA0DC8DYTD_lD`|DbDeDcDeDeDgDgDiDiDEDGDHDGDHDGDHDKDP DRDkDl Dl$.@;.;`.;X.;\.@;.@<.@<,.$4.$s&|/@qDsDtDDtD}DD} D$D4DLDDDDDD/!@t/0u/9@v/F@v/S@v/\$/]$'`/k@/x@ DDDDD D$D0D4D8DD/@ D/$L/$'DDDDD$D0D4D\/(?H/&7/@d/$l/$(0 @0@DDDDD0DHDTD`0%$h0&$(09@DDD D$D(D,DLDTDhDxD0I@0V$0W$)DDDDD0DHDtDtD|DD DDDDD DH0j@0@H0$P0$*X0@0@DDDD$D(D(D@DTD"lD$DDDD D%0@0Ѐ0$0$'+$1@' 1 @' D'D,D' D,D.D/$D10D3LD5lD9D6D7D6D:1&)@G1&*11$12$<+D<D?DBDB DD,DE@DEDDFLDGXDLpDHDJ1R@>1a@?1q$1r$,1@1@DDDDD$D$DHDPDXD\DlD|DDDDDD1@1@1@PX1@d1$1d-T.interp.hash.dynsym.dynstr.SUNW_version.rela.got.rela.bss.rela.plt.text.init.fini.rodata.dynamic.data.ctors.dtors.eh_frame.jcr.data.rel.local.symtab.strtab.comment.stab.shstrtab.stabstrscponly.c/src/scponly-4.8/scponly.cgcc2_compiled.int:t(0,1)=r(0,1);-2147483648;2147483647;char:t(0,2)=r(0,2);0;127;long int:t(0,3)=r(0,3);-2147483648;2147483647;unsigned int:t(0,4)=r(0,4);000000000000000000000000;000000000000037777777777;long unsigned int:t(0,5)=r(0,5);000000000000000000000000;000000000000037777777777;long long int:t(0,6)=@s64;r(0,6);001000000000000000000000;000777777777777777777777;long long unsigned int:t(0,7)=@s64;r(0,7);000000000000000000000000;001777777777777777777777;short int:t(0,8)=@s16;r(0,8);-32768;32767;short unsigned int:t(0,9)=@s16;r(0,9);0;65535;signed char:t(0,10)=@s8;r(0,10);-128;127;unsigned char:t(0,11)=@s8;r(0,11);0;255;__int128_t:t(0,12)=@s128;r(0,12);000000000000000000000000;0377777777777777777777777777777777;__uint128_t:t(0,13)=@s128;r(0,13);000000000000000000000000;0377777777777777777777777777777777;float:t(0,14)=r(0,1);4;0;double:t(0,15)=r(0,1);8;0;long double:t(0,16)=r(0,1);16;0;complex int:t(0,17)=s8real:(0,1),0,32;imag:(0,1),32,32;;complex float:t(0,18)=R3;8;0;complex double:t(0,19)=R4;16;0;complex long double:t(0,20)=R5;32;0;__builtin_va_list:t(0,21)=*(0,22)=(0,22)_Bool:t(0,23)=@s8;-16;scponly.c/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdio.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdarg.h__gnuc_va_list:t(3,1)=(0,21)/usr/include/sys/feature_tests.h/usr/include/sys/ccompile.h/usr/include/sys/isa_defs.h/usr/include/iso/stdio_iso.h/usr/include/sys/va_list.h__va_list:t(8,1)=(0,21)/usr/include/stdio_tag.h__FILE:t(9,1)=(9,2)=xs__FILE:/usr/include/stdio_impl.h__FILE:T(9,2)=s16_cnt:(0,1),0,32;_ptr:(10,1)=*(0,11),32,32;_base:(10,1),64,32;_flag:(0,11),96,8;_file:(0,11),104,8;__orientation:(0,4),112,2;__ionolock:(0,4),114,1;__seekable:(0,4),115,1;__extendedfd:(0,4),116,1;__xf_nocheck:(0,4),117,1;__filler:(0,4),118,10;;__longlong_t:t(7,1)=(0,6)FILE:t(7,2)=(9,1)size_t:t(7,3)=(0,4)fpos_t:t(7,4)=(0,3)/usr/include/iso/stdio_c99.hoff_t:t(2,1)=(0,3)off64_t:t(2,2)=(7,1)fpos64_t:t(2,3)=(7,1)/usr/include/string.h/usr/include/iso/string_iso.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.h/usr/include/sys/machtypes.h_label_t:T(15,1)=s8val:(15,2)=ar(15,3)=r(15,3);000000000000000000000000;000000000000037777777777;;0;1;(0,3),0,64;;label_t:t(15,4)=(15,1)lock_t:t(15,5)=(0,11)/usr/include/sys/int_types.hint8_t:t(16,1)=(0,2)int16_t:t(16,2)=(0,8)int32_t:t(16,3)=(0,1)int64_t:t(16,4)=(0,6)uint8_t:t(16,5)=(0,11)uint16_t:t(16,6)=(0,9)uint32_t:t(16,7)=(0,4)uint64_t:t(16,8)=(0,7)intmax_t:t(16,9)=(16,4)uintmax_t:t(16,10)=(16,8)intptr_t:t(16,11)=(0,1)uintptr_t:t(16,12)=(0,4)int_fast8_t:t(16,13)=(0,2)int_fast16_t:t(16,14)=(0,1)int_fast32_t:t(16,15)=(0,1)int_fast64_t:t(16,16)=(0,6)uint_fast8_t:t(16,17)=(0,11)uint_fast16_t:t(16,18)=(0,4)uint_fast32_t:t(16,19)=(0,4)uint_fast64_t:t(16,20)=(0,7)int_least8_t:t(16,21)=(0,2)int_least16_t:t(16,22)=(0,8)int_least32_t:t(16,23)=(0,1)int_least64_t:t(16,24)=(0,6)uint_least8_t:t(16,25)=(0,11)uint_least16_t:t(16,26)=(0,9)uint_least32_t:t(16,27)=(0,4)uint_least64_t:t(16,28)=(0,7)longlong_t:t(14,1)=(0,6)u_longlong_t:t(14,2)=(0,7)t_scalar_t:t(14,3)=(0,3)t_uscalar_t:t(14,4)=(0,5)uchar_t:t(14,5)=(0,11)ushort_t:t(14,6)=(0,9)uint_t:t(14,7)=(0,4)ulong_t:t(14,8)=(0,5)caddr_t:t(14,9)=(14,10)=*(0,2)daddr_t:t(14,11)=(0,3)cnt_t:t(14,12)=(0,8)ptrdiff_t:t(14,13)=(0,1)pfn_t:t(14,14)=(14,8)pgcnt_t:t(14,15)=(14,8)spgcnt_t:t(14,16)=(0,3)use_t:t(14,17)=(14,5)sysid_t:t(14,18)=(0,8)index_t:t(14,19)=(0,8)timeout_id_t:t(14,20)=(14,21)=*(0,22)bufcall_id_t:t(14,22)=(14,21)ino_t:t(14,23)=(14,8)blkcnt_t:t(14,24)=(0,3)fsblkcnt_t:t(14,25)=(14,8)fsfilcnt_t:t(14,26)=(14,8)ino64_t:t(14,27)=(14,2)blkcnt64_t:t(14,28)=(14,1)fsblkcnt64_t:t(14,29)=(14,2)fsfilcnt64_t:t(14,30)=(14,2)blksize_t:t(14,31)=(0,3) :T(14,32)=eB_FALSE:0,B_TRUE:1,;boolean_t:t(14,33)=(14,32)pad64_t:t(14,34)=(16,4)upad64_t:t(14,35)=(16,8)pad128_t:t(14,36)=(14,37)=u16_q:(0,16),0,128;_l:(14,38)=ar(15,3);0;3;(16,3),0,128;;upad128_t:t(14,39)=(14,40)=u16_q:(0,16),0,128;_l:(14,41)=ar(15,3);0;3;(16,7),0,128;;offset_t:t(14,42)=(14,1)u_offset_t:t(14,43)=(14,2)len_t:t(14,44)=(14,2)diskaddr_t:t(14,45)=(14,2)lloff_t:t(14,46)=(14,47)=u8_f:(14,42),0,64;_p:(14,48)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;lldaddr_t:t(14,49)=(14,50)=u8_f:(14,1),0,64;_p:(14,51)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;k_fltset_t:t(14,52)=(14,7)id_t:t(14,53)=(0,3)useconds_t:t(14,54)=(14,7)suseconds_t:t(14,55)=(0,3)major_t:t(14,56)=(14,8)minor_t:t(14,57)=(14,8)pri_t:t(14,58)=(0,8)cpu_flag_t:t(14,59)=(14,6)o_mode_t:t(14,60)=(14,6)o_dev_t:t(14,61)=(0,8)o_uid_t:t(14,62)=(14,6)o_gid_t:t(14,63)=(14,62)o_nlink_t:t(14,64)=(0,8)o_pid_t:t(14,65)=(0,8)o_ino_t:t(14,66)=(14,6)key_t:t(14,67)=(0,1)mode_t:t(14,68)=(14,8)uid_t:t(14,69)=(0,3)gid_t:t(14,70)=(14,69)taskid_t:t(14,71)=(14,53)projid_t:t(14,72)=(14,53)poolid_t:t(14,73)=(14,53)zoneid_t:t(14,74)=(14,53)ctid_t:t(14,75)=(14,53)pthread_t:t(14,76)=(14,7)pthread_key_t:t(14,77)=(14,7)_pthread_mutex:T(14,78)=s24__pthread_mutex_flags:(14,79)=s8__pthread_mutex_flag1:(16,6),0,16;__pthread_mutex_flag2:(16,5),16,8;__pthread_mutex_ceiling:(16,5),24,8;__pthread_mutex_type:(16,6),32,16;__pthread_mutex_magic:(16,6),48,16;;,0,64;__pthread_mutex_lock:(14,80)=u8__pthread_mutex_lock64:(14,81)=s8__pthread_mutex_pad:(14,82)=ar(15,3);0;7;(16,5),0,64;;,0,64;__pthread_mutex_lock32:(14,83)=s8__pthread_ownerpid:(16,7),0,32;__pthread_lockword:(16,7),32,32;;,0,64;__pthread_mutex_owner64:(14,35),0,64;;,64,64;__pthread_mutex_data:(14,35),128,64;;pthread_mutex_t:t(14,84)=(14,78)_pthread_cond:T(14,85)=s16__pthread_cond_flags:(14,86)=s8__pthread_cond_flag:(14,87)=ar(15,3);0;3;(16,5),0,32;__pthread_cond_type:(16,6),32,16;__pthread_cond_magic:(16,6),48,16;;,0,64;__pthread_cond_data:(14,35),64,64;;pthread_cond_t:t(14,88)=(14,85)_pthread_rwlock:T(14,89)=s64__pthread_rwlock_readers:(16,3),0,32;__pthread_rwlock_type:(16,6),32,16;__pthread_rwlock_magic:(16,6),48,16;__pthread_rwlock_mutex:(14,84),64,192;__pthread_rwlock_readercv:(14,88),256,128;__pthread_rwlock_writercv:(14,88),384,128;;pthread_rwlock_t:t(14,90)=(14,89)pthread_barrier_t:t(14,91)=(14,92)=s64__pthread_barrier_count:(16,7),0,32;__pthread_barrier_current:(16,7),32,32;__pthread_barrier_cycle:(14,35),64,64;__pthread_barrier_reserved:(14,35),128,64;__pthread_barrier_lock:(14,84),192,192;__pthread_barrier_cond:(14,88),384,128;;pthread_spinlock_t:t(14,93)=(14,84)_pthread_attr:T(14,94)=s4__pthread_attrp:(14,21),0,32;;pthread_attr_t:t(14,95)=(14,94)_pthread_mutexattr:T(14,96)=s4__pthread_mutexattrp:(14,21),0,32;;pthread_mutexattr_t:t(14,97)=(14,96)_pthread_condattr:T(14,98)=s4__pthread_condattrp:(14,21),0,32;;pthread_condattr_t:t(14,99)=(14,98)_once:T(14,100)=s32__pthread_once_pad:(14,101)=ar(15,3);0;3;(14,35),0,256;;pthread_once_t:t(14,102)=(14,100)_pthread_rwlockattr:T(14,103)=s4__pthread_rwlockattrp:(14,21),0,32;;pthread_rwlockattr_t:t(14,104)=(14,103)pthread_barrierattr_t:t(14,105)=(14,106)=s4__pthread_barrierattrp:(14,21),0,32;;dev_t:t(14,107)=(14,8)nlink_t:t(14,108)=(14,8)pid_t:t(14,109)=(0,3)ssize_t:t(14,110)=(0,1)time_t:t(14,111)=(0,3)clock_t:t(14,112)=(0,3)clockid_t:t(14,113)=(0,1)timer_t:t(14,114)=(0,1)unchar:t(14,115)=(0,11)ushort:t(14,116)=(0,9)uint:t(14,117)=(0,4)ulong:t(14,118)=(0,5)u_char:t(14,119)=(0,11)u_short:t(14,120)=(0,9)u_int:t(14,121)=(0,4)u_long:t(14,122)=(0,5)_quad:T(14,123)=s8val:(14,124)=ar(15,3);0;1;(0,1),0,64;;quad_t:t(14,125)=(14,123)quad:t(14,126)=(14,125)/usr/include/sys/select.h/usr/include/sys/time_impl.htimespec:T(18,1)=s8tv_sec:(14,111),0,32;tv_nsec:(0,3),32,32;;timespec_t:t(18,2)=(18,1)timestruc_t:t(18,3)=(18,1)itimerspec:T(18,4)=s16it_interval:(18,1),0,64;it_value:(18,1),64,64;;itimerspec_t:t(18,5)=(18,4)/usr/include/sys/time.htimeval:T(19,1)=s8tv_sec:(14,111),0,32;tv_usec:(14,55),32,32;;timezone:T(19,2)=s8tz_minuteswest:(0,1),0,32;tz_dsttime:(0,1),32,32;;/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.hitimerval:T(19,3)=s16it_interval:(19,1),0,64;it_value:(19,1),64,64;;hrtime_t:t(19,4)=(14,1)/usr/include/time.h/usr/include/iso/time_iso.htm:T(22,1)=s36tm_sec:(0,1),0,32;tm_min:(0,1),32,32;tm_hour:(0,1),64,32;tm_mday:(0,1),96,32;tm_mon:(0,1),128,32;tm_year:(0,1),160,32;tm_wday:(0,1),192,32;tm_yday:(0,1),224,32;tm_isdst:(0,1),256,32;;sigval:T(21,1)=u4sival_int:(0,1),0,32;sival_ptr:(14,21),0,32;;sigevent:T(21,2)=s24sigev_notify:(0,1),0,32;sigev_signo:(0,1),32,32;sigev_value:(21,1),64,32;sigev_notify_function:(21,3)=*(21,4)=f(0,22),96,32;sigev_notify_attributes:(21,5)=*(14,95),128,32;__sigev_pad2:(0,1),160,32;;/usr/include/sys/select.hsigset_t:t(17,1)=(17,2)=s16__sigbits:(17,3)=ar(15,3);0;3;(0,4),0,128;;fd_mask:t(17,4)=(0,3)fds_mask:t(17,5)=(0,3)fd_set:T(17,6)=s128fds_bits:(17,7)=ar(15,3);0;31;(0,3),0,1024;;fd_set:t(17,8)=(17,6)/usr/include/sys/stat.hstat:T(24,1)=s136st_dev:(14,107),0,32;st_pad1:(24,2)=ar(15,3);0;2;(0,3),32,96;st_ino:(14,23),128,32;st_mode:(14,68),160,32;st_nlink:(14,108),192,32;st_uid:(14,69),224,32;st_gid:(14,70),256,32;st_rdev:(14,107),288,32;st_pad2:(15,2),320,64;st_size:(2,1),384,32;st_pad3:(0,3),416,32;st_atim:(18,3),448,64;st_mtim:(18,3),512,64;st_ctim:(18,3),576,64;st_blksize:(14,31),640,32;st_blocks:(14,24),672,32;st_fstype:(24,3)=ar(15,3);0;15;(0,2),704,128;st_pad4:(24,4)=ar(15,3);0;7;(0,3),832,256;;stat64:T(24,5)=s152st_dev:(14,107),0,32;st_pad1:(24,2),32,96;st_ino:(14,27),128,64;st_mode:(14,68),192,32;st_nlink:(14,108),224,32;st_uid:(14,69),256,32;st_gid:(14,70),288,32;st_rdev:(14,107),320,32;st_pad2:(15,2),352,64;st_size:(2,2),448,64;st_atim:(18,3),512,64;st_mtim:(18,3),576,64;st_ctim:(18,3),640,64;st_blksize:(14,31),704,32;st_blocks:(14,28),768,64;st_fstype:(24,3),832,128;st_pad4:(24,4),960,256;;/usr/include/sys/stat_impl.h/usr/include/sys/wait.h/usr/include/sys/resource.hrlim_t:t(27,1)=(0,5)rlimit:T(27,2)=s8rlim_cur:(27,1),0,32;rlim_max:(27,1),32,32;;rlim64_t:t(27,3)=(14,2)rlimit64:T(27,4)=s16rlim_cur:(27,3),0,64;rlim_max:(27,3),64,64;;rusage:T(27,5)=s72ru_utime:(19,1),0,64;ru_stime:(19,1),64,64;ru_maxrss:(0,3),128,32;ru_ixrss:(0,3),160,32;ru_idrss:(0,3),192,32;ru_isrss:(0,3),224,32;ru_minflt:(0,3),256,32;ru_majflt:(0,3),288,32;ru_nswap:(0,3),320,32;ru_inblock:(0,3),352,32;ru_oublock:(0,3),384,32;ru_msgsnd:(0,3),416,32;ru_msgrcv:(0,3),448,32;ru_nsignals:(0,3),480,32;ru_nvcsw:(0,3),512,32;ru_nivcsw:(0,3),544,32;;/usr/include/sys/siginfo.h/usr/include/sys/machsig.hsiginfo:T(28,1)=s128si_signo:(0,1),0,32;si_code:(0,1),32,32;si_errno:(0,1),64,32;__data:(28,2)=u116__pad:(28,3)=ar(15,3);0;28;(0,1),0,928;__proc:(28,4)=s24__pid:(14,109),0,32;__pdata:(28,5)=u12__kill:(28,6)=s8__uid:(14,69),0,32;__value:(21,1),32,32;;,0,64;__cld:(28,7)=s12__utime:(14,112),0,32;__status:(0,1),32,32;__stime:(14,112),64,32;;,0,96;;,32,96;__ctid:(14,75),128,32;__zoneid:(14,74),160,32;;,0,192;__fault:(28,8)=s12__addr:(14,21),0,32;__trapno:(0,1),32,32;__pc:(14,9),64,32;;,0,96;__file:(28,9)=s8__fd:(0,1),0,32;__band:(0,3),32,32;;,0,64;__prof:(28,10)=s88__faddr:(14,9),0,32;__tstamp:(18,3),32,64;__syscall:(0,8),96,16;__nsysarg:(0,2),112,8;__fault:(0,2),120,8;__sysarg:(24,4),128,256;__mstate:(28,11)=ar(15,3);0;9;(0,1),384,320;;,0,704;__rctl:(28,12)=s4__entity:(16,3),0,32;;,0,32;;,96,928;;siginfo_t:t(28,13)=(28,1)k_siginfo:T(28,14)=s36si_signo:(0,1),0,32;si_code:(0,1),32,32;si_errno:(0,1),64,32;__data:(28,15)=u24__proc:(28,16)=s24__pid:(14,109),0,32;__pdata:(28,17)=u12__kill:(28,18)=s8__uid:(14,69),0,32;__value:(21,1),32,32;;,0,64;__cld:(28,19)=s12__utime:(14,112),0,32;__status:(0,1),32,32;__stime:(14,112),64,32;;,0,96;;,32,96;__ctid:(14,75),128,32;__zoneid:(14,74),160,32;;,0,192;__fault:(28,20)=s12__addr:(14,21),0,32;__trapno:(0,1),32,32;__pc:(14,9),64,32;;,0,96;__file:(28,21)=s8__fd:(0,1),0,32;__band:(0,3),32,32;;,0,64;__prof:(28,22)=s16__faddr:(14,9),0,32;__tstamp:(18,3),32,64;__syscall:(0,8),96,16;__nsysarg:(0,2),112,8;__fault:(0,2),120,8;;,0,128;__rctl:(28,23)=s4__entity:(16,3),0,32;;,0,32;;,96,192;;k_siginfo_t:t(28,24)=(28,14)sigqueue:T(28,25)=s52sq_next:(28,26)=*(28,25),0,32;sq_info:(28,24),32,288;sq_func:(28,27)=*(28,28)=f(0,22),320,32;sq_backptr:(14,21),352,32;sq_external:(0,1),384,32;;sigqueue_t:t(28,29)=(28,25)/usr/include/sys/procset.h/usr/include/sys/signal.h/usr/include/sys/iso/signal_iso.h/usr/include/sys/unistd.hk_sigset_t:t(31,1)=(31,2)=s8__sigbits:(31,3)=ar(15,3);0;1;(0,4),0,64;;sigaction:T(31,4)=s32sa_flags:(0,1),0,32;_funcptr:(31,5)=u4_handler:(31,6)=*(31,7)=f(0,22),0,32;_sigaction:(31,8)=*(31,9)=f(0,22),0,32;;,32,32;sa_mask:(17,1),64,128;sa_resv:(14,124),192,64;;sigaltstack:T(31,10)=s12ss_sp:(14,21),0,32;ss_size:(7,3),32,32;ss_flags:(0,1),64,32;;stack_t:t(31,11)=(31,10)signotify_id:T(31,12)=s12sn_pid:(14,109),0,32;sn_index:(0,1),32,32;sn_pad:(0,1),64,32;;signotify_id_t:t(31,13)=(31,12)sigstack:T(31,14)=s8ss_sp:(14,21),0,32;ss_onstack:(0,1),32,32;;idtype:T(30,1)=eP_PID:0,P_PPID:1,P_PGID:2,P_SID:3,P_CID:4,P_UID:5,P_GID:6,P_ALL:7,P_LWPID:8,P_TASKID:9,P_PROJID:10,P_POOLID:11,P_ZONEID:12,P_CTID:13,P_CPUID:14,P_PSETID:15,;idtype_t:t(30,2)=(30,1)idop:T(30,3)=ePOP_DIFF:0,POP_AND:1,POP_OR:2,POP_XOR:3,;idop_t:t(30,4)=(30,3)procset:T(30,5)=s20p_op:(30,4),0,32;p_lidtype:(30,2),32,32;p_lid:(14,53),64,32;p_ridtype:(30,2),96,32;p_rid:(14,53),128,32;;procset_t:t(30,6)=(30,5)/usr/include/unistd.h/usr/include/stdlib.h/usr/include/iso/stdlib_iso.hdiv_t:t(36,1)=(36,2)=s8quot:(0,1),0,32;rem:(0,1),32,32;;ldiv_t:t(36,3)=(36,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;wchar_t:t(36,5)=(0,3)/usr/include/iso/stdlib_c99.hlldiv_t:t(37,1)=(37,2)=s16quot:(0,6),0,64;rem:(0,6),64,64;;/usr/include/errno.h/usr/include/sys/errno.h/usr/include/syslog.h/usr/include/sys/syslog.hscponly.h/usr/include/getopt.hoption:T(43,1)=s16name:(14,10),0,32;has_arg:(0,1),32,32;flag:(43,2)=*(0,1),64,32;val:(0,1),96,32;;config.hcmd_t:t(42,1)=(42,2)=s8name:(14,10),0,32;argflag:(0,1),32,32;;cmd_arg_t:t(42,3)=(42,4)=s24name:(14,10),0,32;getoptflag:(0,1),32,32;strict:(0,1),64,32;badarg:(14,10),96,32;opts:(14,10),128,32;longopts:(42,5)=*(43,1),160,32;;main:F(0,1)argc:P(0,1)argv:P(1,1)=*(14,10)debugfile:r(1,2)=*(7,2)homedirstat:(24,1)i:r(0,1)root_dir:r(14,10)chdir_path:(1,3)=ar(15,3);0;1023;(0,2)root_dir:r(14,10)chdir_path:(1,3)i:r(0,1)winscp_transit_request:F(0,1)request:P(14,10)new_request:r(14,10)winscp_regular_request:F(0,1)request:P(14,10)new_request:r(14,10)retval:r(0,1)retzero:r(0,1)process_winscp_requests:F(0,1)linebuf:(1,3)count:r(0,1)ack:r(0,1)process_ssh_request:F(0,1)request:P(14,10)av:r(1,1)tmp_av:r(1,1)flat_request:r(14,10)tmpstring:r(14,10)tmprequest:r(14,10)bad_winscp3str:(1,4)=ar(15,3);0;144;(0,2)retval:r(0,1)reqlen:r(0,1)destdir:r(14,10)destdir:r(14,10)status:(0,1)debuglevel:G(0,1)winscp_mode:G(0,1)chrooted:G(0,1)username:G(1,5)=ar(15,3);0;31;(0,2)homedir:G(1,3)chrootdir:G(1,3)safeenv:G(1,6)=ar(15,3);0;49;(14,10)debug:G(1,7)=*(1,8)=f(0,22)commands:G(1,9)=ar(15,3);0;15;(42,1)empty_longopts:G(1,10)=ar(15,3);0;0;(43,1)dangerous_args:G(1,11)=ar(15,3);0;2;(42,3)allowed_env_vars:G(1,12)=ar(15,3);0;0;(14,10)helper.c/src/scponly-4.8/helper.cgcc2_compiled.int:t(0,1)=r(0,1);-2147483648;2147483647;char:t(0,2)=r(0,2);0;127;long int:t(0,3)=r(0,3);-2147483648;2147483647;unsigned int:t(0,4)=r(0,4);000000000000000000000000;000000000000037777777777;long unsigned int:t(0,5)=r(0,5);000000000000000000000000;000000000000037777777777;long long int:t(0,6)=@s64;r(0,6);001000000000000000000000;000777777777777777777777;long long unsigned int:t(0,7)=@s64;r(0,7);000000000000000000000000;001777777777777777777777;short int:t(0,8)=@s16;r(0,8);-32768;32767;short unsigned int:t(0,9)=@s16;r(0,9);0;65535;signed char:t(0,10)=@s8;r(0,10);-128;127;unsigned char:t(0,11)=@s8;r(0,11);0;255;__int128_t:t(0,12)=@s128;r(0,12);000000000000000000000000;0377777777777777777777777777777777;__uint128_t:t(0,13)=@s128;r(0,13);000000000000000000000000;0377777777777777777777777777777777;float:t(0,14)=r(0,1);4;0;double:t(0,15)=r(0,1);8;0;long double:t(0,16)=r(0,1);16;0;complex int:t(0,17)=s8real:(0,1),0,32;imag:(0,1),32,32;;complex float:t(0,18)=R3;8;0;complex double:t(0,19)=R4;16;0;complex long double:t(0,20)=R5;32;0;__builtin_va_list:t(0,21)=*(0,22)=(0,22)_Bool:t(0,23)=@s8;-16;helper.c/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdio.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdarg.h__gnuc_va_list:t(3,1)=(0,21)/usr/include/sys/feature_tests.h/usr/include/sys/ccompile.h/usr/include/sys/isa_defs.h/usr/include/iso/stdio_iso.h/usr/include/sys/va_list.h__va_list:t(8,1)=(0,21)/usr/include/stdio_tag.h__FILE:t(9,1)=(9,2)=xs__FILE:/usr/include/stdio_impl.h__FILE:T(9,2)=s16_cnt:(0,1),0,32;_ptr:(10,1)=*(0,11),32,32;_base:(10,1),64,32;_flag:(0,11),96,8;_file:(0,11),104,8;__orientation:(0,4),112,2;__ionolock:(0,4),114,1;__seekable:(0,4),115,1;__extendedfd:(0,4),116,1;__xf_nocheck:(0,4),117,1;__filler:(0,4),118,10;;__longlong_t:t(7,1)=(0,6)FILE:t(7,2)=(9,1)size_t:t(7,3)=(0,4)fpos_t:t(7,4)=(0,3)/usr/include/iso/stdio_c99.hoff_t:t(2,1)=(0,3)off64_t:t(2,2)=(7,1)fpos64_t:t(2,3)=(7,1)/usr/include/string.h/usr/include/iso/string_iso.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.h/usr/include/sys/machtypes.h_label_t:T(15,1)=s8val:(15,2)=ar(15,3)=r(15,3);000000000000000000000000;000000000000037777777777;;0;1;(0,3),0,64;;label_t:t(15,4)=(15,1)lock_t:t(15,5)=(0,11)/usr/include/sys/int_types.hint8_t:t(16,1)=(0,2)int16_t:t(16,2)=(0,8)int32_t:t(16,3)=(0,1)int64_t:t(16,4)=(0,6)uint8_t:t(16,5)=(0,11)uint16_t:t(16,6)=(0,9)uint32_t:t(16,7)=(0,4)uint64_t:t(16,8)=(0,7)intmax_t:t(16,9)=(16,4)uintmax_t:t(16,10)=(16,8)intptr_t:t(16,11)=(0,1)uintptr_t:t(16,12)=(0,4)int_fast8_t:t(16,13)=(0,2)int_fast16_t:t(16,14)=(0,1)int_fast32_t:t(16,15)=(0,1)int_fast64_t:t(16,16)=(0,6)uint_fast8_t:t(16,17)=(0,11)uint_fast16_t:t(16,18)=(0,4)uint_fast32_t:t(16,19)=(0,4)uint_fast64_t:t(16,20)=(0,7)int_least8_t:t(16,21)=(0,2)int_least16_t:t(16,22)=(0,8)int_least32_t:t(16,23)=(0,1)int_least64_t:t(16,24)=(0,6)uint_least8_t:t(16,25)=(0,11)uint_least16_t:t(16,26)=(0,9)uint_least32_t:t(16,27)=(0,4)uint_least64_t:t(16,28)=(0,7)longlong_t:t(14,1)=(0,6)u_longlong_t:t(14,2)=(0,7)t_scalar_t:t(14,3)=(0,3)t_uscalar_t:t(14,4)=(0,5)uchar_t:t(14,5)=(0,11)ushort_t:t(14,6)=(0,9)uint_t:t(14,7)=(0,4)ulong_t:t(14,8)=(0,5)caddr_t:t(14,9)=(14,10)=*(0,2)daddr_t:t(14,11)=(0,3)cnt_t:t(14,12)=(0,8)ptrdiff_t:t(14,13)=(0,1)pfn_t:t(14,14)=(14,8)pgcnt_t:t(14,15)=(14,8)spgcnt_t:t(14,16)=(0,3)use_t:t(14,17)=(14,5)sysid_t:t(14,18)=(0,8)index_t:t(14,19)=(0,8)timeout_id_t:t(14,20)=(14,21)=*(0,22)bufcall_id_t:t(14,22)=(14,21)ino_t:t(14,23)=(14,8)blkcnt_t:t(14,24)=(0,3)fsblkcnt_t:t(14,25)=(14,8)fsfilcnt_t:t(14,26)=(14,8)ino64_t:t(14,27)=(14,2)blkcnt64_t:t(14,28)=(14,1)fsblkcnt64_t:t(14,29)=(14,2)fsfilcnt64_t:t(14,30)=(14,2)blksize_t:t(14,31)=(0,3) :T(14,32)=eB_FALSE:0,B_TRUE:1,;boolean_t:t(14,33)=(14,32)pad64_t:t(14,34)=(16,4)upad64_t:t(14,35)=(16,8)pad128_t:t(14,36)=(14,37)=u16_q:(0,16),0,128;_l:(14,38)=ar(15,3);0;3;(16,3),0,128;;upad128_t:t(14,39)=(14,40)=u16_q:(0,16),0,128;_l:(14,41)=ar(15,3);0;3;(16,7),0,128;;offset_t:t(14,42)=(14,1)u_offset_t:t(14,43)=(14,2)len_t:t(14,44)=(14,2)diskaddr_t:t(14,45)=(14,2)lloff_t:t(14,46)=(14,47)=u8_f:(14,42),0,64;_p:(14,48)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;lldaddr_t:t(14,49)=(14,50)=u8_f:(14,1),0,64;_p:(14,51)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;k_fltset_t:t(14,52)=(14,7)id_t:t(14,53)=(0,3)useconds_t:t(14,54)=(14,7)suseconds_t:t(14,55)=(0,3)major_t:t(14,56)=(14,8)minor_t:t(14,57)=(14,8)pri_t:t(14,58)=(0,8)cpu_flag_t:t(14,59)=(14,6)o_mode_t:t(14,60)=(14,6)o_dev_t:t(14,61)=(0,8)o_uid_t:t(14,62)=(14,6)o_gid_t:t(14,63)=(14,62)o_nlink_t:t(14,64)=(0,8)o_pid_t:t(14,65)=(0,8)o_ino_t:t(14,66)=(14,6)key_t:t(14,67)=(0,1)mode_t:t(14,68)=(14,8)uid_t:t(14,69)=(0,3)gid_t:t(14,70)=(14,69)taskid_t:t(14,71)=(14,53)projid_t:t(14,72)=(14,53)poolid_t:t(14,73)=(14,53)zoneid_t:t(14,74)=(14,53)ctid_t:t(14,75)=(14,53)pthread_t:t(14,76)=(14,7)pthread_key_t:t(14,77)=(14,7)_pthread_mutex:T(14,78)=s24__pthread_mutex_flags:(14,79)=s8__pthread_mutex_flag1:(16,6),0,16;__pthread_mutex_flag2:(16,5),16,8;__pthread_mutex_ceiling:(16,5),24,8;__pthread_mutex_type:(16,6),32,16;__pthread_mutex_magic:(16,6),48,16;;,0,64;__pthread_mutex_lock:(14,80)=u8__pthread_mutex_lock64:(14,81)=s8__pthread_mutex_pad:(14,82)=ar(15,3);0;7;(16,5),0,64;;,0,64;__pthread_mutex_lock32:(14,83)=s8__pthread_ownerpid:(16,7),0,32;__pthread_lockword:(16,7),32,32;;,0,64;__pthread_mutex_owner64:(14,35),0,64;;,64,64;__pthread_mutex_data:(14,35),128,64;;pthread_mutex_t:t(14,84)=(14,78)_pthread_cond:T(14,85)=s16__pthread_cond_flags:(14,86)=s8__pthread_cond_flag:(14,87)=ar(15,3);0;3;(16,5),0,32;__pthread_cond_type:(16,6),32,16;__pthread_cond_magic:(16,6),48,16;;,0,64;__pthread_cond_data:(14,35),64,64;;pthread_cond_t:t(14,88)=(14,85)_pthread_rwlock:T(14,89)=s64__pthread_rwlock_readers:(16,3),0,32;__pthread_rwlock_type:(16,6),32,16;__pthread_rwlock_magic:(16,6),48,16;__pthread_rwlock_mutex:(14,84),64,192;__pthread_rwlock_readercv:(14,88),256,128;__pthread_rwlock_writercv:(14,88),384,128;;pthread_rwlock_t:t(14,90)=(14,89)pthread_barrier_t:t(14,91)=(14,92)=s64__pthread_barrier_count:(16,7),0,32;__pthread_barrier_current:(16,7),32,32;__pthread_barrier_cycle:(14,35),64,64;__pthread_barrier_reserved:(14,35),128,64;__pthread_barrier_lock:(14,84),192,192;__pthread_barrier_cond:(14,88),384,128;;pthread_spinlock_t:t(14,93)=(14,84)_pthread_attr:T(14,94)=s4__pthread_attrp:(14,21),0,32;;pthread_attr_t:t(14,95)=(14,94)_pthread_mutexattr:T(14,96)=s4__pthread_mutexattrp:(14,21),0,32;;pthread_mutexattr_t:t(14,97)=(14,96)_pthread_condattr:T(14,98)=s4__pthread_condattrp:(14,21),0,32;;pthread_condattr_t:t(14,99)=(14,98)_once:T(14,100)=s32__pthread_once_pad:(14,101)=ar(15,3);0;3;(14,35),0,256;;pthread_once_t:t(14,102)=(14,100)_pthread_rwlockattr:T(14,103)=s4__pthread_rwlockattrp:(14,21),0,32;;pthread_rwlockattr_t:t(14,104)=(14,103)pthread_barrierattr_t:t(14,105)=(14,106)=s4__pthread_barrierattrp:(14,21),0,32;;dev_t:t(14,107)=(14,8)nlink_t:t(14,108)=(14,8)pid_t:t(14,109)=(0,3)ssize_t:t(14,110)=(0,1)time_t:t(14,111)=(0,3)clock_t:t(14,112)=(0,3)clockid_t:t(14,113)=(0,1)timer_t:t(14,114)=(0,1)unchar:t(14,115)=(0,11)ushort:t(14,116)=(0,9)uint:t(14,117)=(0,4)ulong:t(14,118)=(0,5)u_char:t(14,119)=(0,11)u_short:t(14,120)=(0,9)u_int:t(14,121)=(0,4)u_long:t(14,122)=(0,5)_quad:T(14,123)=s8val:(14,124)=ar(15,3);0;1;(0,1),0,64;;quad_t:t(14,125)=(14,123)quad:t(14,126)=(14,125)/usr/include/sys/select.h/usr/include/sys/time_impl.htimespec:T(18,1)=s8tv_sec:(14,111),0,32;tv_nsec:(0,3),32,32;;timespec_t:t(18,2)=(18,1)timestruc_t:t(18,3)=(18,1)itimerspec:T(18,4)=s16it_interval:(18,1),0,64;it_value:(18,1),64,64;;itimerspec_t:t(18,5)=(18,4)/usr/include/sys/time.htimeval:T(19,1)=s8tv_sec:(14,111),0,32;tv_usec:(14,55),32,32;;timezone:T(19,2)=s8tz_minuteswest:(0,1),0,32;tz_dsttime:(0,1),32,32;;/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.hitimerval:T(19,3)=s16it_interval:(19,1),0,64;it_value:(19,1),64,64;;hrtime_t:t(19,4)=(14,1)/usr/include/time.h/usr/include/iso/time_iso.htm:T(22,1)=s36tm_sec:(0,1),0,32;tm_min:(0,1),32,32;tm_hour:(0,1),64,32;tm_mday:(0,1),96,32;tm_mon:(0,1),128,32;tm_year:(0,1),160,32;tm_wday:(0,1),192,32;tm_yday:(0,1),224,32;tm_isdst:(0,1),256,32;;sigval:T(21,1)=u4sival_int:(0,1),0,32;sival_ptr:(14,21),0,32;;sigevent:T(21,2)=s24sigev_notify:(0,1),0,32;sigev_signo:(0,1),32,32;sigev_value:(21,1),64,32;sigev_notify_function:(21,3)=*(21,4)=f(0,22),96,32;sigev_notify_attributes:(21,5)=*(14,95),128,32;__sigev_pad2:(0,1),160,32;;/usr/include/sys/select.hsigset_t:t(17,1)=(17,2)=s16__sigbits:(17,3)=ar(15,3);0;3;(0,4),0,128;;fd_mask:t(17,4)=(0,3)fds_mask:t(17,5)=(0,3)fd_set:T(17,6)=s128fds_bits:(17,7)=ar(15,3);0;31;(0,3),0,1024;;fd_set:t(17,8)=(17,6)/usr/include/sys/stat.hstat:T(24,1)=s136st_dev:(14,107),0,32;st_pad1:(24,2)=ar(15,3);0;2;(0,3),32,96;st_ino:(14,23),128,32;st_mode:(14,68),160,32;st_nlink:(14,108),192,32;st_uid:(14,69),224,32;st_gid:(14,70),256,32;st_rdev:(14,107),288,32;st_pad2:(15,2),320,64;st_size:(2,1),384,32;st_pad3:(0,3),416,32;st_atim:(18,3),448,64;st_mtim:(18,3),512,64;st_ctim:(18,3),576,64;st_blksize:(14,31),640,32;st_blocks:(14,24),672,32;st_fstype:(24,3)=ar(15,3);0;15;(0,2),704,128;st_pad4:(24,4)=ar(15,3);0;7;(0,3),832,256;;stat64:T(24,5)=s152st_dev:(14,107),0,32;st_pad1:(24,2),32,96;st_ino:(14,27),128,64;st_mode:(14,68),192,32;st_nlink:(14,108),224,32;st_uid:(14,69),256,32;st_gid:(14,70),288,32;st_rdev:(14,107),320,32;st_pad2:(15,2),352,64;st_size:(2,2),448,64;st_atim:(18,3),512,64;st_mtim:(18,3),576,64;st_ctim:(18,3),640,64;st_blksize:(14,31),704,32;st_blocks:(14,28),768,64;st_fstype:(24,3),832,128;st_pad4:(24,4),960,256;;/usr/include/sys/stat_impl.h/usr/include/unistd.h/usr/include/sys/unistd.h/usr/include/errno.h/usr/include/sys/errno.h/usr/include/pwd.hpasswd:T(30,1)=s36pw_name:(14,10),0,32;pw_passwd:(14,10),32,32;pw_uid:(14,69),64,32;pw_gid:(14,70),96,32;pw_age:(14,10),128,32;pw_comment:(14,10),160,32;pw_gecos:(14,10),192,32;pw_dir:(14,10),224,32;pw_shell:(14,10),256,32;;comment:T(30,2)=s16c_dept:(14,10),0,32;c_name:(14,10),32,32;c_acct:(14,10),64,32;c_bin:(14,10),96,32;;/usr/include/libgen.h/usr/include/stdlib.h/usr/include/iso/stdlib_iso.hdiv_t:t(33,1)=(33,2)=s8quot:(0,1),0,32;rem:(0,1),32,32;;ldiv_t:t(33,3)=(33,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;wchar_t:t(33,5)=(0,3)/usr/include/iso/stdlib_c99.hlldiv_t:t(34,1)=(34,2)=s16quot:(0,6),0,64;rem:(0,6),64,64;;/usr/include/syslog.h/usr/include/sys/syslog.hscponly.h/usr/include/getopt.hoption:T(38,1)=s16name:(14,10),0,32;has_arg:(0,1),32,32;flag:(38,2)=*(0,1),64,32;val:(0,1),96,32;;config.hcmd_t:t(37,1)=(37,2)=s8name:(14,10),0,32;argflag:(0,1),32,32;;cmd_arg_t:t(37,3)=(37,4)=s24name:(14,10),0,32;getoptflag:(0,1),32,32;strict:(0,1),64,32;badarg:(14,10),96,32;opts:(14,10),128,32;longopts:(37,5)=*(38,1),160,32;;config.h/usr/include/glob.hglob_t:T(41,1)=s20gl_pathc:(7,3),0,32;gl_pathv:(41,2)=*(14,10),32,32;gl_offs:(7,3),64,32;gl_pathp:(41,2),96,32;gl_pathn:(0,1),128,32;;glob_t:t(41,3)=(41,1)noop_syslog:F(0,22)priority:P(0,1)format:P(1,1)=*(1,2)=k(0,2)solaris_needs_strsep:F(14,10)str:P(41,2)delims:P(14,10)strip_vector:F(41,2)sav:P(41,2)tmpptr:r(41,2)dav:r(41,2)dac:r(0,1)discard_vector:F(0,22)av:P(41,2)discard_child_vectors:F(0,22)av:P(41,2)tmpptr:r(41,2)flatten_vector:F(14,10)av:P(41,2)tmpptr:r(41,2)temp:r(14,10)crptr:r(14,10)outbuf:r(14,10)len:r(0,1)newlen:r(0,1)check_dangerous_args:F(0,1)av:P(41,2)cmdarg:r(1,3)=*(37,3)tmpptr:r(41,2)ch:r(0,1)ac:r(0,1)longopt_index:(0,1)valid_arg_vector:F(0,1)av:P(41,2)cmd:r(1,4)=*(37,1)substitute_known_path:F(14,10)request:P(14,10)cmd:r(1,4)stripped_req:r(14,10)build_arg_vector:F(41,2)request:P(14,10)ap:r(41,2)argv:(1,5)=ar(15,3);0;99;(14,10)inputstring:(14,10)tmpstring:(14,10)freeme:r(14,10)ap2:r(41,2)av:r(41,2)expand_wildcards:F(41,2)av_old:P(41,2)av_new:r(41,2)g:(41,3)c_old:r(0,1)c_new:r(0,1)c:r(0,1)cntchr:F(0,1)buf:P(14,10)x:P(0,2)count:r(0,1)logstamp:F(14,10)ret_buf:V(1,6)=ar(15,3);0;254;(0,2)bad_ip:V(1,7)=ar(15,3);0;9;(1,2)ipstring:r(14,10)strbeg:F(14,10)big:P(14,10)small:P(14,10)valid_chars:F(0,1)string:P(14,10)count:r(0,1)get_uservar:F(0,1)userinfo:r(1,8)=*(30,1)user:r(14,10)replace_env_entry:F(0,1)name:P(1,1)value:P(1,1)base:r(41,2)buf:(1,9)=ar(15,3);0;256;(0,2)mysetenv:F(0,1)name:P(1,1)value:P(1,1)count:V(0,2)buff:(1,6)filter_allowed_env_vars:F(0,22)p_env:r(14,10)p_valid:r(41,2)strend:F(14,10)big:P(14,10)small:P(14,10)blen:r(0,1)slen:r(0,1)tempbuf:r(14,10)tempbuf:r(14,10) \ DD" o -B$  7B<<H ABL KQ--W--]-- 2::(F:: e=`=`n>>t>>{>>>>????<?? ? @ IhOQ =  m$07070100006299000081ed00000002000000020000000147ce02f300001b2d000000200000001b00000000000000000000001800000000reloc/bin/setup_scponly#!/bin/sh # # This file has a few minor fixes necessary fixes for Solaris 9, and possibly # other platforms, made by Ralph Durkee (www.rd1.net) in Jan 2004. # It is based on the 3.9 version by Joe Boyle from http://sublimation.org/scponly/ # If there is a newer version avilable from the sublimation.org website # you are most likely better off using it. # # handy functions: # # a function to display a failure message and then exit fail ( ) { /usr/bin/echo "$@ \c" exit 1 } # "get with default" function # this function prompts the user with a query and default reply # it returns the user reply getwd ( ) { query="$1" default="$2" /usr/bin/echo "$query [$default] \c" | cat >&2 read response if [ x$response = "x" ]; then response=$default fi /usr/bin/echo $response } # "get yes no" function # this function prompts the user with a query and will continue to do so # until they reply with either "y" or "n" getyn ( ) { query="$@ " /usr/bin/echo "$query \c"| cat >&2 read response while [ x$response != "xy" -a x$response != "xn" ]; do /usr/bin/echo "\n'y' or 'n' only please..." | cat >&2 /usr/bin/echo "$query \c" | cat >&2 read response done echo $response } # configuration # # get defaults # # Edit: es-unix.com - allow user configurable file for defaults 2008-03-04 # if [ -f /usr/local/etc/scponly/scponly.defaults ]; then . /usr/local/etc/scponly/scponly.defaults else defaultusername="scponly" defaulthomedirprefix="/export/home" defaultwriteabledir="writable" fi # the following is a list of binaries that will be staged in the target dir # # es-unix.com: 2008-03-04 # Hack to enable script to be used with orhinal source code #BINARIES=`/bin/grep '#define PROG_' config.h | /bin/cut -f2 -d\" | /usr/bin/grep -v '^cd$'` BINARIES=`cat /usr/local/etc/scponly/scponly.binaries` # we set the install path in a variable so the presetup script can overwrite it on systems # which require it INSTALL_PATHNAME="/usr/ucb/install -c" # attempt a best guess at required libs, we can append things in the presetup script if we need to LDSOFOUND=0 # default to useradd, not pw USE_PW=0 if [ x/usr/bin/ldd = x ]; then echo "this script requires the program ldd to determine which" fail "shared libraries to copy into your chrooted dir..." fi LIB_LIST=`/usr/bin/ldd $BINARIES 2> /dev/null | /usr/bin/cut -f2 -d\> | /usr/bin/cut -f1 -d\( | /usr/bin/grep "^[ ]" | /usr/bin/sort -u` # # we also need to add some form of ld.so, here are some good guesses. # LDSO_LIST="/lib/ld.so /libexec/ld-elf.so /libexec/ld-elf.so.1 /usr/libexec/ld.so /lib/ld-linux.so.2 /usr/libexec/ld-elf.so.1 /usr/lib/ld.so.1" for lib in $LDSO_LIST; do if [ -f $lib ]; then LDSOFOUND=1; LIB_LIST="$LIB_LIST $lib" fi done # # TODO - i've since forgotten which OS this is for, it should be relocated to a presetup script # /bin/ls /lib/libnss_compat* > /dev/null 2>&1 if [ $? -eq 0 ]; then LIB_LIST="$LIB_LIST /lib/libnss_compat*" fi #Kludge for Solaris LIB_LIST="$LIB_LIST /lib/nss_files.so.1" # check that the configure options are correct for chrooted operation: if [ x/usr/sbin/useradd = x ]; then if [ x = x ]; then echo "this script requires the program useradd or pw to add your" fail "chrooted scponly user." else USE_PW=1; fi fi # we need to be root if [ `/usr/xpg4/bin/id -u` != "0" ]; then fail "you must be root to run this script\n" fi echo echo Next we need to set the home directory for this scponly user. echo please note that the user\'s home directory MUST NOT be writeable echo by the scponly user. this is important so that the scponly user echo cannot subvert the .ssh configuration parameters. echo echo for this reason, a writeable subdirectory will be created that echo the scponly user can write into. echo targetuser=`getwd "Username to install" "$defaultusername"` targetdir=`getwd "home directory you wish to set for this user" "$defaulthomedirprefix/$targetuser"` # es-unix.com: Allow a writeable directory to username if [ "$defaultwriteabledir" = "_USERNAME_" ]; then defaultwriteabledir="$targetuser" fi writeabledir=`getwd "name of the writeable subdirectory" "$defaultwriteabledir"` # if neither the presetup script or the best guess could find ld.so, we have to bail here if [ $LDSOFOUND -eq 0 ]; then fail i cant find your equivalent of ld.so fi # # ACTUAL MODIFICATIONS BEGIN HERE # # this part shouldnt strictly be requried, but i'll leave it in until i'm sure of it if [ ! -d $targetdir ]; then $INSTALL_PATHNAME -d $targetdir fi if [ ! -d $targetdir/etc ]; then $INSTALL_PATHNAME -d $targetdir/etc /usr/bin/chown 0:0 $targetdir/etc /usr/bin/chmod 755 $targetdir/etc fi # add all our binaries for bin in $BINARIES; do $INSTALL_PATHNAME -d $targetdir/`/usr/bin/dirname $bin` $INSTALL_PATHNAME $bin $targetdir$bin done # and the libs they require if [ "x$LIB_LIST" != "x" ]; then for lib in $LIB_LIST; do $INSTALL_PATHNAME -d $targetdir/`/usr/bin/dirname $lib` $INSTALL_PATHNAME $lib $targetdir/$lib done fi /usr/sbin/useradd -d "$targetdir" -s "/usr/local/bin/scponly" $targetuser if [ $? -ne 0 ]; then fail "if this user exists, remove it and try again" fi # # we must ensure certain directories are root owned. # /usr/bin/chown 0:0 $targetdir if [ -d $targetdir/.ssh ]; then /usr/bin/chown 0:0 $targetdir/.ssh fi if [ ! -d $targetdir/$writeabledir ]; then echo "\ncreating $targetdir/$writeabledir directory for uploading files\c" $INSTALL_PATHNAME -o $targetuser -d $targetdir/$writeabledir fi # # set the perms on the writeable dir so that the new user owns it # newuid=`/usr/xpg4/bin/id -u $targetuser` newgid=`/usr/xpg4/bin/id -g $targetuser` /usr/bin/chown $newuid:$newgid $targetdir/$writeabledir if [ -f "$postscript" ]; then # # this system has a post-chroot setup script, lets run it # . "$postscript" else # # otherwise, revert to the old "best guess" system, which sucks # echo echo "Your platform ($osname) does not have a platform specific setup script." echo "This install script will attempt a best guess." echo "If you perform customizations, please consider sending me your changes." echo "Look to the templates in build_extras/arch." echo " - joe at sublimation dot org" echo if [ x = x ]; then # # ok we dont have pwd_mkdb, lets improvise: # /usr/bin/grep $targetuser /etc/passwd > $targetdir/etc/passwd else # # this is for systems which do have pwd_mkdb # /usr/bin/grep $targetuser /etc/master.passwd > $targetdir/etc/master.passwd -d "$targetdir/etc" $targetdir/etc/master.passwd @PROG_RM@ -rf $targetdir/etc/master.passwd $targetdir/etc/spwd.db fi fi # # the final step is setting the password # echo "please set the password for $targetuser:" passwd $targetuser echo "if you experience a warning with winscp regarding groups, please install" echo "the provided hacked out fake groups program into your chroot, like so:" echo "cp groups $targetdir/bin/groups" 0707010000629b000081ed00000002000000020000000147ce032800001b2e000000200000001b00000000000000000000001900000000reloc/bin/setup_scponlyc#!/bin/sh # # This file has a few minor fixes necessary fixes for Solaris 9, and possibly # other platforms, made by Ralph Durkee (www.rd1.net) in Jan 2004. # It is based on the 3.9 version by Joe Boyle from http://sublimation.org/scponly/ # If there is a newer version avilable from the sublimation.org website # you are most likely better off using it. # # handy functions: # # a function to display a failure message and then exit fail ( ) { /usr/bin/echo "$@ \c" exit 1 } # "get with default" function # this function prompts the user with a query and default reply # it returns the user reply getwd ( ) { query="$1" default="$2" /usr/bin/echo "$query [$default] \c" | cat >&2 read response if [ x$response = "x" ]; then response=$default fi /usr/bin/echo $response } # "get yes no" function # this function prompts the user with a query and will continue to do so # until they reply with either "y" or "n" getyn ( ) { query="$@ " /usr/bin/echo "$query \c"| cat >&2 read response while [ x$response != "xy" -a x$response != "xn" ]; do /usr/bin/echo "\n'y' or 'n' only please..." | cat >&2 /usr/bin/echo "$query \c" | cat >&2 read response done echo $response } # configuration # # get defaults # # Edit: es-unix.com - allow user configurable file for defaults 2008-03-04 # if [ -f /usr/local/etc/scponly/scponly.defaults ]; then . /usr/local/etc/scponly/scponly.defaults else defaultusername="scponly" defaulthomedirprefix="/export/home" defaultwriteabledir="writable" fi # the following is a list of binaries that will be staged in the target dir # # es-unix.com: 2008-03-04 # Hack to enable script to be used with orhinal source code #BINARIES=`/bin/grep '#define PROG_' config.h | /bin/cut -f2 -d\" | /usr/bin/grep -v '^cd$'` BINARIES=`cat /usr/local/etc/scponly/scponly.binaries` # we set the install path in a variable so the presetup script can overwrite it on systems # which require it INSTALL_PATHNAME="/usr/ucb/install -c" # attempt a best guess at required libs, we can append things in the presetup script if we need to LDSOFOUND=0 # default to useradd, not pw USE_PW=0 if [ x/usr/bin/ldd = x ]; then echo "this script requires the program ldd to determine which" fail "shared libraries to copy into your chrooted dir..." fi LIB_LIST=`/usr/bin/ldd $BINARIES 2> /dev/null | /usr/bin/cut -f2 -d\> | /usr/bin/cut -f1 -d\( | /usr/bin/grep "^[ ]" | /usr/bin/sort -u` # # we also need to add some form of ld.so, here are some good guesses. # LDSO_LIST="/lib/ld.so /libexec/ld-elf.so /libexec/ld-elf.so.1 /usr/libexec/ld.so /lib/ld-linux.so.2 /usr/libexec/ld-elf.so.1 /usr/lib/ld.so.1" for lib in $LDSO_LIST; do if [ -f $lib ]; then LDSOFOUND=1; LIB_LIST="$LIB_LIST $lib" fi done # # TODO - i've since forgotten which OS this is for, it should be relocated to a presetup script # /bin/ls /lib/libnss_compat* > /dev/null 2>&1 if [ $? -eq 0 ]; then LIB_LIST="$LIB_LIST /lib/libnss_compat*" fi #Kludge for Solaris LIB_LIST="$LIB_LIST /lib/nss_files.so.1" # check that the configure options are correct for chrooted operation: if [ x/usr/sbin/useradd = x ]; then if [ x = x ]; then echo "this script requires the program useradd or pw to add your" fail "chrooted scponly user." else USE_PW=1; fi fi # we need to be root if [ `/usr/xpg4/bin/id -u` != "0" ]; then fail "you must be root to run this script\n" fi echo echo Next we need to set the home directory for this scponly user. echo please note that the user\'s home directory MUST NOT be writeable echo by the scponly user. this is important so that the scponly user echo cannot subvert the .ssh configuration parameters. echo echo for this reason, a writeable subdirectory will be created that echo the scponly user can write into. echo targetuser=`getwd "Username to install" "$defaultusername"` targetdir=`getwd "home directory you wish to set for this user" "$defaulthomedirprefix/$targetuser"` # es-unix.com: Allow a writeable directory to username if [ "$defaultwriteabledir" = "_USERNAME_" ]; then defaultwriteabledir="$targetuser" fi writeabledir=`getwd "name of the writeable subdirectory" "$defaultwriteabledir"` # if neither the presetup script or the best guess could find ld.so, we have to bail here if [ $LDSOFOUND -eq 0 ]; then fail i cant find your equivalent of ld.so fi # # ACTUAL MODIFICATIONS BEGIN HERE # # this part shouldnt strictly be requried, but i'll leave it in until i'm sure of it if [ ! -d $targetdir ]; then $INSTALL_PATHNAME -d $targetdir fi if [ ! -d $targetdir/etc ]; then $INSTALL_PATHNAME -d $targetdir/etc /usr/bin/chown 0:0 $targetdir/etc /usr/bin/chmod 755 $targetdir/etc fi # add all our binaries for bin in $BINARIES; do $INSTALL_PATHNAME -d $targetdir/`/usr/bin/dirname $bin` $INSTALL_PATHNAME $bin $targetdir$bin done # and the libs they require if [ "x$LIB_LIST" != "x" ]; then for lib in $LIB_LIST; do $INSTALL_PATHNAME -d $targetdir/`/usr/bin/dirname $lib` $INSTALL_PATHNAME $lib $targetdir/$lib done fi /usr/sbin/useradd -d "$targetdir" -s "/usr/local/sbin/scponlyc" $targetuser if [ $? -ne 0 ]; then fail "if this user exists, remove it and try again" fi # # we must ensure certain directories are root owned. # /usr/bin/chown 0:0 $targetdir if [ -d $targetdir/.ssh ]; then /usr/bin/chown 0:0 $targetdir/.ssh fi if [ ! -d $targetdir/$writeabledir ]; then echo "\ncreating $targetdir/$writeabledir directory for uploading files\c" $INSTALL_PATHNAME -o $targetuser -d $targetdir/$writeabledir fi # # set the perms on the writeable dir so that the new user owns it # newuid=`/usr/xpg4/bin/id -u $targetuser` newgid=`/usr/xpg4/bin/id -g $targetuser` /usr/bin/chown $newuid:$newgid $targetdir/$writeabledir if [ -f "$postscript" ]; then # # this system has a post-chroot setup script, lets run it # . "$postscript" else # # otherwise, revert to the old "best guess" system, which sucks # echo echo "Your platform ($osname) does not have a platform specific setup script." echo "This install script will attempt a best guess." echo "If you perform customizations, please consider sending me your changes." echo "Look to the templates in build_extras/arch." echo " - joe at sublimation dot org" echo if [ x = x ]; then # # ok we dont have pwd_mkdb, lets improvise: # /usr/bin/grep $targetuser /etc/passwd > $targetdir/etc/passwd else # # this is for systems which do have pwd_mkdb # /usr/bin/grep $targetuser /etc/master.passwd > $targetdir/etc/master.passwd -d "$targetdir/etc" $targetdir/etc/master.passwd @PROG_RM@ -rf $targetdir/etc/master.passwd $targetdir/etc/spwd.db fi fi # # the final step is setting the password # echo "please set the password for $targetuser:" passwd $targetuser echo "if you experience a warning with winscp regarding groups, please install" echo "the provided hacked out fake groups program into your chroot, like so:" echo "cp groups $targetdir/bin/groups" 0707010000629c000041ed00000000000000000000000347ce055700000000000000200000001b00000000000000000000000a00000000reloc/doc070701000062a5000041ed00000000000000000000000247ce055700000000000000200000001b00000000000000000000001200000000reloc/doc/scponly07070100006345000081a400000002000000020000000147cdd67f00000020000000200000001b00000000000000000000001900000000reloc/doc/scponly/AUTHORJoe Boyle 07070100006361000081a400000002000000020000000147cdd67f00001ef7000000200000001b00000000000000000000002500000000reloc/doc/scponly/BUILDING-JAILS.TXTBuilding scponly jail configurations manually. Paul Hyder NOAA Forecast Systems Lab Boulder, CO DRAFT of March 2005 paul.hyder@noaa.gov Building a jail is almost always >site< specific. There isn't really an easy answer, even if you ignore the OS differences. Hence, as you've probably found, building jails is actually not very easily automated. At the very least you have to have an idea of the chrooted directory structure that you want for your site. (We use a chrooted multi-user topology with a single central set of NFS mounts. Other sites have individual chrooted environments for each user so that no one sees anyone else. The default script builds individual environments.) If someone does provide a script make sure it does what you want. If you don't get something specific that you like it isn't too hard to extract the topology from the default script and build a jail to meet your needs. A. Build scponly with your site specific options. Figure out where your specific ssh/scp/rsync/sftp (and other) binaries are. You will also need to know exactly how your sshd is configured, i.e. find the relevant sshd_config file and look at it. If you use dsa or rsa keys you should change the sshd_config and put them in an isolated directory that is NOT in the chrooted environment. You are likely to be happier and safer if you move them out of $HOME/.ssh! Ssh authentication, keys or passwords, is handled by the top level sshd and the associated sshd_config file. You authenticate normally and then are chrooted into the scponly tree. NOTE: Even if you set it up that way, scponly WILL NOT permit root owned sessions, i.e. any session with UID=0 An "incoming" directory can be created anywhere in the chrooted tree. The default script creates one in the users home directory. The home directory is not user writeable but the incoming sub directory is. BTW: If you use the default setup_chroot.sh script, the top level /etc/password file should already contain the scponly users. This is still a good idea if you build the jail manually. 1. Determine your chrooted topology, user visibilty, and file system mounts. Basically you need to know what >you< want the final chrooted environment to be. a. Choose a location for your alternate root. (We use /altroot/scponly. Users will see a small subset of a normal / configuration after the chroot.) b. Determine the file system mount topology (often NFS) in the chrooted location. c. Decide whether users can see each others files. 2. Create the chrooted directory location. mkdir /{altroot} /{altroot} /{altroot}/home /{altroot}/home/{username} /{altroot}/home/{username}/incoming /{altroot}/bin /{altroot}/etc /{altroot}/lib /{altroot}/usr /{altroot}/usr/bin /{altroot}/usr/lib /{altroot}/usr/libexec /{altroot}/usr/libexec/openssh Where "altroot" is either a single shared location OR multiple single user locations. In the single user topology each user has their own isolated set of all binary files. Unless you are !absolutely! sure of your sshd configuration the users home directory, /{altroot}/home/{username} above, should be empty and owned by root and not writeable by the user. Synopsis: chrooted home directories are empty, root (0.0) owned, and user readable. (after chroot are just /home/{username}) Our multi-user configuration has /{altroot}/misc and selected file systems are NFS mounted there. If you do this you probably also will want to install a copy of /etc/group in /{altroot}/etc/group as noted below. 3. Install the subset of commands and libraries. This means you copy them from the equivalent top level directory. This is of course where operating system differences and local utility locations introduce problems. Sadly there isn't a single set, just guidelines. The information below is based on my setup with RedHat Linux. See additional notes embedded below. /{altroot}/bin chgrp chmod chown ln ls mkdir mv rm rmdir This provides the EXPLICIT set of basic commands that work from ssh. Not any more dangerous than leaving sftp. IMPORTANT: $PATH doesn't impact these commands, their location is hard coded in scponly making it difficult or impossible for a user to add commands. There isn't a shell, hence no real $PATH. IMPORTANT: If your standard binaries are in another directory you should put them in the right location in the /{altroot} tree instead of /{altroot}/bin. You have to check. /{altroot}/etc ld.so.cache ld.so.conf passwd group The passwd file is a subset of the /etc/passwd file. The only thing you need is the first part of the line, e.g. an entry in the chrooted passwd file can be edited to look like: auser:x:3444:3000::: The passwd file will either have a stripped set of passwd entries for multiple users OR a single line for the single isolated user. The group file is only needed in an open multi-user environment. The ld.so.cache and/or ld.so.conf may need to be elsewhere depending on the operating system. Look in places like /var/ld. /{altroot}/usr/bin rsync scp Copy your current rsync and scp binaries if you configured scponly to support them. IMPORTANT: If your standard binaries are in another directory you should put them them in the right location in the /{altroot} tree instead of /{altroot}/usr/bin. A common one for scp is /usr/local/bin. Again you have to check. /{altroot}/usr/libexec/openssh sftp-server Copy your current sftp-server binary if you configured scponly to support sftp. IMPORTANT: If your system sftp-server is not in /usr/libexec put it in the right location in the /{altroot} tree. /{altroot}/lib ld-linux.so.2 libc.so.6 libdl.so.2 libnsl.so.1 libnss_compat-2.2.5.so libnss_compat.so.1 libnss_compat.so.2 libtermcap.so.2 libutil.so.1 /{altroot}/lib/tls libc.so.6* libpthread.so.0* librt.so.1 /{altroot}/usr/lib libcrypto.so.1 libz.so.1 Ok, libraries are the truly nasty part. The set of libraries depends on your specific operating system and the scponly supported utilities. The above set works with RedHat Linux. For other operating systems you probably need to run ldd on the binaries you copy into bin, usr/bin, usr/libexec, etc. You may also need to run ldd on the libraries to determine a complete set of libraries and their required location in the chrooted environment. If things don't work suspect incomplete library selection or that a library is in the wrong location. 4. Modify the top level /etc/password file. (See above for the format of the chrooted etc/password file.) The top level /etc/password file is modified for each scponly user, you insert the chrooted path in front of the existing path (With a // at the chroot point) and the shell set to your scponlyc location. Original /etc/passwd line auser:x:3444:3000:A user:/home/auser:/bin/csh Modified /etc/passwd line auser:x:3444:3000:A user:/{altroot}//home/EmptyHomeDir:/sbin/scponlyc Where {altroot} is your chosen chroot point for this user, EmptyHomeDir is the chrooted home directory name, and scponlyc is the path your installed version. The two slashes ('//') are used by scponlyc to determine the chroot point. Everything in front of them is used as the new root location in the chroot call. Everything after the double slash designates the directory to chdir() into AFTER chrooting. This is so users can be dropped into a writable directory inside the chroot. 07070100006373000081a400000002000000020000000147cdd67f00002b5e000000200000001b00000000000000000000001c00000000reloc/doc/scponly/CHANGELOGscponly v4.8 - jan 14 2008 fix support for quota and passwd when running within the chroot (exec pre-chroot) disallow rsync and svnserve from being run as daemons that listen on a port switch to getopt_long for command processing, use getopt for sftp-server, svnserve, and quota abort processing on commands that require getopt when getopt is not available switched to slightly optimized and more compact debug code fix unison support within chroots fix for unison command execution bug Dan Knapp allow multiple users with the same uid using USER environment variable Steve Kehlet scponly 4.7 - change information unknown mismanaged - check CVS diffs if needed scponly v4.6 - jan 31 2006 added missing semicolon to helper.c scponly v4.5 - jan 31 2006 fixes the configure.in script to not define HAVE_OPTRESET, not even to a value of 0 Ilya Evseev scponly v4.4 - jan 30 2006 fixes that hopefully improve the optarg compilation situation Christophe GRENIER Bryan ?\230stergaard UNISON $HOME environment fix Martin Werthmoeller fixes to setup_chroot.sh/in Hideyuki KURASHINA scponly v4.3 - 27 dec 2005 numerous small fixes to 4.2 scponly v4.2 - 20 dec 2005 improved argument processing Pekka Pessi reported that scponly processed scp args by literal comparison, which is insufficient to catch getopt style arguments. this also resulted in scp and winscp compat turned off by default. added CHROOT_CHECKDIR directive issue reported by Max Vozeler wherein non-scponly users on some platforms (debian linux tested) could invoke the scponlyc binary against a specially crafted home directory to achieve priveledge escalation. fix for openbsd ldd in setup_chroot G 0kita sftp-logging compatibility patch Kaleb Pederson fix for autoconf AC_INIT macro Paul Hyder patch for command line args to setup_chroot invocation Anish Mistry patches to fix passwd support and add quota support Richard Fuller scponly v4.1 - 12 apr 2005 follow up fix for additional executable rsync argument "-6e" (see v4.0) Jason Wies building jails document Paul Hyder chdir/chroot patch David Ramsden dangerous args ifdef macro for scp -S flag (fixes debian bug 289861) Hideyuki KURASHINA DESTDIR support for chroot creation Markus Kolb numerous fixes Kaleb Pederson Dimitri Papadopoulos scponly v4.0 - 27 nov 2004 SERIOUS VULNERABILITY FIX: scp/sftp-server/unison/rsync all support the command line specification of "ssh dropins" for alternate crypto tunnels (similar to the way ssh can dropin to replace rsh). this allows arbitrary command execution on the destination host, circumventing scponly's sole purpose. this is NOT a priv escalation bug and it is DOES require authentication. all versions prior to 4.0 are vulnerable. Jason Wies added passwd support Andreas Beck added subversion support Sven Hoexter fixed AIX support in configure script Sven Hoexter compile time configuration of default chdir Daniel Lorch scponly v3.12 - 22 mar 2004 UNISON bugfix scponly v3.11 - 21 mar 2004, added UNISON compatibility (http://www.cis.upenn.edu/~bcpierce/unison/): Raimund Specht bugfix to home dir default permissions: James Valente configure option to disable paranoid filename checking, thus allowing all characters in input added a new config.sub fixed missing PROG_RM declaration: Hideyuki KURASHINA scponly v3.9 - 17 nov 2003, makefile improvements: Bjrn Eriksson setup_chroot improvements: Johan Kuuse Thomas Wana Martin Werthmoeller Hideyuki KURASHINA Ralf Durkee WinSCP3 compat patch (http://o5.pl/scponly-stuff/): Konrad Krzysztof Krasinski hand-written build scripts for debian and RH9: Konrad Krzysztof Krasinski scponly v3.8 - 17 mar 2003, added chgrp to acceptable binaries scponly v3.7 - 17 mar 2003, rerepaired freebsd 4.7 configure and setup_chroot problems scponly v3.6 - 07 mar 2003, fixed the rsync compatibility configure options repaired freebsd 4.7 configure and setup_chroot problems added cool /chrootdir//homedir home directory interpretation - thanks to Stefan Sami-Soueiha for his patch scponly v3.5 - 16 dec 2002, v3.4 - 02 nov 2002, v3.3 - 28 oct 2002: stupid bugfixes from 3.2 in configure.in thanks to Sven Hoexter scponly v3.2 27 oct, 2002 realloc() fix change exit values for hygeine and portability TODO file added numerous portability fixes to setup_chroot.sh.in Solaris compatibility improvements Irix compatibility improvements added some chrooted Irix install notes in README.IRIX some winscp2 fixes to reduce annoying popup errors added a strsep clone for solaris scponly v3.1 10 sep, 2002 additional linux compatibility checks for setup_chroot.sh.in configure script changes to fix moronic problem of not being able to find /bin added rsync compile time option. this is a very untested feature. scponly v3.0 04 sep, 2002 Solaris compatibility patch - by Rene Klootwijk gftp compatibility patch - by Michael system() dropped - wildcards are expanded with glob() and wordexp() depending on availability of these functions. autoconf configuration - original by Andrew Chadwick - expanded by author - Can now set install dirs for other layouts. - Keep Ken McG's makefile changes as much as possible. - /etc/shells hacking has gone away, 'cause you can't do that to a Debian (or any other) install tree in a meaningful way. scponly v2.4 18 aug, 2002 vulnerability patch! - Derek D. Martin sent me an exploitable vulnerability condition that can be used to run arbitrary commands, thus circumventing scponly! the exploit is pending but the fix for existing installations appears below. new installations scponly-2.4 are not vulnerable. - this vulnerability is POST-authentication and results in no priveledge elevation. - the fix: each user with scponly as his or her shell must have an immutable home directory and .ssh subdirectory. file uploads directly to the home directory are not permitted and in turn, an "incoming" directory or some analog must be used. Also, it is prudent to audit/remove all dotfiles that are already in a user's home directory. - the following commands will "patch" the vulnerability: chown root.root ~scpuser ~scpuser/.ssh mkdir ~scpuser/incoming chown scpuser.scpuser ~scpuser/incoming - the result: drwxr-xr-x 2 root root 4096 Mar 28 20:50 ./ drwxr-xr-x 2 root root 4096 Mar 28 20:50 .ssh/ drwxr-xr-x 2 user user 4096 Mar 28 20:50 incoming/ - this is to prevent a user from using SSH based login params to undermine the shell. scponly v2.3 22 june, 2002 manpage addition - Ken McGlothlen sent in a manpage for scponly. - he also sent in a patch to the makefile that improves the portability of the installation process scponly v2.2 11 june, 2002 syslog implementation - Andrew Chadwick sent in a patch for syslog implementation - scponly now logs properly scponly v2.1 5 june, 2002 chroot bugfix - Volker Kindermann contributed a bug report regarding WinSCP and chroot usage. login sets the interactive market on the binary name so it becomes "-scponlyc". this was confusing the chroot check. - fixed setup_chroot to include "groups" binary scponly v2.0 2 july, 2002 lots of code added for compatibility with WinSCP 2.0 - this code actually contradicts the "no interactive commands" mandate of scponly. scponly now DOES support interactive commands limited to the commands scponly already allowed remote execution of, plus "cd", "groups" and "echo". - since this is new, it can be excluded at compile time - i havent tested against WinSCP 1.0, as i expect it will go away with the advent of WinSCP 2.0 - upon various failure conditions, WinSCP will probably freak out when it receives the error messages from scponly. check your "logging" feature in WinSCP if this starts happening install script improved to not append shells to /etc/shells if they are already there - watch for this if you CHANGE your shell path and re-install scponly v1.4 may 20, 2002 minor bugfix - upon failing to open a logfile, scponly would try to log to logfile. scponly v1.3 feb 6 2002: pretty significant code changes to accomplish the following: - total overhaul of install scripts. They are now rather BSD centric. this might cause pain in the linux and solaris realms, which I would be happy to try to accomodate for. - added clean_request() function to remove some unwanted leading path information from shell commands. This was in hopes of resolving the openssh client's habit of specifying the full pathname of the sftp-server. - added debugging information that can be turned on at run time instead of compile time. see INSTALL for notes - chroot() functionality is now established at run time instead of compile time as well. depending on the NAME of the scponly binary (scponly/scponlyc), scponly will try to chroot. this allows an admin to configure chroot functionality on a per user basis, instead of per host installation. - increased the list of acceptable commands for compatibility with sftp clients that do stuff like chmod and chown scponly v1.2 jan 10th 2002: applied a patch submitted by dkl at tessellated dot net. increases compatibility with wintendo style sftp/scp clients by also allowing things like chmod, pwd, etc scponly v1.1 feb 23rd - 8:36pm EST: I've discovered a rather glaring problem with the original release. It seems that while implementing chroot() functionality, I completely broke the wildcard matching. This is because "/bin/sh" is required to expand wildcards. Though it is undesirable to have ANY command interpretter in the chroot path, it should not be possible to invoke sh interactively or remotely. This fix vastly increases the usability of scponly. 07070100006380000081a400000002000000020000000147cdd67f00000e57000000200000001b00000000000000000000001a00000000reloc/doc/scponly/CONTRIBDimitri Papadopoulos - numerous corrections and patches Markus Kolb - DESTDIR support for chroot creation Kaleb Pederson - numerous fixes - sftp-logging compatibility patch Paul Hyder - building jails document - fix for autoconf AC_INIT macro - minor compilation issues David Ramsden - chdir/chroot patch Daniel Lorch - compile time configuration of default chdir Andreas Beck - passwd support Jason Wies - arbitrary command execution bug report Hideyuki KURASHINA - missing PROG_RM bug report - UNISON support bug - tons of proofreading and testing - dangerous args ifdef macro for scp -S flag (fixes debian bug 289861) Raimund Specht - UNISON support patches James Valente - bugfix to home dir default permissions Stefan Sami-Soueiha - added cool /chrootdir//homedir home directory interpretation Sven Hoexter - added subversion support - added AIX support in configure script - configure script bugfix and scponly.c bugfix François Gouget - found his solaris strsep on the web David N. Blank-Edelman - mailing list configuration Martin Werthmoeller - linux libnss_compat* fix - setup_chroot improvements - UNISON compat fixes Olaf Menkens - IRIX compatibility notes Andrew Ruthven - realloc() bugfix Fabian Ruff - linux compatible notes for setup_chroot.sh Ian W. D. Langworth - another Solaris compile time fix Michael - gftp compatibility patch Rene Klootwijk - Solaris syslog patch Derek D. Martin - sent me an exploitable vulnerability condition that can be used to run arbitrary commands, thus circumventing scponly! scponly-2.3 installations and older are vulnerable. Ken McGlothlen - manpage and installation makefile improvements Andrew Chadwick - syslog implementation - practically all of the autoconf work dkl at tessellated dot net - compatibility notes and patch Markus Dobel - logfile bug report Bjrn Eriksson - makefile improvements Johan Kuuse Thomas Wana - setup_chroot improvements Konrad Krzysztof Krasinski - WinSCP3 compat patch and install notes - (http://o5.pl/scponly-stuff/): Ralf Durkee - setup_chroot.sh.in changes G 0kita - patch for openbsd ldd output Anish Mistry - patch for command line setup_chroot invocation Richard Fuller - patch for quota support - patch for fixing passwd support Max Vozeler - reported issue with user writable home directories and chroot() calls Pekka Pessi - improved getopt style argument checking for malicious arguments Christophe GRENIER Bryan ?\230stergaard - suggestions leading to a autoconf fix for getopt issues Ilya Evseev - fixes the configure.in script to not define HAVE_OPTRESET, not even to a value of 0 07070100006388000081a400000002000000020000000147cdd67f000004df000000200000001b00000000000000000000001a00000000reloc/doc/scponly/COPYINGCopyright (C) 2001, 2002, 2003 Joe Boyle Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 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. THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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. 0707010000639c000081a400000002000000020000000147cddcd500000647000000200000001b00000000000000000000002400000000reloc/doc/scponly/ES-UNIX_ADDITIONSModifications to this Solaris package away from the standard source. NOTE: tested on Release Solaris 10 11/06 SPARC This package automatically adds scponly and scponlyc in /etc/shells. Removeing htis package will remove these shells As as quick and easy way of creating jails, I replaced setup_chroot.sh with - setup_scponly - setup_scponlyc based on the setup_chroot.sh script. Minor modifications were applied. While I have left the setup_chroot.sh script intact, it does not work for me. The default binaries required and upon which the libraries used for the jail rely, are listed in /usr/local/etc/scponly/scponly.binaries. This allows a Solaris packing approach without relying on source code - security :) Addionally, the default username, homedirectory base and writeable directory can be defined and will override the script defaults. Defined in: /usr/local/etc/scponly/scponly.binaries. Setting the defaultwriteabledir to _USERNAME_ will allow for default paths such as: /export/home/james/james where /export/home/james/ is the home directory with /export/home/james/james being the writable directory. I hope this helps all those underpaid and overworked Solaris admins. Enjoy. Eugene Schmidt 2008-03-04 Build info: =========== scponly 4.8 gcc3.3.2 libiconv 1.8 make 3.80 Configure options: ================== ./configure --enable-winscp-compat --enable-chrooted-binary Environment: ============ PATH=/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/usr/ccs/bin:/usr/ucb LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/ccs/lib:/usr/ucblib EDITOR=vi export PATH LD_LIBRARY_PATH EDITOR 0707010000639e000081a400000002000000020000000147cdd67f000018a0000000200000001b00000000000000000000001a00000000reloc/doc/scponly/INSTALLscponly Installation Instructions: http://sublimation.org/scponly joe@sublimation.org Installing scponly is not difficult. It is not trivial either so I advise reading the instructions carefully. Keep in mind, you CAN use scponly as a setuid binary, which should warrant caution. Step 1. Decide if you want to use chroot() functionality. If you dont know what this step means, consult "man chroot". If you still dont understand this question, you should not use chroot() functionality. Go to step 2. Otherwise, consider the following: - If you do use chroot(), your binary will need to be setuid. This should make any security conscious administrator wary. - Also consider that scponly will only execute AFTER sshd has authenticated the remote user. Given this, you should be able to rest a little easier knowing that utilizing scponly will not open you up to impersonal vulnerability subnet scans. - If you are still unsure, read the code. There is a seteuid that ensures that the execution of any commands is never done with an effective uid of 0. - scponly will check the permissions of the directory it is about to chroot into unless --disable-chroot-checkdir is used at confiuration time. This is to prevent chroot-ing into a user writable directory. - Lastly, I make no guarantees that this code is unexploitable. Any system administrator utilizing scponly bears the full responsibility for maintaining a secure system. (see 18/08/02 CHANGELOG!) - Without chroot() functionality, scponly still functions just fine. However, most all files on any root filesystem for any default installation are globally readable. - installing scponly with chroot could incur some pretty hairy troubleshooting. The binaries and libraries must be set up properly in the chroot subdirectories properly. Step 2. Configure your installation. There are only a handful of options to configure scponly. Some to note: --enable-chrooted-binary This option configures additional compile and install parameters that will set your scponly installation to handle chrooted scponly users. By default, chrooted scponly binaries are not built. --disable-wildcards The wildcard processing is new and although I know of no vulnerabilities, the especially paranoid may wish to disable this feature. Also note, it only relates to "scp" transfers, and not "sftp", which handles its own wildcards. By default, wildcards are enabled. --disable-scp-compat --disable-sftp --disable-winscp-compat "scp" or "sftp" can be excluded altogether at compile time if you know you will not be using one or the other at all. If you do not wish to support WinSCP 2.0 compatibility, you can specify the disable option, which will exclude that functionality. This is for especially paranoid folks that do not like the interactive nature of a WinSCP session. By default, WinSCP 2.0 compatibility is compiled in. --disable-restrictive-names Turning off filename checks will disable checking of the scp arguments. Historically, these arguments were checked for shell metacharacters, but these checks are no longer required. (However, I leave to option to disable turned off by default until a later release.) Other options can be seen using "./configure --help" Step 3. Build the binaries. This is the easy part, type "make". Step 4. Install the components. Type "make install". This will install your manpage and scponly binary. Step 5. Edit /etc/shells If you have not already done so, add "scponly" to your /etc/shells file, including the full pathname. If you are using a chrooted scponly install, you should add "scponlyc", also including full pathname. Step 6. Create/Edit a user intended for scponly use. Use your system's "adduser" command to create the user. Set the default shell to the full pathname of your scponly binary. If you want chroot functionality, the name of the shell is "scponlyc", otherwise it is "scponly". This could look like: adduser -d /pub -s /usr/local/bin/scponly scpdemo or for chrooted: adduser -d /pub -s /usr/local/sbin/scponlyc scpdemo Where the home directory is "/pub" and the username is "scpdemo". It is very important that the user's home directory be unwritable by the user, as a writable homedir will make it possible for users to subvert scponly by modifying ssh configuration files. If users complain about being unable to write into their homedir, there is a provision to specify both the chroot directory and a subdirectory of the chroot to chdir into: /home/userchroot//writable/subdir Everything before the // is the directory to chroot into and everything after the // is the subdir to chdir into after chrooting. Naturally, set the password for this user. ADDITIONAL STEPS FOR CHROOT-ENABLED INSTALLATIONS ONLY: Step 7. You will need to install some directories, passwd files, libraries and binaries in your chroot path so that scponly has something to invoke when it comes time to execute the remote request. I have added the script that performs most setup for chroot: You can run it with: make jail Please be aware that chroot installation varies WIDELY from system to system. check in the build_extras directory if make jail has failed you. Also see the BUILDING_JAILS.TXT document in this source package for additional help. Good luck! That's it, you're done! Additional Installation notes: - Some operating systems (notably redhat 9), use a shell script for the "groups" command. Though "groups" is an allowable command, the "#!/bin/sh" interpreter specification at the beginning of this script will attempt to load /bin/sh, which is not available in the chrooted jail. This is only a problem when you are also using WinSCP compatibiliy, because WinSCP will attempt to run "groups" upon connection initialization. You have three choices: - you can either put /bin/sh in your jail, which is a security problem - you can deselect "lookup user groups" in the WinSCP configuration - you can "make groups" using the provided groups.c and move the fake groups program into your chroot. - There are additional notes and scripts in the "build_extras" directory for specific platforms 070701000063a0000081a400000002000000020000000147cdd67f00000fcf000000200000001b00000000000000000000001900000000reloc/doc/scponly/README 3debe8e4f1c654a658b48dfdc5c2cf9d http://sublimation.org/scponly "scponly" is an alternative 'shell' (of sorts) for system administrators who would like to provide access to remote users to both read and write local files without providing any remote execution privileges. Functionally, it is best described as a wrapper to the mostly trusted suite of ssh applications. A typical usage of scponly is in creating a semi-public account not unlike the concept of anonymous login for ftp. This allows an administrator to share files in the same way an anon ftp setup would, only employing all the protection that ssh provides. This is especially significant if you consider that ftp authentications traverse public networks in a plaintext format. Instead of just a single anon user, scponly supports configuring potentially many users, each of which could be set up to provide access to distinct directory trees. Aside from the installation details (see INSTALL), each of these users would have their default shell in /etc/passwd set to "/usr/local/sbin/scponly" (or wherever you choose to install it). This would mean users with this shell can neither login interactively nor execute commands remotely. They can however, scp files in and out, governed by the usual unix file permissions. Some Features: ============== - logging: scponly logs time, client IP address, username, and the actual request to syslog. - choot: scponly can chroot to the user's home directory (or any other directory the user has permissions for), disallowing access to the rest of the filesystem. - sftp compatibility. my testing of sftp against an scponly user worked great. this is probably the cleanest and most usable way for an scponly user to access files. - sftp logging: if the ./configure directive "--enable-sftp-logging-compat" is used, scponly will support sftp logging - WinSCP 2.0/3.0 compatibility. - gftp compatibility - rsync compatibility - security checks: root login is disallowed (though root should never be configured to be using scponly as the default shell.) scponly also checks the ownership of directories before chroot-ing into them. How it works: ============= If you were to examine the arguments passed to a shell by sshd upon opening a remote connection, the structure of the argument vector invariably looks like this: -c scponly validates remote requests by examining the third argument. scponly also verifies the request by disallowing what a normal shell would interpret as "special characters". This prevents someone from piggybacking additional commands onto a valid scp request. It may seem that using scponly would prevent using scp to copy files that really do contain special characters. However, copying files with special characters in their names can be accomplished by using wildcards (which are allowable characters) to match the filenames. scponly doesnt do anything to manage read/write permissions. The ssh applications already do that just fine. If you use scponly, be aware that good old unix file permissions are still doing the work of protecting your files. MAY 2002 ADDENDUM: I've since discovered that ssh.com's commercial ssh offering supports BOTH "dummy users" as well as scponly-ish functionality. I have not been able to find any notes on these features, but I did read that they exist. I will make a point to include more information later. It appears that OpenSSH does not yet support these features. At this time, I have no plans to end-of-life scponly, though ultimately, I recognize that scponly should eventually become just a feature of whichever sshd you may run. NOV 2003 ADDENDUM: OpenSSH still doesnt support configurable chrooting for users OR disallowing interactive login. NOV 2004 ADDENDUM: OpenSSH still doesnt support configurable chrooting for users OR disallowing interactive login. DEC 2005 ADDENDUM: OpenSSH still doesnt support configurable chrooting for users OR disallowing interactive login. 070701000063a4000081a400000002000000020000000147cdd67f00000ada000000200000001b00000000000000000000001b00000000reloc/doc/scponly/SECURITYSECURITY Here are a few important things to know about security and scponly. This is a brief attempt to document what should be done to correctly secure scponly. 1) Configure scponly to use a chroot 2) Configure scponly to use as few extra options and services as possible. If possible, try to use something similar to the following: ./configure --disable-wildcards --enable-chrooted-binary \ --disable-gftp-compat --with-sftp-server=/path/to/sftp-server 3) NOTE THE FOLLOWING SECURITY RISKS: -- by enabling wildcards, there is a slightly higher chance of an exploit -- by enabling scp and/or scp compatibility, more programs will need to be installed in the chroot which increases the risk -- CAUTION: by enabling svn/svnserve the user WILL BE ABLE TO EXECUTE SCRIPTS OR PROGRAMS INDIRECTLY! svn and svnserve will try to execute pre-commit, post-commit hooks, as well as a few others. These files have specific filenames at specific locations relative to the svn repository root. Thus, unless you are *very* careful about security, the user WILL BE ABLE TO EXECUTE SCRIPTS OR PROGRAMS INDIRECTLY! This can be prevented by a careful configuration. -- The following programs use configuration files that might allow the user to bypass security restrictions placed on command line arguments: svn, svnserve, rsync, and unison 4) Make sure that all files required for the chroot have the IMMUTABLE and UNDELETABLE bits set. Other bits might also be prudent. See: man 1 chattr. 5) Only put files in the chroot that are absolutely essential to its functionality. 6) Make sure the following directories are locked down appropriately: ~/.ssh, ~/.unison, ~/.subversion NOTE: depending on file permissions in the above, ssh, unison, and subversion may not work correctly. 7) Make sure that every directory the users have write permissions to are on a filesystem that is mounted NODEV, NOEXEC. Eg. Make sure that they cannot execute files that they have permissions to upload. They should also not need permissions to create any devices. If the user can't execute any files that he has access to upload, then you need not worry about the security problems referencing svn/svnserve above! 8) Monitor your logs! If you start to see something funny, odd, or strange in the logs, please let us know so that we can investigate and make sure any problems are resolved. 9) Stay up-to-date with the scponly installs. We don't have releases too often, but the changes we do make are usually important! 10) Enjoy! Lastly, if you have other suggestions and thoughts that would help secure an scponly install, please send them to us! Thanks for using scponly! 070701000063a6000081a400000002000000020000000147cdd67f00000059000000200000001b00000000000000000000001700000000reloc/doc/scponly/TODOTODO file added octover 24th, 2002 - cvs support (compile time option, off by default) 070701000063ba000041ed00000000000000000000000347ce055700000000000000200000001b00000000000000000000000a00000000reloc/etc070701000063c8000041ed00000000000000000000000247ce055700000000000000200000001b00000000000000000000001200000000reloc/etc/scponly070701000063d8000081a400000002000000020000000147cde64700000002000000200000001b00000000000000000000001d00000000reloc/etc/scponly/debuglevel2 070701000063e4000081a400000002000000020000000147cd9229000000d8000000200000001b00000000000000000000002300000000reloc/etc/scponly/scponly.binaries/usr/lib/ssh/sftp-server /usr/bin/ls /usr/bin/scp /usr/bin/rm /usr/bin/ln /usr/bin/mv /usr/bin/chmod /usr/bin/chown /usr/bin/chgrp /usr/bin/mkdir /usr/bin/rmdir /usr/bin/pwd /usr/bin/groups /usr/bin/id /usr/bin/echo 070701000063ee000081a400000002000000020000000147cdb3a80000005f000000200000001b00000000000000000000002300000000reloc/etc/scponly/scponly.defaultsdefaultusername="scponly" defaulthomedirprefix="/home/secure" defaultwriteabledir="_USERNAME_" 070701000063f8000041ed00000000000000000000000347ce055700000000000000200000001b00000000000000000000000a00000000reloc/man070701000063fc000041ed00000000000000000000000247ce055700000000000000200000001b00000000000000000000000f00000000reloc/man/man8070701000063fe000081a400000002000000020000000147cd855c00001402000000200000001b00000000000000000000001900000000reloc/man/man8/scponly.8.\" Copyright 2001, 2002, 2003 joe@sublimation.org. .\" All rights reserved. .Dd Sept 03, 2002 .Dt scponly 8 .Sh NAME .Nm scponly .Sh SYNOPSIS .Nm .Nd limited shell for secure file transfers .Sh DESCRIPTION .Nm is an alternative "shell" (of sorts) for system administrators who would like to provide access to remote users to both read and write local files without providing any remote execution privileges. Functionally, it is best described as a wrapper to the trusted suite of ssh applications. .Pp A typical usage of .Nm is in creating a semi-public account not unlike the concept of anonymous login for ftp. This allows an administrator to share files in the same way an anonymous ftp setup would, only employing all the protection that ssh provides. This is especially significant if you consider that ftp authentications traverse public networks in a plaintext format. .Pp Instead of just a single anonymous user, .Nm supports configuring potentially many users, each of which could be set up to provide access to distinct directory trees. Aside from the installation details, each of these users would have their default shell in /etc/passwd set to "/usr/local/bin/scponly" (or wherever you choose to install it). This would mean users with this shell can neither login interactively or execute commands remotely. They can however, scp files in and out, governed by the usual Unixish file permissions. .Sh FEATURES .Bl -bullet .It Logging: .Nm logs time, client IP address, username, and the actual request to syslog. .It chroot: .Nm can chroot to the user's home directory (or any other directory the user has permissions for), disallowing access to the rest of the filesystem. .It sftp compatibility: My testing of sftp against an .Nm user worked great. This is probably the cleanest and most usable way for an .Nm user to access files. .It Security checks: root login is disallowed (though root should never be configured to be using .Nm as the default shell.) .It WinSCP 2.0 compatibility: .Nm can be compiled in WinSCP compatibility mode that will permit a "semi-interactive" shell that WinSCP can use. .It gftp compatibility: .Nm is compatible with gftp if you set "use ssh2 sftp subsys" in your gftp options. .El .Pp .Nm doesn't do anything to manage read/write permissions. The ssh applications already do that just fine. If you use .Nm , be aware that good old Unix-style file permissions are still doing the work of protecting your files. .Sh NOTES .Bl -bullet .It As recent as June 26, 2002, vulnerabilities have been discovered in OpenSSH. There is also a SSH1 protocol vulnerability. If you're going to use .Nm , be aware it is no more secure than the ssh installation it runs on. .It I've since discovered that ssh.com's commercial ssh offering supports BOTH "dummy users" as well as functionality paralleling .Nm . I have not been able to find any notes on these features, but I did read that they exist. I will make a point to include more information later. It appears that OpenSSH does not yet support these features. At this time, I have no plans to end-of-life .Nm , though ultimately, I recognize that .Nm should eventually become just a feature of whichever sshd you may run. .El .Sh FILES .Bl -tag -width base/sup/collection/checkouts*xx -compact .It Pa /usr/local/bin/scponly The default location for the shell itself. .It Pa /usr/local/sbin/scponlyc The default location for the chrooted version of .Nm .It Pa /etc/shells To be a proper shell, it has to be included here. .El .Sh SEE ALSO .Xr chroot 2 , .Xr ssh 1 , .Xr scp 1 , .Xr sftp 1 , .Xr shells 5 , .Xr sshd 8 . .Sh AUTHORS .An Joe Boyle Aq joe@sublimation.org . .Sh LEGALITIES Copyright (C) 2001, 2002, 2003 .An Joe Boyle Aq joe@sublimation.org . .Pp Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: .Pp 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. .Pp 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. .Pp THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 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. .Sh BUGS Versions prior to 2.4 have a vulnerability wherein the .ssh/environment file can be used to override $PATH and $LD_LIBRARY_PATH vars, compromising the shell. 070701000065a4000041ed00000000000000000000000247ce055700000000000000200000001b00000000000000000000000b00000000reloc/sbin070701000065c4000081ed00000000000000000000000147cd855d00010144000000200000001b00000000000000000000001400000000reloc/sbin/scponlycELF44 (44::::P=`=`/usr/lib/ld.so.1kj "$&()-12345678:;>?@ACDEGHIJKNOQRVWX[]^_abcdghi  !#%'*+,./09<=BFLMPSTUYZ\`ef'l ;<<  =PF!;d% <x 2< I'`L PAV;]!` r;xt <`D $Tt <@H@!;$ ( ;(<$;- =,<: ?@.= 5A?<<E:_=g;@H@n;u- {, L F   - ( AJ;<= <  H+ \Ac%H4 t;{A?0?()P $ ;.;@;'<S< O<<$2<0<<; //@H: M@`  @H@H)M@H @H X@( K@b 8@H -@H`"L``"@M @G˒`?@G0@G֒ @G`@! M@`@GА@GِM@G ؐ @G@@K&bp@G @@ @2 w@ݐ@Ð *c$`@Gc(`"ؐ M@G @G  @Ma @Gp0@vMa  @Gf0@l+MaP @G]c(`1@G'T "@GT@Gs X@Gp h@@Go@GmKV @G'@G@Eጚ M@G4ah@GY@{c(`2d@1!M @a@&M @Gak @Аv@!M @a?@G,!K@G9!M!b@F 㿐 L`"&J@F 2  &K ` &+@`& 㿐@G!"` %M@8  `0@F,``$㿐@@Fف㿐`@FѰ `㿐`8 @F `(@`) @F@F  @Fې  @`  ,@@F `ݐ0M@F"@`@FU @F0@Fߒ 㿈b'쀤`4 @  @F 2)```4@Y1@!M bH@ `"`%M@J!x@ ` @[   ``2@\ @2@` M b@F! 0P@'1@!M @b` ``#a#!%``@FV?Ѡ@! M@c` ` ?@ `?"`@@M c0@E "`@ @ M@Eђc㿐b   @E@ "  2  `2 ``" 㿐@Fb @E `@E@Eْ  20@E@Eʁ@Eː!@E`'X#M "XJ`" Xc耢  $J`2  X$``!@E &` &@Eg " '\*X `'\$\^c耢 \'XK@&@Enx@E}!'` *    @E   ,`2,`ܛ, @ @ `b  @  @EP,``&@Eq,,`Y& + ` *`8`  ;`@ + b`2  㿐N@EU N@EP  Mc@D1N#H h @D#H㿐@E @E @E@E/ @D@㿐N@E%`@@D%Nh  # @ @E hN@E`hN  @E  2㿐N@D! <@E -@D# @@D N@Da5 aN @a8a Nah@  @D"h $"@D 0rN a@Db 0@Db#@D a@D[_N a㾈! N@DT!`!'%Nሐ @Z   ` @DZ@D+ሔN b@ 㾐#L`G` a`2  `? `?@ N@D( L`G, @D1a  &@ `G `+`,`G8`&@㿐c@ *c@%'N)N+N@DB0  @@@ "@`@`0  @Cɒ"X`@@b`㿐@C@C`?`?@" @C` `@C   @C@C֔0N@CՐ"@Cv 㿐/CT`@?㿐㿠S㿠/usr/lib/ssh/sftp-server/usr/bin/ls/usr/bin/chmod/usr/bin/chown/usr/bin/chgrp/usr/bin/mkdir/usr/bin/rmdir/usr/bin/scp/usr/bin/ln/usr/bin/mv/usr/bin/rmcd/usr/bin/groups/usr/bin/pwd/usr/bin/echof:l:SoFdfl:prtvBCc:i:P:q1246S:o:F:/usr/local/etc/scponly/debuglevelr%uscponlyopened log at LOG_AUTH, opts 0x%08x//%sSetting homedir to %schrooting to dir: "%s"chdiring to dir: "%s"setting uid to %uscponly completedbad request: %s [%s]entering WinSCP compatibility mode [%s]failed WinSCP compatibility mode [%s]couldn't revert to my real uid. seteuid: %mchdir: %mcouldn't chdir to %s [%s]chroot: %mcouldn't chroot to %s [%s]chroot dir writable by group: %schroot dir writable by other: %schroot dir not owned by root: %scouldnt stat chroot dir: %s with errno %u%s is misconfigured. contact sysadmin.incorrect number of argsroot login denied [%s]%d arguments in total. arg %u is %sscponlycchrooted binary in place, will chroot()echo "WinSCP: this is begin-of-file" ; WinSCP: this is begin-of-file ; echo "WinSCP: this is end-of-file:0"echo "$status"echo "$?"0unset unalias ; echo "WinSCP: this is end-of-file:$status" ; echo "WinSCP: this is end-of-file:$?"command wasn't terminated with %s, %s or %s %s%d WinSCP: this is end-of-file:test -x /usr/lib/sftp-server && exec /usr/lib/sftp-server test -x /usr/local/lib/sftp-server && exec /usr/local/lib/sftp-server exec sftp-serverprocessing request: "%s" echo -n xsftp ; xsftpbogus chdir request: %s (%s)chdir: %s (%s)malloccommand not permitted by scponlydenied request: %s [%s]denied request: %s (resolved to: %s) [%s]running: %s (%s)failed: %s with error %s(%u) (%s)about to exec "%s" (%s)requested command (%s) tried to use disallowed argument (%s))rejected because of invalid chars (%s)winscp3 compat correcting to: "[%s]" --reallocNot using getopt processing on cmd %s (%s)Verifying that %s is an allowed option (%s)%s is not permitted for use with %s (%s))Using getopt processing for cmd %s (%s)getopt processing returned '%c' (%s)an unrecognized option was encountered while processing cmd %s (arg was %s) (%s))option '%c' or a related long option is not permitted for use with %s (arg was %s) (%s)) no ip?!SSH_CLIENTSSH2_CLIENTusername: %s(%d), IP/port: %sabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890 ./-*\_'":?()=invalid characters in scp command! here:%s try using a wildcard to match this file/directory USER%s's uid doesn't match getuid(): %d [%s]determined USER is "%s" from environmentretrieved home directory of "%s" for user "%s"no knowledge of username %s [%s]no knowledge of uid %d [%s]%s=Looking for '%s' in '%s''%s' env entry now reads '%s'%s=%sFound "%s" and setting it to "%s"Unable to set environment var "%s" to "%s"Unable to find "%s" in the environmentmalloc=`>? ???>00<0H0T0`0l0x00000000000000 0,080D0P0\0h0t0000000000000~0{0x(0u40r@0oL0lX0id0fp0c - - D o"KooL oo:-.. .0.@.P.`.p.......-.?0.p..?0>D < - - - : :=`>>>>???]Jc ?%>0- ?OL j J v>>>>e ? ???7  @G?H?>-\ - />v><?H>Vk'l t;{<< =PF!;d <x < '`L A;!` ;t <`D $Tt <!@H@!&;+$ A( S;(J<$O;V- \=,c<j: ?@= A<<:=; @H@;- , L F    0- =( IAPJU;^<g=Y n< sH+ A%H4 ;A?0?(")P .$ B E? `U yV \ ] ^ ր_ a b "c 7p Py fz ~{ } ~ À ڀ4LgҀ)D\uɀ7RhD_,s37ABـHN ["\9]Q^j_`agǀkހsw y$z>{X|r}€*;_^΀5]ŀހ #;!U&m,-./ǀc߀de f$]gwhƀ)>9O8Ā܂ Ҁ!!"."MX"cZ"z"y"Ђ"$΀&g&&&G&̀' r'#'d((),?&,Y//8/߀/0000R0l:01r1Ȁ1292Y23G@3_3V34*m4C4Y4o434ƀ85c554&5p5555΂5؂56Q6Z6$7;$7G@7S@DDD(D4D<DPD`DlD DDDD'D.D2D2D6 D7D8D7 D8(DC(D:@D*XD<XD>tD?D@DADFDGDJDQDVD[DDDD0DDDdDDDDDD%DDDD<DDDTD\DlDDD]DXDSDID)D$,DHD `DpDDDDD7h@7h7@ 7@273hD7@273h\7@ `(8$(8$ 8 @ D DDD D(D0D<DD81@D8F$L8G$"8e@!D"D*D(D*D)D+D=$D@`DAlDOxDPDFDMDKDLDLD.D-D.D/D1D2 D4D60DQ48v@'8@(8@)48$<8$TDDTDYD[ DYD[D[De DiPDgTDiXDldDmpDltDmxDoDsDzD{DuDqD}D~8ȀU8@V8@W8$8$$9 @DDDD D(D0D4DDDLDPDTDXD\D`DtDDDDDDDDDD D@De@DfDDeHDfPDTD\DlDDDDDDjDDDDDDDDDD $DY8D`HDbPDddD[xD\D^D(D(D+D.D2D3$D40D5<D9DD:LD;TDB\DBdDDlDEDFDKDRDADDDD(DHDPDXD`DdDhDk9@9%@93@9I@9\@9pX9@9@9@@9@T9؀-T\9$9 9 : : :? :N :_ : : : X: ; ;Id1 dd%<4^xH$S}c}0U~%+BcӀi"<A:[JmRWŀڀ$k! % ( E6 Z< p= D H I ʀJ O X Y *h Bi [q vw x } ʀ  ! > Z w π )> B? ]U vV \ ] ^ Ӏ_ a b c 4p My cz {{ } ~  ׀ 1Idπ&AYrƀ4OeA\,p37ABրHN[\6]N^g_`agĀkۀswy!z;{U|o}'8\[ˀ2Z€ۀ  8!R&j,-./Āc܀de f!ZgthÀ)>6|O5|ق π!!"."JX"`Z"w"y"͂"$ˀ&d&&&&Ƃ&߂&'Ӏ(:(P(f(3(8(c) )+&)g)})))**#*b$++ +!++$2+@1+@1 D2+$+$8,@7,)@7D8D;D@DA(DF@DH\DI`D<hDBhDDhDBlDCpDD|DJ|,9$,:$Q <,O@PDQDSDW DSDVDWDTDWDY(D[@DZXD^p,[@R,j@S,v@Tp,$x,$a ,@`DaDbDc ,$,$g ,@fDgDiDj,@h,,$4,$n!,@mDnDuDuDwDy0D{4D}@D~LD\DtDxDDDDDDDDDDDD-@o-@p-@q--@r-=@s-H@s-V$-W$!-s@DDDD DDDDD D0DDDTDtD|DDDD D DDDD@DDDPDTDdDhDlDpDtDxD|DDDDD0DXD X-~@-@-@-@-X-$`-$$T-@DDDD DD(D<D HDPDlD!l-@l.$t.$$$."@#D$D%D$D& D'D' D)(D+8D0TD-dD.lD3x.3@%.>@&x.T$.U$6%H.n@5D6D<D?D>DAD? DA(D>,DA0DC8DYTD_lD`|DbDeDcDeDeDgDgDiDiDEDGDHDGDHDGDHDKDP DRDkDl Dl$.@;.;`.;X.;\.@;.@<.@<,.$4.$s&|/@qDsDtDDtD}DD} D$D4DLDDDDDD/!@t/0u/9@v/F@v/S@v/\$/]$'`/k@/x@ DDDDD D$D0D4D8DD/@ D/$L/$'DDDDD$D0D4D\/(?H/&7/@d/$l/$(0 @0@DDDDD0DHDTD`0%$h0&$(09@DDD D$D(D,DLDTDhDxD0I@0V$0W$)DDDDD0DHDtDtD|DD DDDDD DH0j@0@H0$P0$*X0@0@DDDD$D(D(D@DTD"lD$DDDD D%0@0Ѐ0$0$'+$1@' 1 @' D'D,D' D,D.D/$D10D3LD5lD9D6D7D6D:1&)@G1&*11$12$<+D<D?DBDB DD,DE@DEDDFLDGXDLpDHDJ1R@>1a@?1q$1r$,1@1@DDDDD$D$DHDPDXD\DlD|DDDDDD1@1@1@PX1@d1$1d-T.interp.hash.dynsym.dynstr.SUNW_version.rela.got.rela.bss.rela.plt.text.init.fini.rodata.dynamic.data.ctors.dtors.eh_frame.jcr.data.rel.local.symtab.strtab.comment.stab.shstrtab.stabstrscponly.c/src/scponly-4.8/scponly.cgcc2_compiled.int:t(0,1)=r(0,1);-2147483648;2147483647;char:t(0,2)=r(0,2);0;127;long int:t(0,3)=r(0,3);-2147483648;2147483647;unsigned int:t(0,4)=r(0,4);000000000000000000000000;000000000000037777777777;long unsigned int:t(0,5)=r(0,5);000000000000000000000000;000000000000037777777777;long long int:t(0,6)=@s64;r(0,6);001000000000000000000000;000777777777777777777777;long long unsigned int:t(0,7)=@s64;r(0,7);000000000000000000000000;001777777777777777777777;short int:t(0,8)=@s16;r(0,8);-32768;32767;short unsigned int:t(0,9)=@s16;r(0,9);0;65535;signed char:t(0,10)=@s8;r(0,10);-128;127;unsigned char:t(0,11)=@s8;r(0,11);0;255;__int128_t:t(0,12)=@s128;r(0,12);000000000000000000000000;0377777777777777777777777777777777;__uint128_t:t(0,13)=@s128;r(0,13);000000000000000000000000;0377777777777777777777777777777777;float:t(0,14)=r(0,1);4;0;double:t(0,15)=r(0,1);8;0;long double:t(0,16)=r(0,1);16;0;complex int:t(0,17)=s8real:(0,1),0,32;imag:(0,1),32,32;;complex float:t(0,18)=R3;8;0;complex double:t(0,19)=R4;16;0;complex long double:t(0,20)=R5;32;0;__builtin_va_list:t(0,21)=*(0,22)=(0,22)_Bool:t(0,23)=@s8;-16;scponly.c/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdio.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdarg.h__gnuc_va_list:t(3,1)=(0,21)/usr/include/sys/feature_tests.h/usr/include/sys/ccompile.h/usr/include/sys/isa_defs.h/usr/include/iso/stdio_iso.h/usr/include/sys/va_list.h__va_list:t(8,1)=(0,21)/usr/include/stdio_tag.h__FILE:t(9,1)=(9,2)=xs__FILE:/usr/include/stdio_impl.h__FILE:T(9,2)=s16_cnt:(0,1),0,32;_ptr:(10,1)=*(0,11),32,32;_base:(10,1),64,32;_flag:(0,11),96,8;_file:(0,11),104,8;__orientation:(0,4),112,2;__ionolock:(0,4),114,1;__seekable:(0,4),115,1;__extendedfd:(0,4),116,1;__xf_nocheck:(0,4),117,1;__filler:(0,4),118,10;;__longlong_t:t(7,1)=(0,6)FILE:t(7,2)=(9,1)size_t:t(7,3)=(0,4)fpos_t:t(7,4)=(0,3)/usr/include/iso/stdio_c99.hoff_t:t(2,1)=(0,3)off64_t:t(2,2)=(7,1)fpos64_t:t(2,3)=(7,1)/usr/include/string.h/usr/include/iso/string_iso.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.h/usr/include/sys/machtypes.h_label_t:T(15,1)=s8val:(15,2)=ar(15,3)=r(15,3);000000000000000000000000;000000000000037777777777;;0;1;(0,3),0,64;;label_t:t(15,4)=(15,1)lock_t:t(15,5)=(0,11)/usr/include/sys/int_types.hint8_t:t(16,1)=(0,2)int16_t:t(16,2)=(0,8)int32_t:t(16,3)=(0,1)int64_t:t(16,4)=(0,6)uint8_t:t(16,5)=(0,11)uint16_t:t(16,6)=(0,9)uint32_t:t(16,7)=(0,4)uint64_t:t(16,8)=(0,7)intmax_t:t(16,9)=(16,4)uintmax_t:t(16,10)=(16,8)intptr_t:t(16,11)=(0,1)uintptr_t:t(16,12)=(0,4)int_fast8_t:t(16,13)=(0,2)int_fast16_t:t(16,14)=(0,1)int_fast32_t:t(16,15)=(0,1)int_fast64_t:t(16,16)=(0,6)uint_fast8_t:t(16,17)=(0,11)uint_fast16_t:t(16,18)=(0,4)uint_fast32_t:t(16,19)=(0,4)uint_fast64_t:t(16,20)=(0,7)int_least8_t:t(16,21)=(0,2)int_least16_t:t(16,22)=(0,8)int_least32_t:t(16,23)=(0,1)int_least64_t:t(16,24)=(0,6)uint_least8_t:t(16,25)=(0,11)uint_least16_t:t(16,26)=(0,9)uint_least32_t:t(16,27)=(0,4)uint_least64_t:t(16,28)=(0,7)longlong_t:t(14,1)=(0,6)u_longlong_t:t(14,2)=(0,7)t_scalar_t:t(14,3)=(0,3)t_uscalar_t:t(14,4)=(0,5)uchar_t:t(14,5)=(0,11)ushort_t:t(14,6)=(0,9)uint_t:t(14,7)=(0,4)ulong_t:t(14,8)=(0,5)caddr_t:t(14,9)=(14,10)=*(0,2)daddr_t:t(14,11)=(0,3)cnt_t:t(14,12)=(0,8)ptrdiff_t:t(14,13)=(0,1)pfn_t:t(14,14)=(14,8)pgcnt_t:t(14,15)=(14,8)spgcnt_t:t(14,16)=(0,3)use_t:t(14,17)=(14,5)sysid_t:t(14,18)=(0,8)index_t:t(14,19)=(0,8)timeout_id_t:t(14,20)=(14,21)=*(0,22)bufcall_id_t:t(14,22)=(14,21)ino_t:t(14,23)=(14,8)blkcnt_t:t(14,24)=(0,3)fsblkcnt_t:t(14,25)=(14,8)fsfilcnt_t:t(14,26)=(14,8)ino64_t:t(14,27)=(14,2)blkcnt64_t:t(14,28)=(14,1)fsblkcnt64_t:t(14,29)=(14,2)fsfilcnt64_t:t(14,30)=(14,2)blksize_t:t(14,31)=(0,3) :T(14,32)=eB_FALSE:0,B_TRUE:1,;boolean_t:t(14,33)=(14,32)pad64_t:t(14,34)=(16,4)upad64_t:t(14,35)=(16,8)pad128_t:t(14,36)=(14,37)=u16_q:(0,16),0,128;_l:(14,38)=ar(15,3);0;3;(16,3),0,128;;upad128_t:t(14,39)=(14,40)=u16_q:(0,16),0,128;_l:(14,41)=ar(15,3);0;3;(16,7),0,128;;offset_t:t(14,42)=(14,1)u_offset_t:t(14,43)=(14,2)len_t:t(14,44)=(14,2)diskaddr_t:t(14,45)=(14,2)lloff_t:t(14,46)=(14,47)=u8_f:(14,42),0,64;_p:(14,48)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;lldaddr_t:t(14,49)=(14,50)=u8_f:(14,1),0,64;_p:(14,51)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;k_fltset_t:t(14,52)=(14,7)id_t:t(14,53)=(0,3)useconds_t:t(14,54)=(14,7)suseconds_t:t(14,55)=(0,3)major_t:t(14,56)=(14,8)minor_t:t(14,57)=(14,8)pri_t:t(14,58)=(0,8)cpu_flag_t:t(14,59)=(14,6)o_mode_t:t(14,60)=(14,6)o_dev_t:t(14,61)=(0,8)o_uid_t:t(14,62)=(14,6)o_gid_t:t(14,63)=(14,62)o_nlink_t:t(14,64)=(0,8)o_pid_t:t(14,65)=(0,8)o_ino_t:t(14,66)=(14,6)key_t:t(14,67)=(0,1)mode_t:t(14,68)=(14,8)uid_t:t(14,69)=(0,3)gid_t:t(14,70)=(14,69)taskid_t:t(14,71)=(14,53)projid_t:t(14,72)=(14,53)poolid_t:t(14,73)=(14,53)zoneid_t:t(14,74)=(14,53)ctid_t:t(14,75)=(14,53)pthread_t:t(14,76)=(14,7)pthread_key_t:t(14,77)=(14,7)_pthread_mutex:T(14,78)=s24__pthread_mutex_flags:(14,79)=s8__pthread_mutex_flag1:(16,6),0,16;__pthread_mutex_flag2:(16,5),16,8;__pthread_mutex_ceiling:(16,5),24,8;__pthread_mutex_type:(16,6),32,16;__pthread_mutex_magic:(16,6),48,16;;,0,64;__pthread_mutex_lock:(14,80)=u8__pthread_mutex_lock64:(14,81)=s8__pthread_mutex_pad:(14,82)=ar(15,3);0;7;(16,5),0,64;;,0,64;__pthread_mutex_lock32:(14,83)=s8__pthread_ownerpid:(16,7),0,32;__pthread_lockword:(16,7),32,32;;,0,64;__pthread_mutex_owner64:(14,35),0,64;;,64,64;__pthread_mutex_data:(14,35),128,64;;pthread_mutex_t:t(14,84)=(14,78)_pthread_cond:T(14,85)=s16__pthread_cond_flags:(14,86)=s8__pthread_cond_flag:(14,87)=ar(15,3);0;3;(16,5),0,32;__pthread_cond_type:(16,6),32,16;__pthread_cond_magic:(16,6),48,16;;,0,64;__pthread_cond_data:(14,35),64,64;;pthread_cond_t:t(14,88)=(14,85)_pthread_rwlock:T(14,89)=s64__pthread_rwlock_readers:(16,3),0,32;__pthread_rwlock_type:(16,6),32,16;__pthread_rwlock_magic:(16,6),48,16;__pthread_rwlock_mutex:(14,84),64,192;__pthread_rwlock_readercv:(14,88),256,128;__pthread_rwlock_writercv:(14,88),384,128;;pthread_rwlock_t:t(14,90)=(14,89)pthread_barrier_t:t(14,91)=(14,92)=s64__pthread_barrier_count:(16,7),0,32;__pthread_barrier_current:(16,7),32,32;__pthread_barrier_cycle:(14,35),64,64;__pthread_barrier_reserved:(14,35),128,64;__pthread_barrier_lock:(14,84),192,192;__pthread_barrier_cond:(14,88),384,128;;pthread_spinlock_t:t(14,93)=(14,84)_pthread_attr:T(14,94)=s4__pthread_attrp:(14,21),0,32;;pthread_attr_t:t(14,95)=(14,94)_pthread_mutexattr:T(14,96)=s4__pthread_mutexattrp:(14,21),0,32;;pthread_mutexattr_t:t(14,97)=(14,96)_pthread_condattr:T(14,98)=s4__pthread_condattrp:(14,21),0,32;;pthread_condattr_t:t(14,99)=(14,98)_once:T(14,100)=s32__pthread_once_pad:(14,101)=ar(15,3);0;3;(14,35),0,256;;pthread_once_t:t(14,102)=(14,100)_pthread_rwlockattr:T(14,103)=s4__pthread_rwlockattrp:(14,21),0,32;;pthread_rwlockattr_t:t(14,104)=(14,103)pthread_barrierattr_t:t(14,105)=(14,106)=s4__pthread_barrierattrp:(14,21),0,32;;dev_t:t(14,107)=(14,8)nlink_t:t(14,108)=(14,8)pid_t:t(14,109)=(0,3)ssize_t:t(14,110)=(0,1)time_t:t(14,111)=(0,3)clock_t:t(14,112)=(0,3)clockid_t:t(14,113)=(0,1)timer_t:t(14,114)=(0,1)unchar:t(14,115)=(0,11)ushort:t(14,116)=(0,9)uint:t(14,117)=(0,4)ulong:t(14,118)=(0,5)u_char:t(14,119)=(0,11)u_short:t(14,120)=(0,9)u_int:t(14,121)=(0,4)u_long:t(14,122)=(0,5)_quad:T(14,123)=s8val:(14,124)=ar(15,3);0;1;(0,1),0,64;;quad_t:t(14,125)=(14,123)quad:t(14,126)=(14,125)/usr/include/sys/select.h/usr/include/sys/time_impl.htimespec:T(18,1)=s8tv_sec:(14,111),0,32;tv_nsec:(0,3),32,32;;timespec_t:t(18,2)=(18,1)timestruc_t:t(18,3)=(18,1)itimerspec:T(18,4)=s16it_interval:(18,1),0,64;it_value:(18,1),64,64;;itimerspec_t:t(18,5)=(18,4)/usr/include/sys/time.htimeval:T(19,1)=s8tv_sec:(14,111),0,32;tv_usec:(14,55),32,32;;timezone:T(19,2)=s8tz_minuteswest:(0,1),0,32;tz_dsttime:(0,1),32,32;;/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.hitimerval:T(19,3)=s16it_interval:(19,1),0,64;it_value:(19,1),64,64;;hrtime_t:t(19,4)=(14,1)/usr/include/time.h/usr/include/iso/time_iso.htm:T(22,1)=s36tm_sec:(0,1),0,32;tm_min:(0,1),32,32;tm_hour:(0,1),64,32;tm_mday:(0,1),96,32;tm_mon:(0,1),128,32;tm_year:(0,1),160,32;tm_wday:(0,1),192,32;tm_yday:(0,1),224,32;tm_isdst:(0,1),256,32;;sigval:T(21,1)=u4sival_int:(0,1),0,32;sival_ptr:(14,21),0,32;;sigevent:T(21,2)=s24sigev_notify:(0,1),0,32;sigev_signo:(0,1),32,32;sigev_value:(21,1),64,32;sigev_notify_function:(21,3)=*(21,4)=f(0,22),96,32;sigev_notify_attributes:(21,5)=*(14,95),128,32;__sigev_pad2:(0,1),160,32;;/usr/include/sys/select.hsigset_t:t(17,1)=(17,2)=s16__sigbits:(17,3)=ar(15,3);0;3;(0,4),0,128;;fd_mask:t(17,4)=(0,3)fds_mask:t(17,5)=(0,3)fd_set:T(17,6)=s128fds_bits:(17,7)=ar(15,3);0;31;(0,3),0,1024;;fd_set:t(17,8)=(17,6)/usr/include/sys/stat.hstat:T(24,1)=s136st_dev:(14,107),0,32;st_pad1:(24,2)=ar(15,3);0;2;(0,3),32,96;st_ino:(14,23),128,32;st_mode:(14,68),160,32;st_nlink:(14,108),192,32;st_uid:(14,69),224,32;st_gid:(14,70),256,32;st_rdev:(14,107),288,32;st_pad2:(15,2),320,64;st_size:(2,1),384,32;st_pad3:(0,3),416,32;st_atim:(18,3),448,64;st_mtim:(18,3),512,64;st_ctim:(18,3),576,64;st_blksize:(14,31),640,32;st_blocks:(14,24),672,32;st_fstype:(24,3)=ar(15,3);0;15;(0,2),704,128;st_pad4:(24,4)=ar(15,3);0;7;(0,3),832,256;;stat64:T(24,5)=s152st_dev:(14,107),0,32;st_pad1:(24,2),32,96;st_ino:(14,27),128,64;st_mode:(14,68),192,32;st_nlink:(14,108),224,32;st_uid:(14,69),256,32;st_gid:(14,70),288,32;st_rdev:(14,107),320,32;st_pad2:(15,2),352,64;st_size:(2,2),448,64;st_atim:(18,3),512,64;st_mtim:(18,3),576,64;st_ctim:(18,3),640,64;st_blksize:(14,31),704,32;st_blocks:(14,28),768,64;st_fstype:(24,3),832,128;st_pad4:(24,4),960,256;;/usr/include/sys/stat_impl.h/usr/include/sys/wait.h/usr/include/sys/resource.hrlim_t:t(27,1)=(0,5)rlimit:T(27,2)=s8rlim_cur:(27,1),0,32;rlim_max:(27,1),32,32;;rlim64_t:t(27,3)=(14,2)rlimit64:T(27,4)=s16rlim_cur:(27,3),0,64;rlim_max:(27,3),64,64;;rusage:T(27,5)=s72ru_utime:(19,1),0,64;ru_stime:(19,1),64,64;ru_maxrss:(0,3),128,32;ru_ixrss:(0,3),160,32;ru_idrss:(0,3),192,32;ru_isrss:(0,3),224,32;ru_minflt:(0,3),256,32;ru_majflt:(0,3),288,32;ru_nswap:(0,3),320,32;ru_inblock:(0,3),352,32;ru_oublock:(0,3),384,32;ru_msgsnd:(0,3),416,32;ru_msgrcv:(0,3),448,32;ru_nsignals:(0,3),480,32;ru_nvcsw:(0,3),512,32;ru_nivcsw:(0,3),544,32;;/usr/include/sys/siginfo.h/usr/include/sys/machsig.hsiginfo:T(28,1)=s128si_signo:(0,1),0,32;si_code:(0,1),32,32;si_errno:(0,1),64,32;__data:(28,2)=u116__pad:(28,3)=ar(15,3);0;28;(0,1),0,928;__proc:(28,4)=s24__pid:(14,109),0,32;__pdata:(28,5)=u12__kill:(28,6)=s8__uid:(14,69),0,32;__value:(21,1),32,32;;,0,64;__cld:(28,7)=s12__utime:(14,112),0,32;__status:(0,1),32,32;__stime:(14,112),64,32;;,0,96;;,32,96;__ctid:(14,75),128,32;__zoneid:(14,74),160,32;;,0,192;__fault:(28,8)=s12__addr:(14,21),0,32;__trapno:(0,1),32,32;__pc:(14,9),64,32;;,0,96;__file:(28,9)=s8__fd:(0,1),0,32;__band:(0,3),32,32;;,0,64;__prof:(28,10)=s88__faddr:(14,9),0,32;__tstamp:(18,3),32,64;__syscall:(0,8),96,16;__nsysarg:(0,2),112,8;__fault:(0,2),120,8;__sysarg:(24,4),128,256;__mstate:(28,11)=ar(15,3);0;9;(0,1),384,320;;,0,704;__rctl:(28,12)=s4__entity:(16,3),0,32;;,0,32;;,96,928;;siginfo_t:t(28,13)=(28,1)k_siginfo:T(28,14)=s36si_signo:(0,1),0,32;si_code:(0,1),32,32;si_errno:(0,1),64,32;__data:(28,15)=u24__proc:(28,16)=s24__pid:(14,109),0,32;__pdata:(28,17)=u12__kill:(28,18)=s8__uid:(14,69),0,32;__value:(21,1),32,32;;,0,64;__cld:(28,19)=s12__utime:(14,112),0,32;__status:(0,1),32,32;__stime:(14,112),64,32;;,0,96;;,32,96;__ctid:(14,75),128,32;__zoneid:(14,74),160,32;;,0,192;__fault:(28,20)=s12__addr:(14,21),0,32;__trapno:(0,1),32,32;__pc:(14,9),64,32;;,0,96;__file:(28,21)=s8__fd:(0,1),0,32;__band:(0,3),32,32;;,0,64;__prof:(28,22)=s16__faddr:(14,9),0,32;__tstamp:(18,3),32,64;__syscall:(0,8),96,16;__nsysarg:(0,2),112,8;__fault:(0,2),120,8;;,0,128;__rctl:(28,23)=s4__entity:(16,3),0,32;;,0,32;;,96,192;;k_siginfo_t:t(28,24)=(28,14)sigqueue:T(28,25)=s52sq_next:(28,26)=*(28,25),0,32;sq_info:(28,24),32,288;sq_func:(28,27)=*(28,28)=f(0,22),320,32;sq_backptr:(14,21),352,32;sq_external:(0,1),384,32;;sigqueue_t:t(28,29)=(28,25)/usr/include/sys/procset.h/usr/include/sys/signal.h/usr/include/sys/iso/signal_iso.h/usr/include/sys/unistd.hk_sigset_t:t(31,1)=(31,2)=s8__sigbits:(31,3)=ar(15,3);0;1;(0,4),0,64;;sigaction:T(31,4)=s32sa_flags:(0,1),0,32;_funcptr:(31,5)=u4_handler:(31,6)=*(31,7)=f(0,22),0,32;_sigaction:(31,8)=*(31,9)=f(0,22),0,32;;,32,32;sa_mask:(17,1),64,128;sa_resv:(14,124),192,64;;sigaltstack:T(31,10)=s12ss_sp:(14,21),0,32;ss_size:(7,3),32,32;ss_flags:(0,1),64,32;;stack_t:t(31,11)=(31,10)signotify_id:T(31,12)=s12sn_pid:(14,109),0,32;sn_index:(0,1),32,32;sn_pad:(0,1),64,32;;signotify_id_t:t(31,13)=(31,12)sigstack:T(31,14)=s8ss_sp:(14,21),0,32;ss_onstack:(0,1),32,32;;idtype:T(30,1)=eP_PID:0,P_PPID:1,P_PGID:2,P_SID:3,P_CID:4,P_UID:5,P_GID:6,P_ALL:7,P_LWPID:8,P_TASKID:9,P_PROJID:10,P_POOLID:11,P_ZONEID:12,P_CTID:13,P_CPUID:14,P_PSETID:15,;idtype_t:t(30,2)=(30,1)idop:T(30,3)=ePOP_DIFF:0,POP_AND:1,POP_OR:2,POP_XOR:3,;idop_t:t(30,4)=(30,3)procset:T(30,5)=s20p_op:(30,4),0,32;p_lidtype:(30,2),32,32;p_lid:(14,53),64,32;p_ridtype:(30,2),96,32;p_rid:(14,53),128,32;;procset_t:t(30,6)=(30,5)/usr/include/unistd.h/usr/include/stdlib.h/usr/include/iso/stdlib_iso.hdiv_t:t(36,1)=(36,2)=s8quot:(0,1),0,32;rem:(0,1),32,32;;ldiv_t:t(36,3)=(36,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;wchar_t:t(36,5)=(0,3)/usr/include/iso/stdlib_c99.hlldiv_t:t(37,1)=(37,2)=s16quot:(0,6),0,64;rem:(0,6),64,64;;/usr/include/errno.h/usr/include/sys/errno.h/usr/include/syslog.h/usr/include/sys/syslog.hscponly.h/usr/include/getopt.hoption:T(43,1)=s16name:(14,10),0,32;has_arg:(0,1),32,32;flag:(43,2)=*(0,1),64,32;val:(0,1),96,32;;config.hcmd_t:t(42,1)=(42,2)=s8name:(14,10),0,32;argflag:(0,1),32,32;;cmd_arg_t:t(42,3)=(42,4)=s24name:(14,10),0,32;getoptflag:(0,1),32,32;strict:(0,1),64,32;badarg:(14,10),96,32;opts:(14,10),128,32;longopts:(42,5)=*(43,1),160,32;;main:F(0,1)argc:P(0,1)argv:P(1,1)=*(14,10)debugfile:r(1,2)=*(7,2)homedirstat:(24,1)i:r(0,1)root_dir:r(14,10)chdir_path:(1,3)=ar(15,3);0;1023;(0,2)root_dir:r(14,10)chdir_path:(1,3)i:r(0,1)winscp_transit_request:F(0,1)request:P(14,10)new_request:r(14,10)winscp_regular_request:F(0,1)request:P(14,10)new_request:r(14,10)retval:r(0,1)retzero:r(0,1)process_winscp_requests:F(0,1)linebuf:(1,3)count:r(0,1)ack:r(0,1)process_ssh_request:F(0,1)request:P(14,10)av:r(1,1)tmp_av:r(1,1)flat_request:r(14,10)tmpstring:r(14,10)tmprequest:r(14,10)bad_winscp3str:(1,4)=ar(15,3);0;144;(0,2)retval:r(0,1)reqlen:r(0,1)destdir:r(14,10)destdir:r(14,10)status:(0,1)debuglevel:G(0,1)winscp_mode:G(0,1)chrooted:G(0,1)username:G(1,5)=ar(15,3);0;31;(0,2)homedir:G(1,3)chrootdir:G(1,3)safeenv:G(1,6)=ar(15,3);0;49;(14,10)debug:G(1,7)=*(1,8)=f(0,22)commands:G(1,9)=ar(15,3);0;15;(42,1)empty_longopts:G(1,10)=ar(15,3);0;0;(43,1)dangerous_args:G(1,11)=ar(15,3);0;2;(42,3)allowed_env_vars:G(1,12)=ar(15,3);0;0;(14,10)helper.c/src/scponly-4.8/helper.cgcc2_compiled.int:t(0,1)=r(0,1);-2147483648;2147483647;char:t(0,2)=r(0,2);0;127;long int:t(0,3)=r(0,3);-2147483648;2147483647;unsigned int:t(0,4)=r(0,4);000000000000000000000000;000000000000037777777777;long unsigned int:t(0,5)=r(0,5);000000000000000000000000;000000000000037777777777;long long int:t(0,6)=@s64;r(0,6);001000000000000000000000;000777777777777777777777;long long unsigned int:t(0,7)=@s64;r(0,7);000000000000000000000000;001777777777777777777777;short int:t(0,8)=@s16;r(0,8);-32768;32767;short unsigned int:t(0,9)=@s16;r(0,9);0;65535;signed char:t(0,10)=@s8;r(0,10);-128;127;unsigned char:t(0,11)=@s8;r(0,11);0;255;__int128_t:t(0,12)=@s128;r(0,12);000000000000000000000000;0377777777777777777777777777777777;__uint128_t:t(0,13)=@s128;r(0,13);000000000000000000000000;0377777777777777777777777777777777;float:t(0,14)=r(0,1);4;0;double:t(0,15)=r(0,1);8;0;long double:t(0,16)=r(0,1);16;0;complex int:t(0,17)=s8real:(0,1),0,32;imag:(0,1),32,32;;complex float:t(0,18)=R3;8;0;complex double:t(0,19)=R4;16;0;complex long double:t(0,20)=R5;32;0;__builtin_va_list:t(0,21)=*(0,22)=(0,22)_Bool:t(0,23)=@s8;-16;helper.c/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdio.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/stdarg.h__gnuc_va_list:t(3,1)=(0,21)/usr/include/sys/feature_tests.h/usr/include/sys/ccompile.h/usr/include/sys/isa_defs.h/usr/include/iso/stdio_iso.h/usr/include/sys/va_list.h__va_list:t(8,1)=(0,21)/usr/include/stdio_tag.h__FILE:t(9,1)=(9,2)=xs__FILE:/usr/include/stdio_impl.h__FILE:T(9,2)=s16_cnt:(0,1),0,32;_ptr:(10,1)=*(0,11),32,32;_base:(10,1),64,32;_flag:(0,11),96,8;_file:(0,11),104,8;__orientation:(0,4),112,2;__ionolock:(0,4),114,1;__seekable:(0,4),115,1;__extendedfd:(0,4),116,1;__xf_nocheck:(0,4),117,1;__filler:(0,4),118,10;;__longlong_t:t(7,1)=(0,6)FILE:t(7,2)=(9,1)size_t:t(7,3)=(0,4)fpos_t:t(7,4)=(0,3)/usr/include/iso/stdio_c99.hoff_t:t(2,1)=(0,3)off64_t:t(2,2)=(7,1)fpos64_t:t(2,3)=(7,1)/usr/include/string.h/usr/include/iso/string_iso.h/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.h/usr/include/sys/machtypes.h_label_t:T(15,1)=s8val:(15,2)=ar(15,3)=r(15,3);000000000000000000000000;000000000000037777777777;;0;1;(0,3),0,64;;label_t:t(15,4)=(15,1)lock_t:t(15,5)=(0,11)/usr/include/sys/int_types.hint8_t:t(16,1)=(0,2)int16_t:t(16,2)=(0,8)int32_t:t(16,3)=(0,1)int64_t:t(16,4)=(0,6)uint8_t:t(16,5)=(0,11)uint16_t:t(16,6)=(0,9)uint32_t:t(16,7)=(0,4)uint64_t:t(16,8)=(0,7)intmax_t:t(16,9)=(16,4)uintmax_t:t(16,10)=(16,8)intptr_t:t(16,11)=(0,1)uintptr_t:t(16,12)=(0,4)int_fast8_t:t(16,13)=(0,2)int_fast16_t:t(16,14)=(0,1)int_fast32_t:t(16,15)=(0,1)int_fast64_t:t(16,16)=(0,6)uint_fast8_t:t(16,17)=(0,11)uint_fast16_t:t(16,18)=(0,4)uint_fast32_t:t(16,19)=(0,4)uint_fast64_t:t(16,20)=(0,7)int_least8_t:t(16,21)=(0,2)int_least16_t:t(16,22)=(0,8)int_least32_t:t(16,23)=(0,1)int_least64_t:t(16,24)=(0,6)uint_least8_t:t(16,25)=(0,11)uint_least16_t:t(16,26)=(0,9)uint_least32_t:t(16,27)=(0,4)uint_least64_t:t(16,28)=(0,7)longlong_t:t(14,1)=(0,6)u_longlong_t:t(14,2)=(0,7)t_scalar_t:t(14,3)=(0,3)t_uscalar_t:t(14,4)=(0,5)uchar_t:t(14,5)=(0,11)ushort_t:t(14,6)=(0,9)uint_t:t(14,7)=(0,4)ulong_t:t(14,8)=(0,5)caddr_t:t(14,9)=(14,10)=*(0,2)daddr_t:t(14,11)=(0,3)cnt_t:t(14,12)=(0,8)ptrdiff_t:t(14,13)=(0,1)pfn_t:t(14,14)=(14,8)pgcnt_t:t(14,15)=(14,8)spgcnt_t:t(14,16)=(0,3)use_t:t(14,17)=(14,5)sysid_t:t(14,18)=(0,8)index_t:t(14,19)=(0,8)timeout_id_t:t(14,20)=(14,21)=*(0,22)bufcall_id_t:t(14,22)=(14,21)ino_t:t(14,23)=(14,8)blkcnt_t:t(14,24)=(0,3)fsblkcnt_t:t(14,25)=(14,8)fsfilcnt_t:t(14,26)=(14,8)ino64_t:t(14,27)=(14,2)blkcnt64_t:t(14,28)=(14,1)fsblkcnt64_t:t(14,29)=(14,2)fsfilcnt64_t:t(14,30)=(14,2)blksize_t:t(14,31)=(0,3) :T(14,32)=eB_FALSE:0,B_TRUE:1,;boolean_t:t(14,33)=(14,32)pad64_t:t(14,34)=(16,4)upad64_t:t(14,35)=(16,8)pad128_t:t(14,36)=(14,37)=u16_q:(0,16),0,128;_l:(14,38)=ar(15,3);0;3;(16,3),0,128;;upad128_t:t(14,39)=(14,40)=u16_q:(0,16),0,128;_l:(14,41)=ar(15,3);0;3;(16,7),0,128;;offset_t:t(14,42)=(14,1)u_offset_t:t(14,43)=(14,2)len_t:t(14,44)=(14,2)diskaddr_t:t(14,45)=(14,2)lloff_t:t(14,46)=(14,47)=u8_f:(14,42),0,64;_p:(14,48)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;lldaddr_t:t(14,49)=(14,50)=u8_f:(14,1),0,64;_p:(14,51)=s8_u:(16,3),0,32;_l:(16,3),32,32;;,0,64;;k_fltset_t:t(14,52)=(14,7)id_t:t(14,53)=(0,3)useconds_t:t(14,54)=(14,7)suseconds_t:t(14,55)=(0,3)major_t:t(14,56)=(14,8)minor_t:t(14,57)=(14,8)pri_t:t(14,58)=(0,8)cpu_flag_t:t(14,59)=(14,6)o_mode_t:t(14,60)=(14,6)o_dev_t:t(14,61)=(0,8)o_uid_t:t(14,62)=(14,6)o_gid_t:t(14,63)=(14,62)o_nlink_t:t(14,64)=(0,8)o_pid_t:t(14,65)=(0,8)o_ino_t:t(14,66)=(14,6)key_t:t(14,67)=(0,1)mode_t:t(14,68)=(14,8)uid_t:t(14,69)=(0,3)gid_t:t(14,70)=(14,69)taskid_t:t(14,71)=(14,53)projid_t:t(14,72)=(14,53)poolid_t:t(14,73)=(14,53)zoneid_t:t(14,74)=(14,53)ctid_t:t(14,75)=(14,53)pthread_t:t(14,76)=(14,7)pthread_key_t:t(14,77)=(14,7)_pthread_mutex:T(14,78)=s24__pthread_mutex_flags:(14,79)=s8__pthread_mutex_flag1:(16,6),0,16;__pthread_mutex_flag2:(16,5),16,8;__pthread_mutex_ceiling:(16,5),24,8;__pthread_mutex_type:(16,6),32,16;__pthread_mutex_magic:(16,6),48,16;;,0,64;__pthread_mutex_lock:(14,80)=u8__pthread_mutex_lock64:(14,81)=s8__pthread_mutex_pad:(14,82)=ar(15,3);0;7;(16,5),0,64;;,0,64;__pthread_mutex_lock32:(14,83)=s8__pthread_ownerpid:(16,7),0,32;__pthread_lockword:(16,7),32,32;;,0,64;__pthread_mutex_owner64:(14,35),0,64;;,64,64;__pthread_mutex_data:(14,35),128,64;;pthread_mutex_t:t(14,84)=(14,78)_pthread_cond:T(14,85)=s16__pthread_cond_flags:(14,86)=s8__pthread_cond_flag:(14,87)=ar(15,3);0;3;(16,5),0,32;__pthread_cond_type:(16,6),32,16;__pthread_cond_magic:(16,6),48,16;;,0,64;__pthread_cond_data:(14,35),64,64;;pthread_cond_t:t(14,88)=(14,85)_pthread_rwlock:T(14,89)=s64__pthread_rwlock_readers:(16,3),0,32;__pthread_rwlock_type:(16,6),32,16;__pthread_rwlock_magic:(16,6),48,16;__pthread_rwlock_mutex:(14,84),64,192;__pthread_rwlock_readercv:(14,88),256,128;__pthread_rwlock_writercv:(14,88),384,128;;pthread_rwlock_t:t(14,90)=(14,89)pthread_barrier_t:t(14,91)=(14,92)=s64__pthread_barrier_count:(16,7),0,32;__pthread_barrier_current:(16,7),32,32;__pthread_barrier_cycle:(14,35),64,64;__pthread_barrier_reserved:(14,35),128,64;__pthread_barrier_lock:(14,84),192,192;__pthread_barrier_cond:(14,88),384,128;;pthread_spinlock_t:t(14,93)=(14,84)_pthread_attr:T(14,94)=s4__pthread_attrp:(14,21),0,32;;pthread_attr_t:t(14,95)=(14,94)_pthread_mutexattr:T(14,96)=s4__pthread_mutexattrp:(14,21),0,32;;pthread_mutexattr_t:t(14,97)=(14,96)_pthread_condattr:T(14,98)=s4__pthread_condattrp:(14,21),0,32;;pthread_condattr_t:t(14,99)=(14,98)_once:T(14,100)=s32__pthread_once_pad:(14,101)=ar(15,3);0;3;(14,35),0,256;;pthread_once_t:t(14,102)=(14,100)_pthread_rwlockattr:T(14,103)=s4__pthread_rwlockattrp:(14,21),0,32;;pthread_rwlockattr_t:t(14,104)=(14,103)pthread_barrierattr_t:t(14,105)=(14,106)=s4__pthread_barrierattrp:(14,21),0,32;;dev_t:t(14,107)=(14,8)nlink_t:t(14,108)=(14,8)pid_t:t(14,109)=(0,3)ssize_t:t(14,110)=(0,1)time_t:t(14,111)=(0,3)clock_t:t(14,112)=(0,3)clockid_t:t(14,113)=(0,1)timer_t:t(14,114)=(0,1)unchar:t(14,115)=(0,11)ushort:t(14,116)=(0,9)uint:t(14,117)=(0,4)ulong:t(14,118)=(0,5)u_char:t(14,119)=(0,11)u_short:t(14,120)=(0,9)u_int:t(14,121)=(0,4)u_long:t(14,122)=(0,5)_quad:T(14,123)=s8val:(14,124)=ar(15,3);0;1;(0,1),0,64;;quad_t:t(14,125)=(14,123)quad:t(14,126)=(14,125)/usr/include/sys/select.h/usr/include/sys/time_impl.htimespec:T(18,1)=s8tv_sec:(14,111),0,32;tv_nsec:(0,3),32,32;;timespec_t:t(18,2)=(18,1)timestruc_t:t(18,3)=(18,1)itimerspec:T(18,4)=s16it_interval:(18,1),0,64;it_value:(18,1),64,64;;itimerspec_t:t(18,5)=(18,4)/usr/include/sys/time.htimeval:T(19,1)=s8tv_sec:(14,111),0,32;tv_usec:(14,55),32,32;;timezone:T(19,2)=s8tz_minuteswest:(0,1),0,32;tz_dsttime:(0,1),32,32;;/usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/include/sys/types.hitimerval:T(19,3)=s16it_interval:(19,1),0,64;it_value:(19,1),64,64;;hrtime_t:t(19,4)=(14,1)/usr/include/time.h/usr/include/iso/time_iso.htm:T(22,1)=s36tm_sec:(0,1),0,32;tm_min:(0,1),32,32;tm_hour:(0,1),64,32;tm_mday:(0,1),96,32;tm_mon:(0,1),128,32;tm_year:(0,1),160,32;tm_wday:(0,1),192,32;tm_yday:(0,1),224,32;tm_isdst:(0,1),256,32;;sigval:T(21,1)=u4sival_int:(0,1),0,32;sival_ptr:(14,21),0,32;;sigevent:T(21,2)=s24sigev_notify:(0,1),0,32;sigev_signo:(0,1),32,32;sigev_value:(21,1),64,32;sigev_notify_function:(21,3)=*(21,4)=f(0,22),96,32;sigev_notify_attributes:(21,5)=*(14,95),128,32;__sigev_pad2:(0,1),160,32;;/usr/include/sys/select.hsigset_t:t(17,1)=(17,2)=s16__sigbits:(17,3)=ar(15,3);0;3;(0,4),0,128;;fd_mask:t(17,4)=(0,3)fds_mask:t(17,5)=(0,3)fd_set:T(17,6)=s128fds_bits:(17,7)=ar(15,3);0;31;(0,3),0,1024;;fd_set:t(17,8)=(17,6)/usr/include/sys/stat.hstat:T(24,1)=s136st_dev:(14,107),0,32;st_pad1:(24,2)=ar(15,3);0;2;(0,3),32,96;st_ino:(14,23),128,32;st_mode:(14,68),160,32;st_nlink:(14,108),192,32;st_uid:(14,69),224,32;st_gid:(14,70),256,32;st_rdev:(14,107),288,32;st_pad2:(15,2),320,64;st_size:(2,1),384,32;st_pad3:(0,3),416,32;st_atim:(18,3),448,64;st_mtim:(18,3),512,64;st_ctim:(18,3),576,64;st_blksize:(14,31),640,32;st_blocks:(14,24),672,32;st_fstype:(24,3)=ar(15,3);0;15;(0,2),704,128;st_pad4:(24,4)=ar(15,3);0;7;(0,3),832,256;;stat64:T(24,5)=s152st_dev:(14,107),0,32;st_pad1:(24,2),32,96;st_ino:(14,27),128,64;st_mode:(14,68),192,32;st_nlink:(14,108),224,32;st_uid:(14,69),256,32;st_gid:(14,70),288,32;st_rdev:(14,107),320,32;st_pad2:(15,2),352,64;st_size:(2,2),448,64;st_atim:(18,3),512,64;st_mtim:(18,3),576,64;st_ctim:(18,3),640,64;st_blksize:(14,31),704,32;st_blocks:(14,28),768,64;st_fstype:(24,3),832,128;st_pad4:(24,4),960,256;;/usr/include/sys/stat_impl.h/usr/include/unistd.h/usr/include/sys/unistd.h/usr/include/errno.h/usr/include/sys/errno.h/usr/include/pwd.hpasswd:T(30,1)=s36pw_name:(14,10),0,32;pw_passwd:(14,10),32,32;pw_uid:(14,69),64,32;pw_gid:(14,70),96,32;pw_age:(14,10),128,32;pw_comment:(14,10),160,32;pw_gecos:(14,10),192,32;pw_dir:(14,10),224,32;pw_shell:(14,10),256,32;;comment:T(30,2)=s16c_dept:(14,10),0,32;c_name:(14,10),32,32;c_acct:(14,10),64,32;c_bin:(14,10),96,32;;/usr/include/libgen.h/usr/include/stdlib.h/usr/include/iso/stdlib_iso.hdiv_t:t(33,1)=(33,2)=s8quot:(0,1),0,32;rem:(0,1),32,32;;ldiv_t:t(33,3)=(33,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;wchar_t:t(33,5)=(0,3)/usr/include/iso/stdlib_c99.hlldiv_t:t(34,1)=(34,2)=s16quot:(0,6),0,64;rem:(0,6),64,64;;/usr/include/syslog.h/usr/include/sys/syslog.hscponly.h/usr/include/getopt.hoption:T(38,1)=s16name:(14,10),0,32;has_arg:(0,1),32,32;flag:(38,2)=*(0,1),64,32;val:(0,1),96,32;;config.hcmd_t:t(37,1)=(37,2)=s8name:(14,10),0,32;argflag:(0,1),32,32;;cmd_arg_t:t(37,3)=(37,4)=s24name:(14,10),0,32;getoptflag:(0,1),32,32;strict:(0,1),64,32;badarg:(14,10),96,32;opts:(14,10),128,32;longopts:(37,5)=*(38,1),160,32;;config.h/usr/include/glob.hglob_t:T(41,1)=s20gl_pathc:(7,3),0,32;gl_pathv:(41,2)=*(14,10),32,32;gl_offs:(7,3),64,32;gl_pathp:(41,2),96,32;gl_pathn:(0,1),128,32;;glob_t:t(41,3)=(41,1)noop_syslog:F(0,22)priority:P(0,1)format:P(1,1)=*(1,2)=k(0,2)solaris_needs_strsep:F(14,10)str:P(41,2)delims:P(14,10)strip_vector:F(41,2)sav:P(41,2)tmpptr:r(41,2)dav:r(41,2)dac:r(0,1)discard_vector:F(0,22)av:P(41,2)discard_child_vectors:F(0,22)av:P(41,2)tmpptr:r(41,2)flatten_vector:F(14,10)av:P(41,2)tmpptr:r(41,2)temp:r(14,10)crptr:r(14,10)outbuf:r(14,10)len:r(0,1)newlen:r(0,1)check_dangerous_args:F(0,1)av:P(41,2)cmdarg:r(1,3)=*(37,3)tmpptr:r(41,2)ch:r(0,1)ac:r(0,1)longopt_index:(0,1)valid_arg_vector:F(0,1)av:P(41,2)cmd:r(1,4)=*(37,1)substitute_known_path:F(14,10)request:P(14,10)cmd:r(1,4)stripped_req:r(14,10)build_arg_vector:F(41,2)request:P(14,10)ap:r(41,2)argv:(1,5)=ar(15,3);0;99;(14,10)inputstring:(14,10)tmpstring:(14,10)freeme:r(14,10)ap2:r(41,2)av:r(41,2)expand_wildcards:F(41,2)av_old:P(41,2)av_new:r(41,2)g:(41,3)c_old:r(0,1)c_new:r(0,1)c:r(0,1)cntchr:F(0,1)buf:P(14,10)x:P(0,2)count:r(0,1)logstamp:F(14,10)ret_buf:V(1,6)=ar(15,3);0;254;(0,2)bad_ip:V(1,7)=ar(15,3);0;9;(1,2)ipstring:r(14,10)strbeg:F(14,10)big:P(14,10)small:P(14,10)valid_chars:F(0,1)string:P(14,10)count:r(0,1)get_uservar:F(0,1)userinfo:r(1,8)=*(30,1)user:r(14,10)replace_env_entry:F(0,1)name:P(1,1)value:P(1,1)base:r(41,2)buf:(1,9)=ar(15,3);0;256;(0,2)mysetenv:F(0,1)name:P(1,1)value:P(1,1)count:V(0,2)buff:(1,6)filter_allowed_env_vars:F(0,22)p_env:r(14,10)p_valid:r(41,2)strend:F(14,10)big:P(14,10)small:P(14,10)blen:r(0,1)slen:r(0,1)tempbuf:r(14,10)tempbuf:r(14,10) \ DD" o -B$  7B<<H ABL KQ--W--]-- 2::(F:: e=`=`n>>t>>{>>>>????<?? ? @ IhOQ =  m$07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!