NShiftKey-Rule-Guide logo NShiftKey-Rule-Guide

1. Vulnerability Description

2. Vulnerability Countermeasure

3. Sample Code

class Transaction
{ // base class for all
  public: // transactions
    Transaction();
    virtual void logTransaction() const = 0;  // make type-dependent
    // log entry
    ...
};

Transaction::Transaction()  // implementation of
{ // base class constructor
    logTransaction(); // as final action, log this
}       
// transaction

class BuyTransaction: public Transaction
{ // derived class
  public:
     virtual void logTransaction() const; // how to log trans-
     ...
};

class SellTransaction: public Transaction
{ // derived class
  public:
    virtual void logTransaction() const; // how to log trans-
    ...
};
class Transaction {
public:
    explicit Transaction(const std::string& logInfo);
    void logTransaction(const std::string& logInfo) const;

    ...
};

Transaction::Transaction(const std::string& logInfo)
{
    ...
    logTransaction(logInfo);
}

class BuyTransaction: public Transaction {
public:
    BuyTransaction(parameters) // Call Transaction(createLogString( parameters)) in constructor
    { ... }
    ...

private:
    static std::string createLogString( parameters);
};