SAKE: Validate the scores submitted in file uploads from Mario Kart Wii

This commit is contained in:
MikeIsAStar 2024-09-09 23:55:00 -04:00
parent eb8bf13326
commit eddb4416f7
2 changed files with 4 additions and 4 deletions

View File

@ -110,7 +110,7 @@ func handleMarioKartWiiGhostDownloadRequest(moduleName string, responseWriter ht
}
time, err := strconv.Atoi(timeString)
if err != nil || time <= 0 {
if err != nil || time <= 0 || time >= 360000 /* 6 minutes */ {
logging.Error(moduleName, "Invalid time:", aurora.Cyan(timeString))
responseWriter.Header().Set(SakeFileResultHeader, strconv.Itoa(SakeFileResultMissingParameter))
return
@ -167,14 +167,14 @@ func handleMarioKartWiiGhostUploadRequest(moduleName string, responseWriter http
return
}
courseId := common.MarioKartWiiCourseId(courseIdInt)
if courseId < common.MarioCircuit || courseId > 32767 {
if courseId < common.MarioCircuit || isContest == courseId.IsValid() || courseId > 32767 {
logging.Error(moduleName, "Invalid course ID:", aurora.Cyan(courseIdString))
responseWriter.Header().Set(SakeFileResultHeader, strconv.Itoa(SakeFileResultMissingParameter))
return
}
score, err := strconv.Atoi(scoreString)
if err != nil || score <= 0 {
if err != nil || score <= 0 || score >= 360000 /* 6 minutes */ {
logging.Error(moduleName, "Invalid score:", aurora.Cyan(scoreString))
responseWriter.Header().Set(SakeFileResultHeader, strconv.Itoa(SakeFileResultMissingParameter))
return

View File

@ -59,7 +59,7 @@ ALTER TABLE public.users OWNER TO wiilink;
CREATE TABLE IF NOT EXISTS public.mario_kart_wii_sake (
regionid smallint NOT NULL CHECK (regionid >= 1 AND regionid <= 7),
courseid smallint NOT NULL CHECK (courseid >= 0 AND courseid <= 32767),
score integer NOT NULL CHECK (score > 0),
score integer NOT NULL CHECK (score > 0 AND score < 360000),
pid integer NOT NULL CHECK (pid > 0),
playerinfo varchar(108) NOT NULL CHECK (LENGTH(playerinfo) = 108),
ghost bytea CHECK (ghost IS NULL OR (OCTET_LENGTH(ghost) BETWEEN 148 AND 10240)),