X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fxml.c;h=6233462c9ca53bc590549e8c8d3d093d1a49b436;hb=e65e912be5d6b5cc5e1256b60975d1ff579dee7b;hp=dd7de12ea40b617fe866f98e83fee5e38a42854e;hpb=86a852652706cfe53087ef839840171bed597ffd;p=wimlib diff --git a/src/xml.c b/src/xml.c index dd7de12e..6233462c 100644 --- a/src/xml.c +++ b/src/xml.c @@ -174,6 +174,12 @@ wim_info_set_wimboot(struct wim_info *info, int image, bool value) info->images[image - 1].wimboot = value; } +bool +wim_info_get_wimboot(const struct wim_info *info, int image) +{ + return info->images[image - 1].wimboot; +} + /* Architecture constants are from w64 mingw winnt.h */ #define PROCESSOR_ARCHITECTURE_INTEL 0 #define PROCESSOR_ARCHITECTURE_MIPS 1 @@ -566,8 +572,9 @@ xml_read_wim_info(const xmlNode *wim_node, struct wim_info **wim_info_ret) num_images = 0; for_node_child(wim_node, child) { if (node_is_element(child) && node_name_is(child, "IMAGE")) { - if (num_images == INT_MAX) { - return WIMLIB_ERR_IMAGE_COUNT; + if (unlikely(num_images == MAX_IMAGES)) { + ret = WIMLIB_ERR_IMAGE_COUNT; + goto err; } num_images++; } @@ -617,7 +624,8 @@ xml_read_wim_info(const xmlNode *wim_node, struct wim_info **wim_info_ret) ERROR("WIM images are not indexed [1...%d] " "in XML data as expected", num_images); - return WIMLIB_ERR_IMAGE_COUNT; + ret = WIMLIB_ERR_IMAGE_COUNT; + goto err; } } @@ -1569,7 +1577,7 @@ write_wim_xml_data(WIMStruct *wim, int image, u64 total_bytes, size_t xml_len; DEBUG("Writing WIM XML data (image=%d, offset=%"PRIu64")", - image, total_bytes, wim->out_fd.offset); + image, wim->out_fd.offset); ret = prepare_wim_xml_data(wim, image, total_bytes, &xml_data, &xml_len);