Allereerst wil ik even melden dat ik absoluut geen Perl-guru ben. Desondanks probeer ik toch een Perl CGI scriptje draaiend te krijgen, namelijk http://rucus.ru.ac.za/~bvi/utils/webpass/
Ik heb het script zelf uitgebreid zodat het huidige password op een andere manier wordt gecheckt. De check gaat goed, dus tot dusverre geen probleem. Nu komt het script aan bij het daadwerkelijke wachtwoord-wijzigen.
$pid wordt geset, en deze bevat ook een waarde. De if is dus true, en wordt uitgevoerd (gecheckt door wat te printen). Mijn script geeft echter een error op de exec regel. De exec regel staat in de else, die dus helemaal niet uitgevoerd zou moeten worden. Als ik hier dus ook wat print om te testen, dan wordt dat óók geprint. Ik heb gezocht op google, maar overal waar ik kijk, staat dat óf het een, óf het ander wordt uitgevoerd, en NOOIT beiden! Hoe kan het dat hier wél beiden wordt uitgevoerd?!
Ik heb het script zelf uitgebreid zodat het huidige password op een andere manier wordt gecheckt. De check gaat goed, dus tot dusverre geen probleem. Nu komt het script aan bij het daadwerkelijke wachtwoord-wijzigen.
Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
| die derror("Cannot fork!: $!") unless defined($pid = open (PASSW, "|-")); $SIG{ALRM}= sub {die derror("PIPE to $program broke! $!\n"); }; #parent if ($pid) { print "Changing password to $npassword -->\n"; print PASSW $npassword; close PASSW ; #or die derror("Child Died!"); droproot(); return 1; } else { #child #print $user; exec($program,@program_args,$user) ||die derror("Can't spawn and exec $program : $!"); } |
$pid wordt geset, en deze bevat ook een waarde. De if is dus true, en wordt uitgevoerd (gecheckt door wat te printen). Mijn script geeft echter een error op de exec regel. De exec regel staat in de else, die dus helemaal niet uitgevoerd zou moeten worden. Als ik hier dus ook wat print om te testen, dan wordt dat óók geprint. Ik heb gezocht op google, maar overal waar ik kijk, staat dat óf het een, óf het ander wordt uitgevoerd, en NOOIT beiden! Hoe kan het dat hier wél beiden wordt uitgevoerd?!
[ Voor 4% gewijzigd door kauwgomballen op 09-03-2006 21:52 ]