terminate session on save corruption

This commit is contained in:
wish
2022-12-23 23:12:01 +11:00
parent 00d3c05e6e
commit 7676f2e7d5
2 changed files with 11 additions and 5 deletions

View File

@@ -2,7 +2,6 @@ package channelserver
import (
"encoding/hex"
"erupe-ce/common/bfutil"
"erupe-ce/common/stringsupport"
"fmt"
"io"
@@ -46,10 +45,14 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
characterSaveData.decompSave = saveData
}
characterSaveData.updateStructWithSaveData()
characterSaveData.Save(s)
s.logger.Info("Wrote recompressed savedata back to DB.")
characterSaveData.Name = stringsupport.SJISToUTF8(bfutil.UpToNull(characterSaveData.decompSave[88:100]))
if characterSaveData.Name == s.Name {
characterSaveData.Save(s)
s.logger.Info("Wrote recompressed savedata back to DB.")
} else {
s.logger.Warn("Save cancelled due to corruption.")
s.rawConn.Close()
return
}
_, err = s.server.db.Exec("UPDATE characters SET name=$1 WHERE id=$2", characterSaveData.Name, s.charID)
if err != nil {
s.logger.Fatal("Failed to update character name in db", zap.Error(err))