Commit Graph

412 Commits

Author SHA1 Message Date
jackpoz
6dcd8c8545 Core/Misc: Fix some static analysis issues
Fix some static analysis issues about:
- uninitialized values, most of which are false positives, always initialized before being accessed
- unchecked return values
- dead code never executed
- bad formatting leading to wrong behavior

Please ensure EventMap is never used with event id set to 0 or those events will never execute.
2014-03-22 14:54:32 +01:00
joschiwald
3a40d8a887 Core/Player: delete queststatus (weekly/monthly/seasonal) on deleting character thx @Expecto
- also rename some prepared statements

Closes #11658
2014-03-02 00:00:39 +01:00
Vincent_Michael
20004050bc Update copyright note for 2014.
Happy new year.
2014-01-01 00:07:53 +01:00
Malcrom
fe95371d9a Core/Scripting: Replace casted with cast as casted is not a word. 2013-12-25 14:16:55 -03:30
jackpoz
b0ffbb2179 Core/Auth: Fix expiring account bans
Fix a database race condition in authserver that would delay the account ban expiry by 1 login because the query that would have removed the ban was executed asynchronously.
2013-12-22 14:00:14 +01:00
Shauren
172d3197bc Core/Guilds: Fixed an issue with withdrawing money from guild bank as guild master if the guild was created using a gm command
Closes #11262
2013-11-25 16:23:55 +01:00
jackpoz
f0c4d0ac05 Core/Transports: Fix few transport issues on relog.
Properly save transport related data to database when saving a Player .
On Player login update the current position as relative to transport, in case the transport moved.
2013-11-17 15:17:40 +01:00
jackpoz
096cb6bf00 Core/Auth: Fix Auth failing sometimes
Fix a database race condition between authserver saving session key to database asynchronously and worldserver reading it; session key is now saved synchronously.
2013-11-16 23:25:21 +01:00
Spp
94e2b9332a Core/Logging: Remove LOG_FILTER_XXX defines with it's value (remember logger names are case-sensitive) 2013-11-08 10:50:51 +01:00
jackpoz
6d794ab305 Core/Database: Add additional assert
Add additional assert to assure that helgrind reports related to SQLQueryHolderTask::Execute() and WorldSession::ProcessQueryCallbacks() are false positives.
The only chance for WorldSession::ProcessQueryCallbacks() to access the SQL queries before they are completed is if m_result.ready() is true before the end of SQLQueryHolderTask::Execute() .

