1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2024-12-22 17:34:18 +03:00

storage_file_probe: Remove BACKING_STORE_OK,BACKING_STORE_INVALID states

Replace the return values by 0 because none of the callers care and some
of the backing store parser functions return this state also in cases
the rest of the code would consider as success.

Subsequently the parsers will be refactored and proper error reporting
returned.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2023-11-24 09:26:39 +01:00
parent 943c5758b0
commit 60df39abc8

View File

@ -43,11 +43,6 @@ enum lv_endian {
LV_BIG_ENDIAN /* 4321 */
};
enum {
BACKING_STORE_OK,
BACKING_STORE_INVALID,
};
#define FILE_TYPE_VERSIONS_LAST 3
struct FileEncryptionInfo {
@ -382,14 +377,14 @@ cowGetBackingStore(char **res,
*format = VIR_STORAGE_FILE_AUTO;
if (buf_size < 4+4+ COW_FILENAME_MAXLEN)
return BACKING_STORE_INVALID;
return 0;
if (buf[4+4] == '\0') { /* cow_header_v2.backing_file[0] */
*format = VIR_STORAGE_FILE_NONE;
return BACKING_STORE_OK;
return 0;
}
*res = g_strndup((const char *)buf + 4 + 4, COW_FILENAME_MAXLEN);
return BACKING_STORE_OK;
return 0;
}
@ -527,34 +522,34 @@ qcowXGetBackingStore(char **res,
*format = VIR_STORAGE_FILE_AUTO;
if (buf_size < QCOWX_HDR_BACKING_FILE_OFFSET+8+4)
return BACKING_STORE_INVALID;
return 0;
offset = virReadBufInt64BE(buf + QCOWX_HDR_BACKING_FILE_OFFSET);
if (offset > buf_size)
return BACKING_STORE_INVALID;
return 0;
if (offset == 0) {
*format = VIR_STORAGE_FILE_NONE;
return BACKING_STORE_OK;
return 0;
}
size = virReadBufInt32BE(buf + QCOWX_HDR_BACKING_FILE_SIZE);
if (size == 0) {
*format = VIR_STORAGE_FILE_NONE;
return BACKING_STORE_OK;
return 0;
}
if (size > 1023)
return BACKING_STORE_INVALID;
return 0;
if (offset + size > buf_size || offset + size < offset)
return BACKING_STORE_INVALID;
return 0;
*res = g_new0(char, size + 1);
memcpy(*res, buf + offset, size);
(*res)[size] = '\0';
if (qcow2GetExtensions(buf, buf_size, format) < 0)
return BACKING_STORE_INVALID;
return 0;
return BACKING_STORE_OK;
return 0;
}
@ -582,7 +577,7 @@ vmdk4GetBackingStore(char **res,
*format = VIR_STORAGE_FILE_AUTO;
if (buf_size <= 0x200)
return BACKING_STORE_INVALID;
return 0;
len = buf_size - 0x200;
if (len >= VIR_STORAGE_MAX_HEADER)
@ -592,21 +587,21 @@ vmdk4GetBackingStore(char **res,
start = strstr(desc, prefix);
if (start == NULL) {
*format = VIR_STORAGE_FILE_NONE;
return BACKING_STORE_OK;
return 0;
}
start += strlen(prefix);
end = strchr(start, '"');
if (end == NULL)
return BACKING_STORE_INVALID;
return 0;
if (end == start) {
*format = VIR_STORAGE_FILE_NONE;
return BACKING_STORE_OK;
return 0;
}
*end = '\0';
*res = g_strdup(start);
return BACKING_STORE_OK;
return 0;
}
static int
@ -621,24 +616,24 @@ qedGetBackingStore(char **res,
*res = NULL;
/* Check if this image has a backing file */
if (buf_size < QED_HDR_FEATURES_OFFSET+8)
return BACKING_STORE_INVALID;
return 0;
flags = virReadBufInt64LE(buf + QED_HDR_FEATURES_OFFSET);
if (!(flags & QED_F_BACKING_FILE)) {
*format = VIR_STORAGE_FILE_NONE;
return BACKING_STORE_OK;
return 0;
}
/* Parse the backing file */
if (buf_size < QED_HDR_BACKING_FILE_OFFSET+8)
return BACKING_STORE_INVALID;
return 0;
offset = virReadBufInt32LE(buf + QED_HDR_BACKING_FILE_OFFSET);
if (offset > buf_size)
return BACKING_STORE_INVALID;
return 0;
size = virReadBufInt32LE(buf + QED_HDR_BACKING_FILE_SIZE);
if (size == 0)
return BACKING_STORE_OK;
return 0;
if (offset + size > buf_size || offset + size < offset)
return BACKING_STORE_INVALID;
return 0;
*res = g_new0(char, size + 1);
memcpy(*res, buf + offset, size);
(*res)[size] = '\0';
@ -648,7 +643,7 @@ qedGetBackingStore(char **res,
else
*format = VIR_STORAGE_FILE_AUTO_SAFE;
return BACKING_STORE_OK;
return 0;
}