diff options
author | amber <amber@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-12-30 03:58:08 +0000 |
---|---|---|
committer | amber <amber@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2004-12-30 03:58:08 +0000 |
commit | 790cd65db9cd68f6d541120a492542dfc73aa2c0 (patch) | |
tree | 704abc328b7c36e32a4ef4e47cbbb59c42cb4bab | |
parent | f29b1bc83edac7b0f153b98bb64ac79d29b633a0 (diff) | |
download | hercules-790cd65db9cd68f6d541120a492542dfc73aa2c0.tar.gz hercules-790cd65db9cd68f6d541120a492542dfc73aa2c0.tar.bz2 hercules-790cd65db9cd68f6d541120a492542dfc73aa2c0.tar.xz hercules-790cd65db9cd68f6d541120a492542dfc73aa2c0.zip |
Update
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/branches/stable@867 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog.txt | 1 | ||||
-rw-r--r-- | src/map/intif.c | 7 | ||||
-rw-r--r-- | src/map/storage.c | 14 |
3 files changed, 16 insertions, 6 deletions
diff --git a/Changelog.txt b/Changelog.txt index 0b77a3a4b..67d535683 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,6 @@ Date Added 12/29 + * Double storage/lag exploit fixed (SVN 867) [MouseJstr] * Another -1 alive_timer fix (SVN 866) [MouseJstr] * Added @dmstart and @dmtick for debugging malloc tests [MouseJstr] * Fix some more compile errors on different platforms [MouseJstr] diff --git a/src/map/intif.c b/src/map/intif.c index 379589556..8e0267781 100644 --- a/src/map/intif.c +++ b/src/map/intif.c @@ -734,6 +734,13 @@ int intif_parse_LoadStorage(int fd) { struct map_session_data *sd; stor = account2storage( RFIFOL(fd,4)); + + if (stor->storage_status == 1) { // Already open.. lets ignore this update + if (battle_config.error_log) + printf("intif_parse_LoadStorage: storage received for a client already open\n"); + return 0; + } + if (RFIFOW(fd,2)-8 != sizeof(struct storage)) { if (battle_config.error_log) printf("intif_parse_LoadStorage: data size error %d %d\n", RFIFOW(fd,2)-8, sizeof(struct storage)); diff --git a/src/map/storage.c b/src/map/storage.c index 501a16709..3944f1ac1 100644 --- a/src/map/storage.c +++ b/src/map/storage.c @@ -110,12 +110,14 @@ int storage_storageopen(struct map_session_data *sd) nullpo_retr(0, sd); if((stor = numdb_search(storage_db,sd->status.account_id)) != NULL) { - stor->storage_status = 1; - sd->state.storage_flag = 0; - clif_storageitemlist(sd,stor); - clif_storageequiplist(sd,stor); - clif_updatestorageamount(sd,stor); - return 0; + if (stor->storage_status == 0) { + stor->storage_status = 1; + sd->state.storage_flag = 0; + clif_storageitemlist(sd,stor); + clif_storageequiplist(sd,stor); + clif_updatestorageamount(sd,stor); + return 0; + } } else intif_request_storage(sd->status.account_id); |