Helgrind false positive log:
 Possible data race during read of size 8 at 0x2BD641E0 by thread #7
 Locks held: none
    at : SQLQueryHolder::GetPreparedResult(unsigned long) (QueryHolder.cpp:107)
    by : Player::LoadFromDB(unsigned int, SQLQueryHolder*) (Player.cpp:16917)
    by : WorldSession::HandlePlayerLogin(LoginQueryHolder*) (CharacterHandler.cpp:807)
    by : WorldSession::ProcessQueryCallbacks() (WorldSession.cpp:1112)
    by : WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:401)
    by : World::UpdateSessions(unsigned int) (World.cpp:2646)
    by : World::Update(unsigned int) (World.cpp:2003)
    by : WorldRunnable::run() (WorldRunnable.cpp:60)
    by : ACE_Based::Thread::ThreadTask(void*) (Threading.cpp:186)
    by : ACE_OS_Thread_Adapter::invoke() (in /usr/lib/libACE-6.0.3.so)
    by : mythread_wrapper (hg_intercepts.c:233)
    by : start_thread (pthread_create.c:311)

 This conflicts with a previous write of size 8 by thread #4
 Locks held: none
    at : SQLQueryHolder::SetPreparedResult(unsigned long, PreparedResultSet*) (QueryHolder.cpp:140)
    by : SQLQueryHolderTask::Execute() (QueryHolder.cpp:196)
    by : SQLOperation::call() (SQLOperation.h:65)
    by : DatabaseWorker::svc() (DatabaseWorker.cpp:45)
    by : ACE_Task_Base::svc_run(void*) (in /usr/lib/libACE-6.0.3.so)
    by : ACE_Thread_Adapter::invoke_i() (in /usr/lib/libACE-6.0.3.so)
    by : ACE_Thread_Adapter::invoke() (in /usr/lib/libACE-6.0.3.so)
    by : mythread_wrapper (hg_intercepts.c:233)

 Address 0x2BD641E0 is 16 bytes inside a block of size 792 alloc'd
    at : operator new(unsigned long) (vg_replace_malloc.c:319)
    by : __gnu_cxx::new_allocator<std::pair<SQLElementData, SQLResultSetUnion> >::allocate(unsigned long, void const*) (new_allocator.h:104)
    by : std::_Vector_base<std::pair<SQLElementData, SQLResultSetUnion>, std::allocator<std::pair<SQLElementData, SQLResultSetUnion> > >::_M_allocate(unsigned long) (in /home/jackpoz/trinity/bin/worldserver)
    by : std::vector<std::pair<SQLElementData, SQLResultSetUnion>, std::allocator<std::pair<SQLElementData, SQLResultSetUnion> > >::_M_fill_insert(__gnu_cxx::__normal_iterator<std::pair<SQLElementData, SQLResultSetUnion>*, std::vector<std::pair<SQLElementData, SQLResultSetUnion>, std::allocator<std::pair<SQLElementData, SQLResultSetUnion> > > >, unsigned long, std::pair<SQLElementData, SQLResultSetUnion> const&) (vector.tcc:483)
    by : std::vector<std::pair<SQLElementData, SQLResultSetUnion>, std::allocator<std::pair<SQLElementData, SQLResultSetUnion> > >::insert(__gnu_cxx::__normal_iterator<std::pair<SQLElementData, SQLResultSetUnion>*, std::vector<std::pair<SQLElementData, SQLResultSetUnion>, std::allocator<std::pair<SQLElementData, SQLResultSetUnion> > > >, unsigned long, std::pair<SQLElementData, SQLResultSetUnion> const&) (stl_vector.h:1024)
    by : std::vector<std::pair<SQLElementData, SQLResultSetUnion>, std::allocator<std::pair<SQLElementData, SQLResultSetUnion> > >::resize(unsigned long, std::pair<SQLElementData, SQLResultSetUnion>) (stl_vector.h:707)
    by : SQLQueryHolder::SetSize(unsigned long) (QueryHolder.cpp:167)
    by : LoginQueryHolder::Initialize() (CharacterHandler.cpp:66)
    by : WorldSession::HandlePlayerLoginOpcode(WorldPacket&) (CharacterHandler.cpp:788)
    by : WorldSession::Update(unsigned int, PacketFilter&) (WorldSession.cpp:363)
    by : World::UpdateSessions(unsigned int) (World.cpp:2646)
    by : World::Update(unsigned int) (World.cpp:2003)
2013-11-02 22:57:07 +01:00
leguybrush
0a308144a8 Core/Code: Unify [more] codestyle for brackets: )\n{\n} to ) { }. 2013-10-28 14:36:07 -04:00
Ascathor
2607738990 Core/Code: Unify codestyle for brackets: {} to { }.
Also added missing copyright to some files.
2013-10-27 23:46:02 +01:00
Shauren
59fd2520fc Core/Creatures: Removed remains of creature_transport table 2013-10-17 00:20:00 +02:00
Ellie
1fae858645 Whitespace between string literals and user-defined literals is now mandatory for concatenation in C++11 2013-10-01 01:13:13 -07:00
Spp
ea2fe0217d Core/RBAC: Simplify RBAC implementation
- Drop groups (roles than can have inherited roles) and roles (set of
  permissions)
- Permissions can now have inherited permissions (those act as roles)

RBAC DB structure is now limited to four tables
- rbac_permissions: Contains permissions and roles
- rbac_linked_permissions: Contains the relation between permissions and
  linked permissions (those permissions that have linked permissions are
  called roles)
- rbac_default_permissions: Contains the list of permissions to be granted
  to each security level [Added to maintain compatibility in an easy way]
- rbac_account_permissions: Contains the list of permissions granted or
  denied for a particular account.

NOTE: IF YOU ARE USING CUSTOM PERMISSIONS, ROLES OR GROUPS CHECK THE SQL
BEFORE APPLYING...
2013-09-29 13:19:05 +02:00
jackpoz
9c336cc32e Core/DB: Make a26a24a consistent with Trinity code style
Change DatabaseWorkerPool<T>::DirectExecute() to handle PreparedStatement disposal in the same way of DatabaseWorkerPool<T>::Query() , thanks Joschiwald for patch.
2013-09-21 17:45:46 +02:00
Shauren
0ca481c0a2 Core/Achievements: Converted save queries to prepared statements 2013-09-06 14:00:21 +02:00
Ascathor
722a6c143a Core/Account: Make account password change security variable and various changes
Settings within worldserver.conf:

