Harden dynamic HTTP and compiler boundaries
This commit is contained in:
@@ -20,6 +20,37 @@ CLI(Request& context)
|
||||
print(cli_arg(context, "missing", "fallback"), "\n");
|
||||
return;
|
||||
}
|
||||
if(action == "task_repeat_unbounded")
|
||||
{
|
||||
String marker = "/tmp/uce-task-repeat-unbounded.txt";
|
||||
file_unlink(marker);
|
||||
pid_t pid = task_repeat("uce-task-repeat-unbounded", 0.05, [marker]() { file_put_contents(marker, "ran"); }, 0);
|
||||
usleep(200000);
|
||||
bool ran = file_get_contents(marker) == "ran";
|
||||
if(pid > 0) task_kill(pid, 15);
|
||||
file_unlink(marker);
|
||||
print(pid > 0 && ran ? "task repeat unbounded ok\n" : "task repeat unbounded failed\n");
|
||||
return;
|
||||
}
|
||||
if(action == "mysql_unsigned_params")
|
||||
{
|
||||
MySQL db;
|
||||
StringMap params; params["limit"] = "1";
|
||||
String parsed = db.parse_query_parameters("SELECT 7 LIMIT :limit!", params);
|
||||
StringMap comparison; comparison["left"] = "7"; comparison["right"] = "8";
|
||||
String inequality = db.parse_query_parameters("SELECT :left!=:right", comparison);
|
||||
StringMap empty_name; empty_name[""] = "1";
|
||||
db.parameter_error = false; db.statement_info = "";
|
||||
db.parse_query_parameters("SELECT 1 LIMIT :!", empty_name);
|
||||
bool empty_rejected = db.parameter_error;
|
||||
StringMap invalid; invalid["limit"] = "1;SELECT 9";
|
||||
db.parameter_error = false;
|
||||
db.statement_info = "";
|
||||
db.parse_query_parameters("SELECT 1 LIMIT :limit!", invalid);
|
||||
bool ok = parsed.find("LIMIT 1") != String::npos && inequality.find("'7'!='8'") != String::npos && empty_rejected && db.parameter_error && db.statement_info.find("must contain only decimal digits") != String::npos;
|
||||
print(ok ? "mysql unsigned params ok\n" : "mysql unsigned params failed: parsed=" + parsed + ", parameter_error=" + (db.parameter_error ? "1" : "0") + ", statement=" + db.statement_info + "\n");
|
||||
return;
|
||||
}
|
||||
context.set_status(400, "CLI Error");
|
||||
print("unknown cli action: ", action, "\n");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user