Skip to content

Commit 80dbeb1

Browse files
committed
hedit: improve element data security
Improves the security of resource data by using the new `clientChangesPolicy` parameter where appropriate.
1 parent 8e493af commit 80dbeb1

File tree

6 files changed

+14
-16
lines changed

6 files changed

+14
-16
lines changed

[gameplay]/hedit/meta.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<meta>
2-
<info type="script" name="Ingame Handling Editor" author="Remi-X" version="2.1.5" description="The first ingame handling editor for MTA!" />
2+
<info type="script" name="Ingame Handling Editor" author="Remi-X, MTA contributors (github.com/multitheftauto/mtasa-resources)" version="2.1.6" description="The first ingame handling editor for MTA!" />
33
<oop>true</oop>
4-
<min_mta_version server="1.4.0" client="1.4.0" />
4+
<min_mta_version server="1.6.0-9.22815" client="1.6.0-9.22815" />
55

66
<!-- SHARED -->
77
<script src="shared/variables/general.lua" type="shared" />

[gameplay]/hedit/server/core.lua

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ addEventHandler ( "onResourceStart", resourceRoot, function ( )
77

88
local resName = getResourceName ( resource )
99

10-
setElementData(resourceRoot, "resourceVersion", getResourceInfo(resource, "version"))
11-
1210
if resName ~= "hedit" and not DEBUGMODE then
1311
print ( "[HEDIT] Please rename resource '"..resName.."' to 'hedit' to use the handling editor.")
1412
return cancelEvent ( true, "Rename the handling editor resource to 'hedit' in order to use the resource." )
@@ -23,7 +21,7 @@ addEventHandler ( "onResourceStart", resourceRoot, function ( )
2321
addEventHandler("onSettingChange", root, parseMetaSettings)
2422

2523
for model=400,611 do
26-
setElementData ( root, "originalHandling."..tostring ( model ), getOriginalHandling ( model, true ) )
24+
setElementData ( resourceRoot, "hedit:originalHandling."..tostring ( model ), getOriginalHandling ( model, true ), true, "deny" )
2725
end
2826

2927
--initiateCFGLoader ( )

[gameplay]/hedit/server/logmanager.lua

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
local vehicleLogs = {}
22

33
function loadHandlingLog ( )
4-
local data = getElementData ( root, "hedit:vehicleLogs" )
4+
local data = getElementData ( root, "hedit:vehicleLogs" ) -- retrieve stashed vehicleLogs from root element data (if it exists)
55

66
if data then
77
vehicleLogs = data
@@ -12,7 +12,7 @@ end
1212

1313

1414
function unloadHandlingLog ( )
15-
setElementData ( root, "hedit:vehicleLogs", vehicleLogs, false )
15+
setElementData ( root, "hedit:vehicleLogs", vehicleLogs, false, "deny") -- stash vehicleLogs as root element data so it can be recovered on next start
1616

1717
return true
1818
end
@@ -109,7 +109,7 @@ function uploadFullLog ( vehicle )
109109
return false
110110
end
111111

112-
triggerClientEvent ( client, "receiveFullLog", client, getElementData(root,"hedit:vehicleLogs")[vehicle] )
112+
triggerClientEvent ( client, "receiveFullLog", client, vehicleLogs[vehicle] )
113113
return true
114114
end
115115
addEvent ( "requestFullLog", true )

[gameplay]/hedit/server/utils.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,5 +127,5 @@ function parseMetaSettings()
127127
outputDebugString("Missing setting for "..handlingProperty..", defaulting to false.", 2)
128128
end
129129
end
130-
setElementData(resourceRoot, "propertySettings", propertySettings)
130+
setElementData(resourceRoot, "hedit:propertySettings", propertySettings, true, "deny")
131131
end

[gameplay]/hedit/shared/utils.lua

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ end
136136
--This function returns true if a setting is enabled in the meta, false otherwise.
137137
function isHandlingPropertyEnabled(property)
138138
if getLocalPlayer then
139-
return (getElementData(resourceRoot, "propertySettings", false)[property]) or true
139+
return (getElementData(resourceRoot, "hedit:propertySettings", false)[property]) or true
140140
else
141141
return tobool(get("*enable_"..property))
142142
end
@@ -330,7 +330,7 @@ function getHandlingPreviousValue ( vehicle, property )
330330
return false
331331
end
332332

333-
return getElementData ( vehicle, "hedit:vehiclepreviousvalue."..property )
333+
return getElementData ( vehicle, "hedit:vehiclepreviousvalue."..property, false )
334334
end
335335

336336

@@ -344,7 +344,7 @@ function setVehicleSaved ( vehicle, saved )
344344
return true
345345
end
346346

347-
setElementData ( vehicle, "hedit:saved", tostring ( saved ) )
347+
setElementData ( vehicle, "hedit:saved", tostring ( saved ), true, "deny" )
348348

349349
local occupants = getVehicleOccupants ( vehicle )
350350
local seats = getVehicleMaxPassengers ( vehicle )
@@ -370,8 +370,8 @@ function isVehicleSaved ( vehicle )
370370
return false
371371
end
372372

373-
if not getElementData ( vehicle, "hedit:saved" ) then
374-
setElementData ( vehicle, "hedit:saved", "true" )
373+
if not getElementData ( vehicle, "hedit:saved", false ) then
374+
setElementData ( vehicle, "hedit:saved", "true", true, "deny" )
375375
end
376376

377377
return tobool ( getElementData ( vehicle, "hedit:saved" ) )

[gameplay]/hedit/shared/wrappers/handling.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ function setVehicleHandling ( vehicle, property, value, withLog )
175175
end
176176

177177

178-
setElementData ( vehicle, "hedit:vehiclepreviousvalue."..property, oldValue )
178+
setElementData ( vehicle, "hedit:vehiclepreviousvalue."..property, oldValue, true, "deny" )
179179

180180
triggerEvent ( "onVehicleHandlingChange", client, vehicle, property, oldValue, value )
181181

@@ -197,7 +197,7 @@ function getOriginalHandling ( model, force )
197197
return nil
198198
end
199199

200-
local data = getElementData ( root, "originalHandling."..tostring(model) )
200+
local data = getElementData ( resourceRoot, "hedit:originalHandling."..tostring(model), false )
201201
if not data or force then
202202
data = conformHandlingTable ( _getOriginalHandling ( model ), model )
203203
end

0 commit comments

Comments
 (0)