Three settings for secruity level:
0 - None - No change to current system
1 - Email - Always requires the email entered on registration for confirming.
2 - RBAC - Groups applied with the RBAC role always require the email entered on registration for confirming.

RBAC default to every group. Changed some logs to make it more clear what is going on at all.

Emails may now no longer exceed 64 chars. Current email is used as regmail.

On account creation, two emails are saved. Registration email and normal email. Normal email is relevant afterwards. Registration email can be changed by console ONLY.

Includes new commands and changes to existing ones:
.account fulfills several new functions:
* Still prints GM Level.
* If account has permission, it displays the current email. This is not defaulted to any group.
* Security level is displayed. Also displays if user has RBAC perm if RBAC security mode is selected
.account email allows user to change email with sufficient confirmation
.account set sec email allows higher sec with higher sec than account to change the normal email. Registrationemail remains untouched here.
.account set sec regmail allows console to change registration email.
.pinfo now displays the registration and normal mail.

Also fixes .learn all crafts.
Closes #10558
2013-09-01 21:21:16 +02:00
Spp
3232b69ff3 Core/RBAC: Move commands security to RBAC (using generic RBAC Permissions)
- Warning: This will break commands for any custom security level
2013-08-30 13:57:09 +02:00
raczman
ba22baebbd Core/Auth: Implement time-based token for user login as described in RFC 6238.
New column in account table is a base32 of token key bytes,
coincidentally it is the same format Google's Authenticator Android app uses.
If you want that to work, set system time on server correctly and use ntpd.

Closes #10527

Signed-off-by: Nay <dnpd.dd@gmail.com>
2013-08-25 14:02:40 +01:00
Nay
12973de799 Core&Tools: Fix multiple issues found by a static code coverage tool 2013-08-24 22:57:22 +01:00
Ascathor
5a9810ec08 Core/Commands: Added the rank id to .pinfo for guild data 2013-07-24 19:25:36 +02:00
Shauren
ef15fe8ed2 Core/Instances: Fixed a bug that caused switching group leader inside active instance to cause players not being saved when a boss was killed.
Closes #5109
2013-06-11 15:50:08 +02:00
Subv
1d1bb84cf9 Merge pull request #9854 from Ascathor/master
Core/Command: Optimized .pinfo more
2013-06-02 17:52:27 -07:00
Vincent-Michael
15b055fe87 Core/Database: Fix bad sql query in 55b3819d12 (thx Shauren) 2013-06-01 23:47:46 +02:00
Subv
55b3819d12 Core/Database: Deleted characters will no longer be loaded when sending the SMSG_CHAR_ENUM packet. 2013-06-01 12:57:37 -05:00
Ascathor
fb52e9ea03 Core/Command: Optimized .pinfo more
* Moved some checks around
* Added RBAC Permission for Email, last login and last ip (group 3 and 4) -- If missing RBAC permission, then it displays "Unauthorized (RBAC)"
* Changed totalmail output from uint64 to uint32
* Level either puts Max level, or a list of information necessary
* Only queries guild if the current xp query also detects guild membership
* Incorporated recent changes into code
* Commander requires higher than target to get sensitive data beside RBAC permission.
2013-05-26 14:21:39 +02:00
Shauren
590133c2b0 Missed change for previous commit 2013-05-24 18:33:33 +02:00
Bezo
178cb300d1 Implement .arena commands - add new commands to the core to handle with arena teams.
*.arena create [player] "arena name" [type]
	*.arena create "arena name" [type]
	*.arena disband [TeamID]
	*.arena rename "oldName" "newName"
	*.arena captain [TeamID] [Player]
	*.arena info [TeamID]
	*.arena lookup [name]
2013-05-22 00:50:51 +03:00
Ascathor
051d6ef925 Core/Command: Rework PInfo and give more output and add Gender to trinity_string
* Prints out in several strings instead of few
* Leaves unnecessary ones out (e.g. phase for GMs)
* Some code documentation included (including doxygen)
* Cleaner code (partly)
* Prints more content, e.g.:
** Localized Class- and Race names
** Localizable Gender names
** Current experience, required experience
** And more

