newclust = get_fatent(mydata, endclust);
                        if((newclust -1)!=endclust)
                                goto getit;
-                       if (newclust <= 0x0001 || newclust >= 0xfff0) {
+                       if (CHECK_CLUST(newclust, mydata->fatsize)) {
                                FAT_DPRINT("curclust: 0x%x\n", newclust);
                                FAT_DPRINT("Invalid FAT entry\n");
                                return gotsize;
                filesize -= actsize;
                buffer += actsize;
                curclust = get_fatent(mydata, endclust);
-               if (curclust <= 0x0001 || curclust >= 0xfff0) {
+               if (CHECK_CLUST(curclust, mydata->fatsize)) {
                        FAT_DPRINT("curclust: 0x%x\n", curclust);
                        FAT_ERROR("Invalid FAT entry\n");
                        return gotsize;
 
                slotptr--;
                curclust = get_fatent(mydata, curclust);
-               if (curclust <= 0x0001 || curclust >= 0xfff0) {
+               if (CHECK_CLUST(curclust, mydata->fatsize)) {
                        FAT_DPRINT("curclust: 0x%x\n", curclust);
                        FAT_ERROR("Invalid FAT entry\n");
                        return -1;
            return retdent;
        }
        curclust = get_fatent (mydata, curclust);
-       if (curclust <= 0x0001 || curclust >= 0xfff0) {
+       if (CHECK_CLUST(curclust, mydata->fatsize)) {
            FAT_DPRINT ("curclust: 0x%x\n", curclust);
            FAT_ERROR ("Invalid FAT entry\n");
            return NULL;
 
 #define START(dent)    (FAT2CPU16((dent)->start) \
                        + (mydata->fatsize != 32 ? 0 : \
                          (FAT2CPU16((dent)->starthi) << 16)))
-
+#define CHECK_CLUST(x, fatsize) ((x) <= 1 || \
+                               (x) >= ((fatsize) != 32 ? 0xfff0 : 0xffffff0))
 
 typedef struct boot_sector {
        __u8    ignored[3];     /* Bootstrap code */