Issue information

Issue ID
#2218
Status
Fixed
Severity
Low
Started
Hercules Elf Bot
Sep 12, 2008 11:18
Last Post
Hercules Elf Bot
Sep 12, 2008 11:18
Confirmation
N/A

Hercules Elf Bot - Sep 12, 2008 11:18

Originally posted by [b]theultramage[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=2218

While doing the charmerge I noticed one oddity in char_sql/char.c. During char saving, individual char data components are checked against a cache to see if anything changed. If nothing changed, that particular saving step is skipped.

Now see r649. In the base 'status' saving part, the p->last_point.map / p->save_point.map string value isn't tested at all. This would mean that if only the map coordinate changes, this change will not get saved.

This theoretically lets you do a mini-exploit to return to some previous map, provided you go stand on the same x/y coordinates as your last save position, none of the other char values change (base/job exp, hp/sp, ...), and you make it before the periodic char-save catches you in mid-walk.

If executed properly this could let you return to areas that were supposed to be accessed only a single time. The biggest obstacle is the automatic saving system. If we assume that the admin left the charsave_interval setting on default, that means the window of opportunity is anywhere between 1 second and 5 minutes. The exact timing is not normally visible to the player, but he might be able to infer it if the server provides a control panel that displays realtime char values straight from the database.

The possible fix would be to add appropriate strmcp() calls to the char saving code (untested).