mirror of
https://github.com/switchbrew/switch-tools.git
synced 2025-07-03 02:22:15 +02:00
Add support for hex string kernel version.
This commit is contained in:
parent
a349f39bf4
commit
ea142bca3c
@ -401,10 +401,15 @@ int ParseKipConfiguration(const char *json, KipHeader *kip_hdr) {
|
||||
status = 0;
|
||||
goto PARSE_CAPS_END;
|
||||
}
|
||||
if (!cJSON_GetU16FromObjectValue(value, (u16 *)&desc)) {
|
||||
u64 kern_ver = 0;
|
||||
if (cJSON_IsNumber(value)) {
|
||||
kern_ver = (u64)value->valueint;
|
||||
} else if (!cJSON_IsString(value) || !cJSON_GetU64FromObjectValue(value, &kern_ver)) {
|
||||
fprintf(stderr, "Error: Kernel version must be integer or hex strings.\n");
|
||||
status = 0;
|
||||
goto PARSE_CAPS_END;
|
||||
}
|
||||
desc = (kern_ver) & 0xFFFF;
|
||||
kip_hdr->Capabilities[cur_cap++] = (u32)((desc << 15) | (0x3FFF));
|
||||
} else if (!strcmp(type_str, "handle_table_size")) {
|
||||
if (cur_cap + 1 > 0x20) {
|
||||
|
@ -539,10 +539,15 @@ int CreateNpdm(const char *json, void **dst, u32 *dst_size) {
|
||||
desc &= 7;
|
||||
caps[cur_cap++] = (u32)((desc << 14) | (0x1FFF));
|
||||
} else if (!strcmp(type_str, "min_kernel_version")) {
|
||||
if (!cJSON_GetU16FromObjectValue(value, (u16 *)&desc)) {
|
||||
u64 kern_ver = 0;
|
||||
if (cJSON_IsNumber(value)) {
|
||||
kern_ver = (u64)value->valueint;
|
||||
} else if (!cJSON_IsString(value) || !cJSON_GetU64FromObjectValue(value, &kern_ver)) {
|
||||
fprintf(stderr, "Error: Kernel version must be integer or hex strings.\n");
|
||||
status = 0;
|
||||
goto NPDM_BUILD_END;
|
||||
}
|
||||
desc = (kern_ver) & 0xFFFF;
|
||||
caps[cur_cap++] = (u32)((desc << 15) | (0x3FFF));
|
||||
} else if (!strcmp(type_str, "handle_table_size")) {
|
||||
if (!cJSON_GetU16FromObjectValue(value, (u16 *)&desc)) {
|
||||
|
Loading…
Reference in New Issue
Block a user