package tools.argumentTainter;
import org.apache.commons.cli.ParseException;
// Parse command line and hand over to to ArgumentTainter
public class ArgumentTainterMain
{
static String source = "memset";
static int taintedArg = 0;
static String databaseDir;
static CommandLineInterface cmd = new CommandLineInterface();
public static void main(String[] args)
{
parseCommandLine(args);
ArgumentTainter argumentTainter = new ArgumentTainter();
argumentTainter.initialize(databaseDir);
argumentTainter.setSourceToPatch(source);
argumentTainter.setArgToPatch(taintedArg);
argumentTainter.patch();
argumentTainter.shutdown();
}
private static void printHelpAndTerminate(Exception ex)
{
System.err.println(ex.getMessage());
cmd.printHelp();
System.exit(1);
}
private static void parseCommandLine(String[] args)
{
try
{
cmd.parseCommandLine(args);
}
catch (RuntimeException | ParseException ex)
{
printHelpAndTerminate(ex);
}
if (cmd.getNumberOfArgs() != 2)
printUsageAndExit();
source = cmd.getSource();
taintedArg = cmd.getArgNum();
databaseDir = cmd.getDatabaseDir();
}
private static void printUsageAndExit()
{
System.err.println("usage: <sourceFunction> <argument>");
System.exit(0);
}
}