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.pm

    r119 r123  
    597597    $LOG->debug("Resetting parser."); 
    598598 
    599     my $fh = $self->YYData->{'file_handle'}; 
     599    $self->YYData->{'file_handle'} = undef; 
     600 
     601    my $fh = new IO::File($self->YYData->{'filename'}, "r"); 
     602    if (!defined($fh)) { 
     603        $LOG->fatal("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 
     604        Carp::croak("Error: Unable to read file '" . $self->YYData->{'filename'} . "'!"); 
     605    } 
     606 
     607    $self->YYData->{'file_handle'} = $fh; 
    600608 
    601609    # Check the offset. 
     
    806814    } 
    807815 
     816    # Save the file name. 
     817    $parser->YYData->{'filename'} = $args{'input_file'}; 
     818 
    808819    # Save the file handle. 
    809820    $parser->YYData->{'file_handle'} = $fh; 
     
    10121023    $LOG->debug(Dumper(\%args)); 
    10131024 
     1025    # Reopen the file_handle, if it's been closed. 
     1026    if (!defined($self->YYData->{'file_handle'})) { 
     1027        $self->_reset();    
     1028    } 
     1029 
    10141030    if ($self->YYData->{'input_pos'} == 0) { 
    10151031        $LOG->debug("Beginning parse of input stream."); 
     
    11621178 
    11631179    return $self->YYData->{'file_handle'};  
     1180} 
     1181 
     1182=pod 
     1183 
     1184=head2 $object->getFilename() 
     1185 
     1186=over 4 
     1187 
     1188Returns the file name associated with the current Parser B<$object>. 
     1189 
     1190I<Output>: Returns the file name in use. 
     1191 
     1192=back 
     1193 
     1194=begin testing 
     1195 
     1196my ($filename); 
     1197my $test_registry_file = $ENV{PWD} . "/" . getVar(name      => "registry_file", 
     1198                                                  namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 
     1199 
     1200# Create a generic Parser object, with test state data. 
     1201my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 
     1202 
     1203$filename = $parser->getFilename(); 
     1204 
     1205is($filename, $test_registry_file, "getFilename()") or diag("The getFilename() call failed."); 
     1206 
     1207=end testing 
     1208 
     1209=cut 
     1210 
     1211sub getFilename { 
     1212    # Extract arguments. 
     1213    my ($self, %args) = @_; 
     1214 
     1215    # Log resolved arguments. 
     1216    # Make Dumper format more terse. 
     1217    $Data::Dumper::Terse = 1; 
     1218    $Data::Dumper::Indent = 0; 
     1219    $LOG->debug(Dumper(\%args)); 
     1220 
     1221    return $self->YYData->{'filename'};  
     1222} 
     1223 
     1224=pod 
     1225 
     1226=head2 $object->closeFileHandle() 
     1227 
     1228=over 4 
     1229 
     1230Closes the file handle associated with the current Parser B<$object>. 
     1231 
     1232=back 
     1233 
     1234=begin testing 
     1235 
     1236my ($handle); 
     1237my $test_registry_file = $ENV{PWD} . "/" . getVar(name      => "registry_file", 
     1238                                                  namespace => "HoneyClient::Agent::Integrity::Registry::Parser::Test"); 
     1239 
     1240# Create a generic Parser object, with test state data. 
     1241my $parser = HoneyClient::Agent::Integrity::Registry::Parser->init(input_file => $test_registry_file); 
     1242$parser->closeFileHandle(); 
     1243 
     1244# Verify Test Group #1 
     1245my $nextGroup = $parser->nextGroup(); 
     1246my $expectedGroup = { 
     1247    key     => 'HKEY_CURRENT_USER\]Testing Group 1[', 
     1248    entries => [ { 
     1249        name  => '@', 
     1250        value => 'Default', 
     1251    }, { 
     1252        name  => 'Foo', 
     1253        value => 'Bar', 
     1254    }, ], 
     1255}; 
     1256is_deeply($nextGroup, $expectedGroup, "closeFileHandle()") or diag("The closeFileHandle() call failed."); 
     1257 
     1258=end testing 
     1259 
     1260=cut 
     1261 
     1262sub closeFileHandle { 
     1263    # Extract arguments. 
     1264    my ($self, %args) = @_; 
     1265 
     1266    # Log resolved arguments. 
     1267    # Make Dumper format more terse. 
     1268    $Data::Dumper::Terse = 1; 
     1269    $Data::Dumper::Indent = 0; 
     1270    $LOG->debug(Dumper(\%args)); 
     1271 
     1272    $self->YYData->{'file_handle'} = undef;  
    11641273} 
    11651274