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 
  • 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