Subversion Repositories freemyipod

Rev

Rev 816 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 816 Rev 922
Line 134... Line 134...
134
  blocks.append(prev_addr)
134
  blocks.append(prev_addr)
135
  if prev_free:
135
  if prev_free:
136
    try:
136
    try:
137
      nfa = block.get_next_free().get_address()
137
      nfa = block.get_next_free().get_address()
138
      if nfa >= prev_addr and nfa < prev_addr + block.get_size() + 4:
138
      if nfa >= prev_addr and nfa < prev_addr + block.get_size() + 4:
139
        print("%08X: Next free block (%08X) lies within the block itself" % (prev_addr, nfa))
139
        print("%08X: Next free block (%08X) is within the block itself" % (prev_addr, nfa))
140
    except: print("%08X: Invalid next free block pointer: %08X" % (prev_addr, block.next_free))
140
    except: print("%08X: Invalid next free block pointer: %08X" % (prev_addr, block.next_free))
141
    try:
141
    try:
142
      pfa = block.get_prev_free().get_address()
142
      pfa = block.get_prev_free().get_address()
143
      if pfa >= prev_addr and pfa < prev_addr + block.get_size() + 4:
143
      if pfa >= prev_addr and pfa < prev_addr + block.get_size() + 4:
144
        print("%08X: Previous free block (%08X) lies within the block itself" % (prev_addr, pfa))
144
        print("%08X: Previous free block (%08X) is within the block itself" % (prev_addr, pfa))
145
    except:
145
    except:
146
      print("%08X: Invalid previous free block pointer: %08X" % (prev_addr, block.prev_free))
146
      print("%08X: Invalid previous free block pointer: %08X" % (prev_addr, block.prev_free))
147
    print("%08X: %08X bytes free" % (prev_addr + 4, block.get_size() + 4))
147
    print("%08X: %08X bytes free" % (prev_addr + 4, block.get_size() + 4))
148
    free_blocks.append(prev_addr)
148
    free_blocks.append(prev_addr)
149
    bytes_free = bytes_free + block.get_size() + 4
149
    bytes_free = bytes_free + block.get_size() + 4
Line 253... Line 253...
253
        print("[%d:%d:%08X] Block appears in multiple free lists" % (i, j, addr))
253
        print("[%d:%d:%08X] Block appears in multiple free lists" % (i, j, addr))
254
      else: handled_blocks.append(addr)
254
      else: handled_blocks.append(addr)
255
      try:
255
      try:
256
        nfa = block.get_next_free().get_address()
256
        nfa = block.get_next_free().get_address()
257
        if nfa >= addr and nfa < addr + size + 4:
257
        if nfa >= addr and nfa < addr + size + 4:
258
          print("[%d:%d:%08X] Next free block (%08X) lies within the block itself" % (i, j, addr, nfa))
258
          print("[%d:%d:%08X] Next free block (%08X) is within the block itself" % (i, j, addr, nfa))
259
          fatal = True
259
          fatal = True
260
      except:
260
      except:
261
        print("[%d:%d:%08X] Invalid next free block pointer: %08X" % (i, j, addr, block.next_free))
261
        print("[%d:%d:%08X] Invalid next free block pointer: %08X" % (i, j, addr, block.next_free))
262
        fatal = True
262
        fatal = True
263
      try:
263
      try:
264
        pfa = block.get_prev_free().get_address()
264
        pfa = block.get_prev_free().get_address()
265
        if pfa >= addr and pfa < addr + size + 4:
265
        if pfa >= addr and pfa < addr + size + 4:
266
          print("[%d:%d:%08X] Previous free block (%08X) lies within the block itself" % (i, j, addr, pfa))
266
          print("[%d:%d:%08X] Previous free block (%08X) is within the block itself" % (i, j, addr, pfa))
267
        if prev == None and not block.get_prev_free().is_null():
267
        if prev == None and not block.get_prev_free().is_null():
268
          print("[%d:%d:%08X] Previous free block pointer is broken: %08X (should be NULL)" % (i, j, addr, pfa))
268
          print("[%d:%d:%08X] Previous free block pointer is broken: %08X (should be NULL)" % (i, j, addr, pfa))
269
        if prev != None and prev != pfa:
269
        if prev != None and prev != pfa:
270
          print("[%d:%d:%08X] Previous free block pointer is broken: %08X (should be %08X)" % (i, j, addr, pfa, prev))
270
          print("[%d:%d:%08X] Previous free block pointer is broken: %08X (should be %08X)" % (i, j, addr, pfa, prev))
271
      except:
271
      except: