X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=lib%2Fpb-protocol%2Fpb-protocol.c;h=cf27b8ec49c35ff47bfdfff00cc43f36e9f06015;hb=a83a614d94b09d063d56bf28be6f9dd0d0e22854;hp=5a1cee7a417bc648e883a0c3020f0c42c640430d;hpb=b955fa07fc256b39caedb311f97fed404a63c8d5;p=petitboot diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index 5a1cee7..cf27b8e 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -279,7 +279,7 @@ int pb_protocol_config_len(const struct config *config) len += 4 + optional_strlen(config->network.dns_servers[i]); len += 4; - len += config->n_boot_priorities * 4; + len += config->n_boot_priorities * 8; return len; } @@ -464,7 +464,11 @@ int pb_protocol_serialise_config(const struct config *config, *(uint32_t *)pos = __cpu_to_be32(config->n_boot_priorities); pos += 4; for (i = 0; i < config->n_boot_priorities; i++) { - *(uint32_t *)pos = __cpu_to_be32(config->boot_priorities[i].type); + *(uint32_t *)pos = + __cpu_to_be32(config->boot_priorities[i].type); + pos += 4; + *(uint32_t *)pos = + __cpu_to_be32(config->boot_priorities[i].priority); pos += 4; } @@ -886,6 +890,9 @@ int pb_protocol_deserialise_config(struct config *config, config->n_boot_priorities); for (i = 0; i < config->n_boot_priorities; i++) { + if (read_u32(&pos, &len, &tmp)) + goto out; + config->boot_priorities[i].priority = (int)tmp; if (read_u32(&pos, &len, &tmp)) goto out; config->boot_priorities[i].type = tmp;