The argument is now always treated as a plain string and passed directly
to the cheat. This is the behavior expected by all the functions in
xCheat.py, which parse the string argument manually where needed.
The previous implementation evaluated the argument value as a Python
expression. This theoretically allowed passing non-string arguments, but
none of the cheats use this (and it's also a potential code execution
issue). If no argument was passed, the function was called with no
arguments, which is also not supported by any of the cheats.
In practice, this required unintuitive syntax for calling the cheats
correctly, for example:
Python.Cheat GetPlayerID None
Python.Cheat GetSDL "'FirstWeekClothing'"
With the new argument handling, these have been simplified to:
Python.Cheat GetPlayerID
Python.Cheat GetSDL FirstWeekClothing
Newer versions of VS and Windows use ASLR for security purposes, meaning
that the module may be relocated from what is expected by the linker map
file. While we could kludge around that by disabling ASLR, it would be
better to just map the actual stack addresses to the expected addresses.
This also simplifies all of the weird segment math to simply use the
rvabase value in the map file.
Newer versions of VS and Windows use ASLR for security purposes, meaning
that the module may be relocated from what is expected by the linker map
file. While we could kludge around that by disabling ASLR, it would be
better to just map the actual stack addresses to the expected addresses.
This also simplifies all of the weird segment math to simply use the
rvabase value in the map file.
This fixes a leak of a Python bound method. Leaking this means that
PythonFileMods keys are still loaded when the client exits. These
methods are most commonly used by xSimpleImager.py, so the effect of the
leak can be observed by simply linking to Relto and quitting with a leak
detector active.
This fixes a leak of a Python bound method. Leaking this means that
PythonFileMods keys are still loaded when the client exits. These
methods are most commonly used by xSimpleImager.py, so the effect of the
leak can be observed by simply linking to Relto and quitting with a leak
detector active.
Unify references to HTML string chunk as being accessed as wchar_t[]
strings rather than repeatedly calling std::wstring.c_str() on the
chunk, then using character positions obtained from those strings
to index directly into the std::wstring[] form from chunk->fText.
The affected code was ported from H'uru where NetVaultNode has a zeroing
constructor. OU does not have a zeroing constructor for this class, and
instead assumes that all allocations will be done with NEWZERO (there is
a debug mode assertion to this effect). The result of the improper
allocation is that the node fields flag could be garbage, causing a
vault node with random contents to be written to the server.
Unfortunately, NetVaultNode::Read_LCS is not extremely resilient to
reading in unexpected data, so this may result in a crash.
Unify references to HTML string chunk as being accessed as wchar_t[]
strings rather than repeatedly calling std::wstring.c_str() on the
chunk, then using character positions obtained from those strings
to index directly into the std::wstring[] form from chunk->fText.
Some of the Python code expects for explicit Age initialization to
complete immediately. Rewriting that would be something of a chore, so
this will prevent first time clicks on the Er'cana and Ahnoying
Cathedral books from causing a perma-stick.
Homologue of H'uru commit ec0aecd202
H-uru:
From f45679a54f Mon Sep 17 00:00:00 2001
From: Adam Johnson <AdamJohnso@gmail.com>
Date: Sun, 15 Jan 2012 18:35:05 -0500
Subject: [PATCH] Make pyVault::AddChronicleEntry a blocking operation to avoid
a race condition
Fixes a reference counting issue that prevents non-DirectXCompressed
mipmaps from being used in GUI Lists (eg as icons for avatar clothing).
All future clothing PRPs produced by CreateClothingPRP.py will depend on
this change.