From 834f19cd3b980391b7aa17279b890fc9a9f2deda Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sun, 31 May 2020 22:15:49 -0400 Subject: [PATCH] Fixed filecount overflow bug. Added error check to auxalloc(). --- sortdir.c | 40 +++++++++++++++++++++++----------------- sortdir.po | Bin 143360 -> 143360 bytes 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/sortdir.c b/sortdir.c index 89ead86..5304e80 100644 --- a/sortdir.c +++ b/sortdir.c @@ -7,7 +7,7 @@ * until writeout time and use one block buffer. Iterate through * filelist[] collecting all entries for block 1, 2, 3 in turn. * Huge aux memory savings!! - * TODO: Check for no memory when allocating aux memory + * TODO: Get working on drives >2 (S7D3, S7D4 etc.) * TODO: Enable free list functionality on ProDOS-8 * TODO: Get both ProDOS-8 and GNO versions to build from this source * TODO: Trimming unused directory blocks @@ -27,6 +27,7 @@ * v0.61 Squeezed fileent to be a few bytes smaller. Fixed folder sort. * v0.62 Modified buildsorttable() to update existing filelist[]. * v0.63 Made code work properly with #undef CHECK. + * v0.64 Fixed overflow in file count (entries). */ //#pragma debug 9 @@ -175,19 +176,20 @@ struct datetime { * Globals */ #ifdef AUXMEM -#define STARTAUX 0x800 -static char *auxp = (char*)STARTAUX; +#define STARTAUX 0x0800 +#define ENDAUX 0xbfff +static char *auxp = (char*)STARTAUX; /* Pointer for allocating aux mem */ #endif #ifdef FREELIST -static uint totblks; /* Total # blocks on volume */ -static uchar *freelist; /* Free-list bitmap */ -static uchar *usedlist; /* Bit map of used blocks */ -static uchar flloaded = 0; /* 1 if free-list has been loaded */ +static uint totblks; /* Total # blocks on volume */ +static uchar *freelist; /* Free-list bitmap */ +static uchar *usedlist; /* Bit map of used blocks */ +static uchar flloaded = 0; /* 1 if free-list has been loaded */ #endif -static char currdir[NMLEN+1]; /* Name of directory currently processed */ -static struct block *blocks = NULL; -static struct dirblk *dirs = NULL; -static uint numfiles; +static char currdir[NMLEN+1]; /* Name of current directory */ +static struct block *blocks = NULL; /* List of directory disk blocks */ +static struct dirblk *dirs = NULL; /* List of key blocks of subdirs */ +static uint numfiles; /* Number of files in current dir */ static uint maxfiles; /* Size of filelist[] */ static uchar entsz; /* Bytes per file entry */ static uchar entperblk; /* Number of entries per block */ @@ -285,6 +287,8 @@ void usage(void); void parseargs(void); #endif +enum errtype {WARN, NONFATAL, FATAL, FATALALLOC, FATALBADARG, FINISHED}; + #ifdef AUXMEM /* Aux memory copy routine */ @@ -311,6 +315,9 @@ void copyaux(char *src, char *dst, uint len, uchar dir) { char *auxalloc(uint bytes) { char *p = auxp; auxp += bytes; + //printf("0x%p\n", auxp); + if (auxp > (char*)ENDAUX) + err(FATAL, "Out of aux mem"); return p; } @@ -321,21 +328,20 @@ void freeallaux() { #endif -/* Horizontal line */ +/* Horizontal line ----- */ void hline(void) { uint i; for (i = 0; i < 80; ++i) putchar('-'); } +/* Horizontal line ===== */ void hline2(void) { uint i; for (i = 0; i < 80; ++i) putchar('='); } -enum errtype {WARN, NONFATAL, FATAL, FATALALLOC, FATALBADARG, FINISHED}; - /****************************************************************************/ /* LANGUAGE CARD BANK 2 0xd400-x0dfff 3KB */ @@ -1072,8 +1078,8 @@ int readdir(uint device, uint blocknum) { struct block *curblk; struct datetime dt; ulong eof; - uint filecount, idx, subdirs, blks, keyblk, hdrblk, count; - uchar blkentries, entries, pd25, i; + uint filecount, idx, subdirs, blks, keyblk, hdrblk, count, entries; + uchar blkentries, pd25, i; uint errsbefore = errcount; uint blkcnt = 1; uint hdrblknum = blocknum; @@ -1845,7 +1851,7 @@ void interactive(void) { doverbose = 1; - puts("S O R T D I R v0.63 alpha Use ^ to return to previous question"); + puts("S O R T D I R v0.64 alpha Use ^ to return to previous question"); q1: fputs("\nEnter path (e.g.: /H1) of starting directory> ", stdout); diff --git a/sortdir.po b/sortdir.po index 7d5849359ecc3978f36e68a32a54a62603b0f887..0140d530d319f4b2a5eab70e11409b9c0c2c306e 100644 GIT binary patch delta 23729 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 delta 23538 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 Ke(-bqz5fr=LghpN