Show
Ignore:
Timestamp:
12/17/06 15:39:43 (2 years ago)
Author:
kindlund
Message:

Completed alpha version of bug fix. Still have to test it out on our test VM network.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • honeyclient/branches/bug/42/lib/HoneyClient/Agent/Integrity/Registry/Parser.yp

    r119 r123  
    442442    $LOG->debug("Resetting parser."); 
    443443 
    444     my $fh = $self->YYData->{'file_handle'}; 
     444    $self->YYData->{'file_handle'} = undef; 
     445 
     446    my $fh = new IO::File($self->YYData->{'filename'}, "r"); 
     447    if (!defined($fh)) { 
     448        $LOG->fatal("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 
     449        Carp::croak("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 
     450    } 
     451 
     452    $self->YYData->{'file_handle'} = $fh; 
    445453 
    446454    # Check the offset. 
     
    651659    } 
    652660 
     661    # Save the file name. 
     662    $parser->YYData->{'filename'} = $args{'input_file'}; 
     663 
    653664    # Save the file handle. 
    654665    $parser->YYData->{'file_handle'} = $fh; 
     
    857868    $LOG->debug(Dumper(\%args)); 
    858869 
     870    # Reopen the file_handle, if it's been closed. 
     871    if (!defined($self->YYData->{'file_handle'})) { 
     872        $self->_reset();    
     873    } 
     874 
    859875    if ($self->YYData->{'input_pos'} == 0) { 
    860876        $LOG->debug("Beginning parse of input stream."); 
     
    10071023 
    10081024    return $self->YYData->{'file_handle'};  
     1025} 
     1026 
     1027=pod 
     1028 
     1029=head2 $object->getFilename() 
     1030 
     1031=over 4 
     1032 
     1033Returns the file name associated with the current Parser B<$object>. 
     1034 
     1035I<Output>: Returns the file name in use. 
     1036 
     1037=back 
     1038 
     1039=begin testing 
     1040 
     1041my ($filename); 
     1042my $test_registry_file = $ENV{PWD} . "/" . getVar(name      => "registry_file", 
     1043                                                  namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 
     1044 
     1045# Create a generic Parser object, with test state data. 
     1046my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 
     1047 
     1048$filename = $parser->getFilename(); 
     1049 
     1050is($filename, $test_registry_file, "getFilename()") or diag("The getFilename() call failed."); 
     1051 
     1052=end testing 
     1053 
     1054=cut 
     1055 
     1056sub getFilename { 
     1057    # Extract arguments. 
     1058    my ($self, %args) = @_; 
     1059 
     1060    # Log resolved arguments. 
     1061    # Make Dumper format more terse. 
     1062    $Data::Dumper::Terse = 1; 
     1063    $Data::Dumper::Indent = 0; 
     1064    $LOG->debug(Dumper(\%args)); 
     1065 
     1066    return $self->YYData->{'filename'};  
     1067} 
     1068 
     1069=pod 
     1070 
     1071=head2 $object->closeFileHandle() 
     1072 
     1073=over 4 
     1074 
     1075Closes the file handle associated with the current Parser B<$object>. 
     1076 
     1077=back 
     1078 
     1079=begin testing 
     1080 
     1081my ($handle); 
     1082my $test_registry_file = $ENV{PWD} . "/" . getVar(name      => "registry_file", 
     1083                                                  namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 
     1084 
     1085# Create a generic Parser object, with test state data. 
     1086my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 
     1087$parser->closeFileHandle(); 
     1088 
     1089# Verify Test Group #1 
     1090my $nextGroup = $parser->nextGroup(); 
     1091my $expectedGroup = { 
     1092    key     => 'HKEY_CURRENT_USER\]Testing Group 1[', 
     1093    entries => [ { 
     1094        name  => '@', 
     1095        value => 'Default', 
     1096    }, { 
     1097        name  => 'Foo', 
     1098        value => 'Bar', 
     1099    }, ], 
     1100}; 
     1101is_deeply($nextGroup, $expectedGroup, "closeFileHandle()") or diag("The closeFileHandle() call failed."); 
     1102 
     1103=end testing 
     1104 
     1105=cut 
     1106 
     1107sub closeFileHandle { 
     1108    # Extract arguments. 
     1109    my ($self, %args) = @_; 
     1110 
     1111    # Log resolved arguments. 
     1112    # Make Dumper format more terse. 
     1113    $Data::Dumper::Terse = 1; 
     1114    $Data::Dumper::Indent = 0; 
     1115    $LOG->debug(Dumper(\%args)); 
     1116 
     1117    $self->YYData->{'file_handle'} = undef;  
    10091118} 
    10101119