From 4514a815aed52af12829387a1ed051353e256b89 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Thu, 11 Jun 2020 16:53:14 -0400 Subject: [PATCH] Only write block to disk if checksum is okay --- veserver.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/veserver.py b/veserver.py index ad20395..7e0193a 100755 --- a/veserver.py +++ b/veserver.py @@ -121,15 +121,20 @@ def write(sock, addr, drive, d): file = FILE2 cs = 0 + for i in range (0, BLKSZ): + cs ^= d[i+5] + err = False - try: - with open(file, 'r+b') as f: - f.seek(b) - for i in range (0, BLKSZ): - f.write(bytes([d[i+5]])) - cs ^= d[i+5] - except: - err = True + if cs == d[517]: + try: + with open(file, 'r+b') as f: + f.seek(b) + for i in range (0, BLKSZ): + f.write(bytes([d[i+5]])) + except: + err = True # Write error + else: + err == True # Bad checksum # Signal write errors by responding with bad data checksum. # Use sender's checksum + 1, so there is never an inadvertent match. @@ -148,7 +153,7 @@ def write(sock, addr, drive, d): #print('Sent {} bytes to {}'.format(b, addr)) -print("VEServer v0.6 alpha") +print("VEServer v0.7 alpha") if pd25: print("ProDOS 2.5+ Clock Driver") else: