X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fblob_table.c;h=08859c42787baa5147a398bdacdecae579f69275;hb=593660b74e10631a4e1acca5ea684e4a55e84682;hp=1d87a71761ed219846e5d6395a3f912df83786fa;hpb=1fcf9333676be806716535d01b38722ee53d52e9;p=wimlib diff --git a/src/blob_table.c b/src/blob_table.c index 1d87a717..08859c42 100644 --- a/src/blob_table.c +++ b/src/blob_table.c @@ -395,7 +395,7 @@ cmp_blobs_by_sequential_order(const void *p1, const void *p2) v = (int)blob1->blob_location - (int)blob2->blob_location; - /* Different resource locations? */ + /* Different locations? */ if (v) return v; @@ -429,6 +429,10 @@ cmp_blobs_by_sequential_order(const void *p1, const void *p2) #ifdef __WIN32__ case BLOB_IN_WINNT_FILE_ON_DISK: case BLOB_WIN32_ENCRYPTED: + /* Windows: compare by starting LCN (logical cluster number) */ + v = cmp_u64(blob1->sort_key, blob2->sort_key); + if (v) + return v; #endif /* Compare files by path: just a heuristic that will place files * in the same directory next to each other. */ @@ -1018,6 +1022,13 @@ read_blob_table(WIMStruct *wim) goto out; } + if (reshdr.flags & WIM_RESHDR_FLAG_SOLID) { + ERROR("Image metadata in solid resources " + "is unsupported."); + ret = WIMLIB_ERR_INVALID_LOOKUP_TABLE_ENTRY; + goto out; + } + if (wim->hdr.part_number != 1) { WARNING("Ignoring metadata resource found in a " "non-first part of the split WIM");