fork(2) download
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class TaintedString : public string {using string::string;};
  6. class BlessedString : public string {using string::string;};
  7.  
  8. BlessedString untaintString(TaintedString tstr) {
  9. //do some sanitation or whatever is necessary
  10. size_t pos;
  11. while((pos = tstr.find('\'')) != TaintedString::npos) {
  12. tstr.erase(pos);
  13. }
  14.  
  15. return BlessedString(tstr.c_str());
  16. }
  17.  
  18. int main() {
  19. TaintedString attack = "Mike\'; DROP TABLE users;";
  20. BlessedString bs = untaintString(attack);
  21.  
  22. //BlessedString test = attack; //compilation error
  23.  
  24. std::cout << bs << "\n";
  25. return 0;
  26. }
Compilation error #stdin compilation error #stdout 0s 3228KB
stdin
Standard input is empty
compilation info
prog.cpp: In function 'int main()':
prog.cpp:22:26: error: conversion from 'TaintedString' to non-scalar type 'BlessedString' requested
     BlessedString test = attack;
                          ^
stdout
Standard output is empty