Shoutouts to @Nay, @Subv, @Shauren and several others from the irc

Core/Command: Rework PInfo and give more output and add Gender to trinity_string
2013-05-20 03:09:34 +02:00
Shauren
d6709ed610 Reverted part of 8be181c7e6 that was not supposed to be pushed 2013-05-18 11:49:46 +02:00
Shauren
8be181c7e6 Core/Misc: Fixed a bunch of issues found by static analysis 2013-05-17 20:39:53 +02:00
Spp
d1677b2db0 Core/Logging: Performance-related tweaks to logging system
All sLog->out* functions (except outCommand atm) are replaced with TC_LOG_* macros.
    Memleak fix
2013-05-13 15:07:36 +02:00
xjose93
f2b6b2f95e Core/Commands: Improve .character rename [name], now can force rename .character rename [name] [newName] 2013-04-29 11:26:54 +02:00
Aokromes
1087e5f5c9 Merge pull request #9710 from xjose93/Autobroadcast
Core/World: Improvements in Autobroadcast system (dropped from world database and moved to auth database, added realmid and weight columns)
2013-04-27 05:02:48 -07:00
Aokromes
e486cd7623 Merge pull request #9662 from xjose93/GuildRename
Guild rename
2013-04-27 05:02:07 -07:00
xjose93
d7e9d1bafb Core/World: Improvements in Autobroadcast system (dropped from world database and moved to auth database, added realmid and weight columns) 2013-04-25 22:54:20 +02:00
Bezo
7542049eba [Ip2nationLock] Implement the ip2nation lock country. 2013-04-22 15:53:48 +02:00
xjose93
678cade116 Core/Commands: rename guilds (.guild rename "old guildname" "new guildname") 2013-04-19 23:21:23 +02:00
Spp
1a6a23ec96 Core/Misc: Minor optimizations (+code changes to reduce differences with 4.3.4 branch)
Core/Logging: Create new logger type "Cheat". Will be used to log all cheat attempts
2013-03-25 13:26:48 +01:00
Nay
4e1a4b3ce4 Core/DB: Fix a table name in CHAR_SEL_MAIL_LIST_INFO 2013-03-17 18:19:15 +00:00
Bezo
228d9803f3 Scripts/Commands: Add .list mail $char/$guid command
Prints a list of mails received by the characters

Closs #9421
2013-03-17 17:32:24 +00:00
Vincent_Michael
4ee0a4a446 Revert "Core/Commands: Optimize for command .npc near"
This reverts commit 4e789d4c5c.
2013-03-09 23:28:32 +01:00
Vincent_Michael
4e789d4c5c Core/Commands: Optimize for command .npc near 2013-03-09 23:05:27 +01:00
Nefarion
49fd11ab5a First step of comment style refactoring to doxygen-style. 2013-03-08 21:55:37 +01:00
WyldePointer
8c4dd52d45 Update SQLOperation.h
Extra ';'.
2013-03-06 13:48:49 +05:00
Shauren
f37e0ee838 Core/Players: Implemented converting quests on faction change (keeping old faction quests in disabled state - not loaded during login) and restoring them if changing back to original faction
Closes #890
Closes #9248
2013-03-04 14:15:52 +01:00
Shauren
6a5c9bc5e3 Core/DBLayer: Made connection types consistent in DatabaseWorkerPool 2013-02-25 17:43:04 +01:00
Nay
4e59dab703 Core/DBLayer: Comment out MySQL client/server version mismatch warning
MySQL version above 5.1 IS required in both client and server and there is no known issue with different versions above 5.1
2013-02-20 01:17:26 +00:00
Nay
028c72a9f2 Core/NPCs: Refactor equipments
- creature_template.equipment_id deleted
- creature_equip_template.entry == creature_template.entry
- id field added to creature_equip_template -> PK(entry, id)
- id field in creature_equip_template starts at 1
- creature.equipment_id references id of creature_equip_template
- creature.equipment_id = 0 means no equipment at all (default 1)
- creature.equipment_id = -1 means pick a random equipment from creature_equip_template
- add equipment info to .npc info command

While table creature_equip_template got bigger in size, this system is easier to mantain and allows creatures to have a random template from a group of equipments
2013-02-18 12:24:18 +00:00