X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fefivars.c;h=f18f5c4b16aa4b81057c5e2cbb96f0968f26e1a8;hp=c015b168579ebb25c8eace507c775b572d79a317;hb=f41925b4e442a34c93ad120ef1426c974a047ed1;hpb=62678deda2dcd43954bf02f783da01e48c7f8fce diff --git a/src/shared/efivars.c b/src/shared/efivars.c index c015b1685..f18f5c4b1 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -37,7 +37,7 @@ bool is_efi_boot(void) { static int read_flag(const char *varname) { int r; - void *v; + _cleanup_free_ void *v = NULL; size_t s; uint8_t b; @@ -45,15 +45,11 @@ static int read_flag(const char *varname) { if (r < 0) return r; - if (s != 1) { - r = -EINVAL; - goto finish; - } + if (s != 1) + return -EINVAL; b = *(uint8_t *)v; r = b > 0; -finish: - free(v); return r; } @@ -134,7 +130,7 @@ int efi_get_variable( int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p) { _cleanup_free_ void *s = NULL; - size_t ss; + size_t ss = 0; int r; char *x; @@ -384,8 +380,7 @@ int efi_get_boot_options(uint16_t **options) { list[count ++] = id; } - if (list) - qsort(list, count, sizeof(uint16_t), cmp_uint16); + qsort_safe(list, count, sizeof(uint16_t), cmp_uint16); *options = list; return count; @@ -398,7 +393,7 @@ fail: static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) { _cleanup_free_ char *j = NULL; int r; - uint64_t x; + uint64_t x = 0; assert(name); assert(u); @@ -445,9 +440,6 @@ int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader) { int efi_loader_get_device_part_uuid(sd_id128_t *u) { _cleanup_free_ char *p = NULL; int r, parsed[16]; - unsigned i; - - assert(u); r = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderDevicePartUUID", &p); if (r < 0) @@ -460,8 +452,12 @@ int efi_loader_get_device_part_uuid(sd_id128_t *u) { &parsed[12], &parsed[13], &parsed[14], &parsed[15]) != 16) return -EIO; - for (i = 0; i < ELEMENTSOF(parsed); i++) - u->bytes[i] = parsed[i]; + if (u) { + unsigned i; + + for (i = 0; i < ELEMENTSOF(parsed); i++) + u->bytes[i] = parsed[i]; + } return 0; }