8 use CGI::Carp qw(fatalsToBrowser);
10 my $fs_passwdd_socket = "/usr/local/freeside/fs_passwdd_socket";
11 my $freeside_uid = scalar(getpwnam('freeside'));
13 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
14 $ENV{'SHELL'} = '/bin/sh';
15 $ENV{'IFS'} = " \t\n";
18 $ENV{'BASH_ENV'} = '';
20 die "fs_passwd.cgi isn't running as freeside user\n" if $> != $freeside_uid;
24 $cgi->param('username') =~ /^([^\n]{0,255}$)/ or die "Illegal username";
27 $cgi->param('old_password') =~ /^([^\n]{0,255}$)/ or die "Illegal old_password";
28 my $old_password = $1;
30 $cgi->param('new_password') =~ /^([^\n]{0,255}$)/ or die "Illegal new_password";
31 my $new_password = $1;
33 die "New passwords don't match"
34 unless $new_password eq $cgi->param('new_password2');
36 socket(SOCK, PF_UNIX, SOCK_STREAM, 0) or die "socket: $!";
37 connect(SOCK, sockaddr_un($fs_passwdd_socket)) or die "connect: $!";
38 print SOCK join("\n", $me, $old_password, $new_password, '', ''), "\n";
46 print $cgi->header(), <<END;
49 <title>Password changed</title>
51 <body bgcolor="#e8e8e8">
52 <h3>Password changed</h3>
53 <br>Your password has been changed.