eth/tw.py: check data integrity on write
This commit is contained in:
parent
80df86aca7
commit
48b3663c5a
1 changed files with 10 additions and 9 deletions
|
|
@ -26,7 +26,6 @@ from mmgen.obj import ETHAmt,TwMMGenID,TwComment,TwLabel
|
|||
from mmgen.tw import TrackingWallet,TwAddrList,TwUnspentOutputs
|
||||
from mmgen.addr import AddrData
|
||||
|
||||
# No file locking - 2 processes accessing the wallet at the same time will corrupt it
|
||||
class EthereumTrackingWallet(TrackingWallet):
|
||||
|
||||
data_dir = os.path.join(g.altcoin_data_dir,'eth',g.proto.data_subdir)
|
||||
|
|
@ -35,10 +34,13 @@ class EthereumTrackingWallet(TrackingWallet):
|
|||
def __init__(self):
|
||||
check_or_create_dir(self.data_dir)
|
||||
try:
|
||||
self.data = json.loads(get_data_from_file(self.tw_file,silent=True))
|
||||
self.orig_data = get_data_from_file(self.tw_file,silent=True)
|
||||
self.data = json.loads(self.orig_data)
|
||||
except:
|
||||
try: os.stat(self.tw_file)
|
||||
except: self.data = {}
|
||||
except:
|
||||
self.orig_data = ''
|
||||
self.data = {}
|
||||
else: die(2,"File '{}' exists but does not contain valid json data")
|
||||
else:
|
||||
for d in self.data:
|
||||
|
|
@ -53,13 +55,12 @@ class EthereumTrackingWallet(TrackingWallet):
|
|||
die(3,"MMGen ID '{}' does not match tracking wallet!".format(label.mmid))
|
||||
self.data[addr] = { 'mmid': label.mmid, 'comment': label.comment }
|
||||
|
||||
# use 'check_data' to make sure wallet hasn't been altered by another program
|
||||
def write(self):
|
||||
write_data_to_file(
|
||||
self.tw_file,
|
||||
json.dumps(self.data),
|
||||
'Ethereum address data',
|
||||
ask_overwrite=False,
|
||||
silent=True)
|
||||
write_data_to_file( self.tw_file,
|
||||
json.dumps(self.data),'Ethereum address data',
|
||||
ask_overwrite=False,ignore_opt_outdir=True,silent=True,
|
||||
check_data=True,cmp_data=self.orig_data)
|
||||
|
||||
def delete_all(self):
|
||||
self.data = {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue