diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 5f8aa6417..09b974831 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -21700,19 +21700,33 @@ void Player::_SaveEquipmentSets() ++itr; break; // nothing do case EQUIPMENT_SET_CHANGED: + { + // prevent SQL injection + std::string db_IconName = eqset.IconName; + std::string db_Name = eqset.Name; + CharacterDatabase.escape_string(db_IconName); + CharacterDatabase.escape_string(db_Name); CharacterDatabase.PExecute("UPDATE character_equipmentsets SET name='%s', iconname='%s', item0='%u', item1='%u', item2='%u', item3='%u', item4='%u', item5='%u', item6='%u', item7='%u', item8='%u', item9='%u', item10='%u', item11='%u', item12='%u', item13='%u', item14='%u', item15='%u', item16='%u', item17='%u', item18='%u' WHERE guid='%u' AND setguid='"UI64FMTD"' AND setindex='%u'", - eqset.Name.c_str(), eqset.IconName.c_str(), eqset.Items[0], eqset.Items[1], eqset.Items[2], eqset.Items[3], eqset.Items[4], eqset.Items[5], eqset.Items[6], eqset.Items[7], + db_Name.c_str(), db_IconName.c_str(), eqset.Items[0], eqset.Items[1], eqset.Items[2], eqset.Items[3], eqset.Items[4], eqset.Items[5], eqset.Items[6], eqset.Items[7], eqset.Items[8], eqset.Items[9], eqset.Items[10], eqset.Items[11], eqset.Items[12], eqset.Items[13], eqset.Items[14], eqset.Items[15], eqset.Items[16], eqset.Items[17], eqset.Items[18], GetGUIDLow(), eqset.Guid, index); eqset.state = EQUIPMENT_SET_UNCHANGED; ++itr; break; + } case EQUIPMENT_SET_NEW: + { + // prevent SQL injection + std::string db_IconName = eqset.IconName; + std::string db_Name = eqset.Name; + CharacterDatabase.escape_string(db_IconName); + CharacterDatabase.escape_string(db_Name); CharacterDatabase.PExecute("INSERT INTO character_equipmentsets VALUES ('%u', '"UI64FMTD"', '%u', '%s', '%s', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u', '%u')", - GetGUIDLow(), eqset.Guid, index, eqset.Name.c_str(), eqset.IconName.c_str(), eqset.Items[0], eqset.Items[1], eqset.Items[2], eqset.Items[3], eqset.Items[4], eqset.Items[5], eqset.Items[6], eqset.Items[7], + GetGUIDLow(), eqset.Guid, index, db_Name.c_str(), db_IconName.c_str(), eqset.Items[0], eqset.Items[1], eqset.Items[2], eqset.Items[3], eqset.Items[4], eqset.Items[5], eqset.Items[6], eqset.Items[7], eqset.Items[8], eqset.Items[9], eqset.Items[10], eqset.Items[11], eqset.Items[12], eqset.Items[13], eqset.Items[14], eqset.Items[15], eqset.Items[16], eqset.Items[17], eqset.Items[18]); eqset.state = EQUIPMENT_SET_UNCHANGED; ++itr; break; + } case EQUIPMENT_SET_DELETED: CharacterDatabase.PExecute("DELETE FROM character_equipmentsets WHERE setguid="UI64FMTD, eqset.Guid); m_EquipmentSets.erase(itr++); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 98c319600..7df376018 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9908" + #define REVISION_NR "9909" #endif // __REVISION_NR_H__