-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
200 lines (172 loc) · 13.8 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
CHANGELOG
---------
[date] [ver]
2007-??-?? 0.0.1 pre-alpha version, fairly unstable; nothing much going on;
everything is a bloody mess
2008-05-30 0.0.2 pre-alpha version 2; lots of fixes in the reading routine;
ugly memory leak fixed, first reconception of "Amiga Disk" structure
2008-10-25 0.0.5 structure enhanced, dangerous malloc() typo fixed; routine can now properly
read ONE single block (remember: always start on a shoestring :))
2008-10-27 0.0.10 major update:
- structure now contains components for multi-word BCPL strings and block types
- routine can now read the whole disk with all its bells and whistles!
- added #define's for internal block type IDs (makes life easier)
- reading directory structure from root block is now possible in a very basic way
TODO: get rid of hardcoded disk name (maybe let user specify disk name?)
TODO: support subdirectories up to 2nd or 3rd level
(ideally, make things *recursive*, but this is nothing for the faint of heart)
2008-10-28 0.0.12 fixed stupid bug in memory allocation routine, which built up the structure
perfectly, but did not free it properly - sometimes caused nasty GPFs.
Also merged block[i] and block[i]->lword[i] allocations into one routine
(allocation was previously done in two separate ones, which made no sense)
2008-10-30 0.0.14 another major update:
- removed lots of obsolete code
- removed a lot of debug stuff from recursive directory routine and started
creating some "graphical" display for the directory tree found on the disk image
- some experiments with recursive directory reading: basically works but needs much
more work in incorporating the output into the other program part.
2008-10-31 0.0.16 even another major update:
boot checksum routine is working now.
Postponed concepts for recursive directory routine to make way for a
major rewrite of the application's fundamentals.
2008-11-03 0.0.20 complete rewrite of structure concept: many things were no good
idea at second thought. Many thanks must go to M. Kalms for his
invaluable suggestion of a union concept which can do bytes, words
and long words within the _same_ memory space. Pointer arithmetics
are a mere walk in the park now! Hooray! Thanks M. K.!
Endian problems by hton* and ntoh* macro family also solved.
TODO: linked list for directory structure (this is the only
rational way of doing it, but it won't be a breeze for sure)
YAY, all of a sudden something big and robust is coming up!
2008-11-04 0.0.22 Put old menu routines back in from first version.
Wrote __endian-aware__ get...() functions which can get a
byte, word or long word from either the superstructure or the
substructure. A Linux user encouraged me to avoid using original
hton*()/ntoh*() macro family names, because on his OS, these
would appear "in use" and cause trouble! Thanks, fixed!
2008-11-05 0.0.50 HUGE update.
- made the application suitable for BATCH processing by implementing
a comprehensive command-line parameter control.
- added an additional boolean array to represent the bitmap of the AmigaDOS disk.
This is extremely important because free blocks (marked unused) usually have
an invalid checksum; these must *not* be detected as "bad blocks".
2008-11-06 0.0.55 Fixed another dangerous bug - program carelessly attempted to evaluate the bitmap with
ILLEGAL BAM keys (with unpredictable results in every respect).
Also added NULL initializations for the main pointer variables because in contrary to popular
belief, those do NOT initialize with NULL automatically!
Stripped down the "graphical" header for batch mode, because it makes no sense having
5+ lines for header if the thing is supposed to run by itself, without user intervention.
(Explicit log file specification with the -l option will cause the entire header
to be suppressed.)
2008-11-07 0.0.60 LAMER virus detection on block is now possible !
Memory leak due to misplaced free() statement fixed! (got buried too far inside the nested
if-construction)
Removed silly "illegal bitmap" screen message flood, which caused a load of unnecessary
overhead in batch mode.
Still TODO: Saddam/IRAK virus infection detection and decoding. The latter is not that easy
because the whole block is (XOR?) encoded against something yet to figure out.
2008-11-11 0.1.0 ZIP files are now supported! After some fiddling with Gilles Vollant's "minizip" contribution
(part of JL Gailly's & Mark Adler's zlib package), it turned out that minizip unpacked to hard disk
instead of to memory buffer - no use for that, sorry! Also in respect to users wanting to
check their READ-ONLY ADF CD-Rs!!)
So I switched to LiteUnzip.DLL API for unzipping. Not only this works very well, but it also keeps
the executable size reasonably small.
Fixed ugly protection fault in a loop inside evalBitmap()!
(Don't you EVER attempt to read one boolean word BEYOND the 1759th one! (arghh!!))
2008-11-12 0.1.1 ZIP file support code continued; now also more detail possible in log file output.
RC is virtually ready for release!
2008-11-13 0.1.2 Some more minor fixes; trimmed down program header in batch mode even more, because the BAT
[RC1] file is supposed to run unattended.
Added another variant of the LAMER virus (the one randomly infecting blocks) with other case
in spelling (LAMER vs. Lamer).
2008-11-15 0.1.2 A boatload of changes:
[RC2] - Rewrote ENTIRE command-line parameter parser; auto-batch mode must be forced now
Adding parameters in random order is now possible (yeah!)
Combinations like e. g. -b without filename specification will be blocked, though.
adfchk -f <ADF_FILENAME> invokes menu mode and auto-reads the image into buffer.
- added shiny graphical box to tell about missing LiteUnzip.dll
- nice Linux Makefile by Oddbod. (Thanks!)
- LiteUnzip.h moved out of zipsupp/ subfolder. (appeared to have confused MAKE)
- [adfmyunzip.c]: Fixed RARE Windows-only bug in speedy mass-batch mode caused by
GlobalFree() Win32! Sometimes memory was not correctly free()'d when operating in paths
with VERY long names inside deep trees; using good ol' free() fixed this.
2008-11-17 0.1.3 Lots of major changes again:
- added block types; this prevents "checksum error" warnings with blocks that are in no
known AmigaDOS format. Type of block gets written to the log file as well now.
- lots of special formats are now recognized (e. g. root block ptr cleared but rest of
disk being AmigaDOS, etc.)
- error checking routine grew quite big and now resides in its own file, adfchkerr,c
- lots and lots of minor tweaks and fixes.
2008-11-18 0.1.3bis source updates only! Win32 binary works and needs no fixes.
Minor Linux tweaks:
- got rid of stricmp() completely by simply using a combination of strcmp() and my own
strToUpper() function.
- due to malfunctioning endian macros: complete rewrite of endian preprocessor stuff.
Now supports specialties of Linux, FreeBSD, NetBSD and Cygwin. Put into its extra file now,
byteorder.h. Should build OOTB now on Linux-ish systems!
2008-11-21 0.1.4 Now uses typified log files: _NDOS, _ERR(oneus), _VIRUS, _FFS, _OK, _IOERR (for I/O errors).
Fixed false reports of allegedly "correct" BAM key detection with ZIP files, also helped
to trim down log file size even more.
DATA block checks now include header key check to avoid phony detection of "data blocks"
in NDOS disks. Tricky stuff, because DATA blocks got no secondary type.
Now supports over- and underdumps, as well as both types of extended ADFs.
(Note: Due to their MFM-based nature, extended ADFs cannot yet be scanned. Sorry!)
2009-10-13 0.2.0alpha1 New:
- VIRUS detection:
-- SADDAM (bogus disk-validator + data block signature replaced by 'IRAK')
(Decoding of encoded blocks is currently still WIP. Sorry.).
-- Jeff/Butonic v1.3.1 (3408 bytes)
- CRC32 calculation
- Quarterback backup set detection (common DosType replaced by 'Qb??' on boot block header)
Fixes/Enhancements:
Stupid lower boundary problem with BAM location fixed (was: 3; now: 2).
(NB: Try finding a disk with the bitmap on block 2 - they're _very_ rare, Really!)
Major rewrites and enhancements in ADOS/NDOS detection logic.
Refined (and at part "embellished") log file information output.
TODO until 0.2.1 (final): WORKING DMS SUPPORT! (might as well take some more days,
albeit xdms code has already been properly 'woven' in by now)
2009-10-19 0.2.0alpha2 New:
- Fixed bogus detection of very special pseudo-ADOS format in games Project-X and Puffy's Saga
- DMS error detection ("DMS!!ERR" in block) implemented (will also work for NDOS disks).
Log files of disk images with DMS errors are recognizable by their (new) _DMSERR suffix.
2009-10-23 0.2.0alpha3 Hooray, DMS checking finally works great now! (uses a heavily stripped-down xDMS code
which had to be partly rewritten so that it unpack directly to memory buffer in order
to avoid ugly temp file writeouts)
2009-10-28 0.2.0alpha4 New:
- More BOOT block viruses detected now:
-- Byte Bandit (3 variants supported)
-- Byte Warrior
-- Joshua 1 + 2
-- Pentagon Circle 1 + 2
-- Little Sven
- FILE viruses that ADFCHK can detect now:
-- Jeff/Butonic (v3.10) [1.31 was already recognized correctly in alpha1]
-- Eleni 1 (MessAngel-B)
Other stuff:
- Rob Northen Copylock block ID ("RNC" signature) is now detected as well
and ... FINALLY! Decomplexified adfchkerr.c by a great extent! Lots of redundant stuff has now
been removed.
Made printBAMInfo() more general and bigger in order not to clog up the fairly comprehensive
core routine.chkErr() too much.
Forced _NDOS suffix for even more NDOS disks (still too many NDOS disks were misreported as
'_OK' in the logs, which makes no sense since this condition is indeterminable when NDOS!)
2009-10-31 0.2.0alpha5 New:
- Added LEVIATHAN and SEPULTURA viruses to boot block detection.
Fixes:
- Fixed STUPID (!) crash caused by plain adf image at size < 901120.
(worked with ZIPPED adf underdumps!)
Enhancements:
- Since deep block T_DATA (0x08) scanning is still unsatisfying to me (if one of the criteria
is not met, block is deemed BLKTYPE_UNKNOWN), I've now rewritten the routines which handle
recognition of data blocks (e. g. bad seq number, BUT valid header key etc.)
Everything is much more refined now.
Rescanning TOSEC set brought up a handful of new disk images with this type
of errors (previously undetected)
2009-11-01 0.2.1 FINAL R E L E A S E D v0.2.1 (final) to the public.
2009-12-03 0.2.2 That was sort of infuriating!
Accidentally left in a superfluous free() from an old debug session, which was perfectly
cloaked by the complex Win XP/Vista/7 architecture, but turned out to bail out with a
General Protection Fault on my Windows 2000 installation!!
This update might also fix a rare possible heap corruption on XP/7 (if it occurs at all)
after 10,000 files or more. Glad this is settled now!
Some minor command-line output fixes were applied too.