File:  [LON-CAPA] / loncom / pwchange
Revision 1.1: download - view: text, annotated - select for diffs
Tue Oct 23 03:43:02 2001 UTC (22 years, 6 months ago) by harris41
Branches: MAIN
CVS tags: HEAD
setuid wrapper around passwd command

    1: #!/usr/bin/perl
    2: 
    3: use strict;
    4: 
    5: $ENV{'PATH'}='/bin:/usr/bin'; # Nullify path information.
    6: $ENV{'BASH_ENV'}=''; # Nullify shell environment information.
    7: 
    8: if ($>!=0) {
    9:     exit 1;
   10: }
   11: 
   12: my $user=shift @ARGV;
   13: $user=~/^(\w+)$/;
   14: my $safe=$1;
   15: my $pword=<>;
   16: chomp $pword;
   17: unless (length($safe) and ($user eq $safe) and ($safe=~/^[A-Za-z]/)) {
   18:     exit 2;
   19: }
   20: 
   21: my $pbad=0;
   22: map {if (($_<32)&&($_>126)){$pbad=1;}} (split(//,$pword));
   23: exit 3 if $pbad;
   24: 
   25: open OUT,"|passwd --stdin $safe >/dev/null";
   26: print OUT $pword;
   27: print OUT "\n";
   28: close OUT;
   29: 
   30: exit $?/256;

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>