]> wimlib.net Git - wimlib/blobdiff - src/split.c
wimlib_split(): forbid splitting arbitrary WIMStructs
[wimlib] / src / split.c
index 3f4a7d0a87a170805de89b7cf2072962a6396d67..07106746f484885cbe90771b0c139007400ab3f5 100644 (file)
@@ -44,7 +44,7 @@ struct swm_part_info {
 static void
 copy_part_info(struct swm_part_info *dst, struct swm_part_info *src)
 {
 static void
 copy_part_info(struct swm_part_info *dst, struct swm_part_info *src)
 {
-       list_transfer(&src->blob_list, &dst->blob_list);
+       list_replace(&src->blob_list, &dst->blob_list);
        dst->size = src->size;
 }
 
        dst->size = src->size;
 }
 
@@ -219,6 +219,13 @@ wimlib_split(WIMStruct *wim, const tchar *swm_name,
                return WIMLIB_ERR_UNSUPPORTED;
        }
 
                return WIMLIB_ERR_UNSUPPORTED;
        }
 
+       for (i = 0; i < wim->hdr.image_count; i++) {
+               if (!is_image_unchanged_from_wim(wim->image_metadata[i], wim)) {
+                       ERROR("Only an unmodified, on-disk WIM file can be split.");
+                       return WIMLIB_ERR_UNSUPPORTED;
+               }
+       }
+
        memset(&swm_info, 0, sizeof(swm_info));
        swm_info.max_part_size = part_size;
 
        memset(&swm_info, 0, sizeof(swm_info));
        swm_info.max_part_size = part_size;