Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
Sql açığını fixlemek için girdiğiniz kodlar lonca buguna sebep olmaktadır bug aynı lonca isminden herkes açabilir bunu fixlemek için lonca kodunu hiç değiştirmenize gerek yok orjinalini kullanın sql açığı sadece messenger de mevcuttu loncada yok
guild_manager.cpp içerisinde kod satırını orjinal ile değiştirin.
Bugtan ss
guild_manager.cpp içerisinde kod satırını orjinal ile değiştirin.
Kod:
DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp)
{
if (!gcp.master)
return 0;
if (!check_name(gcp.name))
{
gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드 이름이 적합하지 않습니다."));
return 0;
}
std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'",
get_table_postfix(), gcp.name));
if (pmsg->Get()->uiNumRows > 0)
{
MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult);
if (!(row[0] && row[0][0] == '0'))
{
gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 이미 같은 이름의 길드가 있습니다."));
return 0;
}
}
else
{
gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드를 생성할 수 없습니다."));
return 0;
}
// new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers.
// other game server calls CGuildManager::LoadGuild to load guild.
CGuild * pg = M2_NEW CGuild(gcp);
m_mapGuild.insert(std::make_pair(pg->GetID(), pg));
return pg->GetID();
}
Bugtan ss
Moderatör tarafında düzenlendi:
En Çok Reaksiyon Alan Mesajlar
Sql açığını fixlemek için girdiğiniz kodlar lonca buguna sebep olmaktadır bug aynı lonca isminden herkes açabilir bunu fixlemek için lonca kodunu hiç değiştirmenize gerek yok orjinalini kullanın sql açığı sadece messenger de mevcuttu loncada yok
guild_manager.cpp içerisinde kod satırını orjinal ile değiştirin.
Kod:DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp) { if (!gcp.master) return 0; if (!check_name(gcp.name)) { gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드 이름이 적합하지 않습니다.")); return 0; } std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'", get_table_postfix(), gcp.name)); if (pmsg->Get()->uiNumRows > 0) { MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult); if (!(row[0] && row[0][0] == '0')) { gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 이미 같은 이름의 길드가 있습니다.")); return 0; } } else { gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드를 생성할 수 없습니다.")); return 0; } // new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers. // other game server calls CGuildManager::LoadGuild to load guild. CGuild * pg = M2_NEW CGuild(gcp); m_mapGuild.insert(std::make_pair(pg->GetID(), pg)); return pg->GetID(); }
Bugtan ss
Öğeyi görmek için üye olmalısınız.
ALTER TABLE `guild`
ADD UNIQUE INDEX `name` (`name`) USING BTREE ;
İle orjinal kodları değiştirmeden buna engel olabilirsiniz. Kullanıcı tarafından gelen dataların EscapeString ile sanitize edilmesi gerekmektedir ve çok büyük sorunlara sebep olmaktadır açık yoktur diye kaldırmanız tehlike arz edebilir.
Bu tip veritabanı işlemlerinin db çekirdeğine taşınması gerekiyor Ymir geliştiricilerinin zamanında kısa sürede maksimum verim kafasında bazı şeyleri planlamadan ve denemeden geliştirdiğiniz örneğidir bu.
Sql açığını fixlemek için girdiğiniz kodlar lonca buguna sebep olmaktadır bug aynı lonca isminden herkes açabilir bunu fixlemek için lonca kodunu hiç değiştirmenize gerek yok orjinalini kullanın sql açığı sadece messenger de mevcuttu loncada yok
guild_manager.cpp içerisinde kod satırını orjinal ile değiştirin.
Kod:DWORD CGuildManager::CreateGuild(TGuildCreateParameter& gcp) { if (!gcp.master) return 0; if (!check_name(gcp.name)) { gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드 이름이 적합하지 않습니다.")); return 0; } std::auto_ptr<SQLMsg> pmsg(DBManager::instance().DirectQuery("SELECT COUNT(*) FROM guild%s WHERE name = '%s'", get_table_postfix(), gcp.name)); if (pmsg->Get()->uiNumRows > 0) { MYSQL_ROW row = mysql_fetch_row(pmsg->Get()->pSQLResult); if (!(row[0] && row[0][0] == '0')) { gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 이미 같은 이름의 길드가 있습니다.")); return 0; } } else { gcp.master->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("<길드> 길드를 생성할 수 없습니다.")); return 0; } // new CGuild(gcp) queries guild tables and tell dbcache to notice other game servers. // other game server calls CGuildManager::LoadGuild to load guild. CGuild * pg = M2_NEW CGuild(gcp); m_mapGuild.insert(std::make_pair(pg->GetID(), pg)); return pg->GetID(); }
Bugtan ss
![]()
ALTER TABLE `guild`
ADD UNIQUE INDEX `name` (`name`) USING BTREE ;
İle orjinal kodları değiştirmeden buna engel olabilirsiniz. Kullanıcı tarafından gelen dataların EscapeString ile sanitize edilmesi gerekmektedir ve çok büyük sorunlara sebep olmaktadır açık yoktur diye kaldırmanız tehlike arz edebilir.
Bu tip veritabanı işlemlerinin db çekirdeğine taşınması gerekiyor Ymir geliştiricilerinin zamanında kısa sürede maksimum verim kafasında bazı şeyleri planlamadan ve denemeden geliştirdiğiniz örneğidir bu.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 37
- Görüntüleme
- 2K
- Cevaplar
- 8
- Görüntüleme
- 2K
- Cevaplar
- 8
- Görüntüleme
- 2K
