cpu: Add basic check to TrafficGen initial state
authorStan Czerniawski <stan.czerniawski@arm.com>
Sun, 23 Mar 2014 15:11:39 +0000 (11:11 -0400)
committerStan Czerniawski <stan.czerniawski@arm.com>
Sun, 23 Mar 2014 15:11:39 +0000 (11:11 -0400)
Prevent incomplete configuration of TrafficGen class from causing
segmentation faults. If an 'INIT' line is not present in the
configuration file then the currState variable will remain
uninitialized which may result in a crash.

src/cpu/testers/traffic_gen/traffic_gen.cc

index b7f1ecd4ee0c604d978fed0104d9b9281d185f2c..4b2259bd96d494cca6d08e8f295dc7c0acc3ff7e 100644 (file)
@@ -221,6 +221,8 @@ TrafficGen::parseConfig()
               name(), configFile);
     }
 
+    bool init_state_set = false;
+
     // read line by line and determine the action based on the first
     // keyword
     string keyword;
@@ -316,11 +318,17 @@ TrafficGen::parseConfig()
                 // set the initial state as the active state
                 is >> currState;
 
+                init_state_set = true;
+
                 DPRINTF(TrafficGen, "Initial state: %d\n", currState);
             }
         }
     }
 
+    if (!init_state_set)
+        fatal("%s: initial state not specified (add 'INIT <id>' line "
+              "to the config file)\n", name());
+
     // resize and populate state transition matrix
     transitionMatrix.resize(states.size());
     for (size_t i = 0; i < states.size(); i++) {