Skip to content

Commit e343ace

Browse files
committed
fix clang-scan complaints
Signed-off-by: Stephan Mueller <smueller@chronox.de>
1 parent 66f6eff commit e343ace

File tree

1 file changed

+39
-20
lines changed

1 file changed

+39
-20
lines changed

apps/src/sbkeysync.c

Lines changed: 39 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -550,17 +550,20 @@ static int read_filesystem_keydb(struct sync_context *ctx,
550550

551551
static int read_keysets(struct sync_context *ctx)
552552
{
553-
read_firmware_keydb(ctx, &ctx->firmware_keys->pk);
554-
read_firmware_keydb(ctx, &ctx->firmware_keys->kek);
555-
read_firmware_keydb(ctx, &ctx->firmware_keys->db);
556-
read_firmware_keydb(ctx, &ctx->firmware_keys->dbx);
553+
int ret;
557554

558-
read_filesystem_keydb(ctx, &ctx->filesystem_keys->pk);
559-
read_filesystem_keydb(ctx, &ctx->filesystem_keys->kek);
560-
read_filesystem_keydb(ctx, &ctx->filesystem_keys->db);
561-
read_filesystem_keydb(ctx, &ctx->filesystem_keys->dbx);
555+
CKINT(read_firmware_keydb(ctx, &ctx->firmware_keys->pk));
556+
CKINT(read_firmware_keydb(ctx, &ctx->firmware_keys->kek));
557+
CKINT(read_firmware_keydb(ctx, &ctx->firmware_keys->db));
558+
CKINT(read_firmware_keydb(ctx, &ctx->firmware_keys->dbx));
562559

563-
return 0;
560+
CKINT(read_filesystem_keydb(ctx, &ctx->filesystem_keys->pk));
561+
CKINT(read_filesystem_keydb(ctx, &ctx->filesystem_keys->kek));
562+
CKINT(read_filesystem_keydb(ctx, &ctx->filesystem_keys->db));
563+
CKINT(read_filesystem_keydb(ctx, &ctx->filesystem_keys->dbx));
564+
565+
out:
566+
return ret;
564567
}
565568

566569
static int check_pk(struct sync_context *ctx)
@@ -667,9 +670,15 @@ static int update_keystore(struct fs_keystore *keystore, const char *root)
667670

668671
ke = calloc(1, sizeof(struct fs_keystore_entry));
669672
CKNULL(ke, -ENOMEM);
673+
LIST_ENTRY_INIT(ke->keystore_list);
674+
LIST_ENTRY_INIT(ke->new_list);
670675
len = strlen(name) + 1;
671676
name_tmp = calloc(1, len);
672-
CKNULL(name_tmp, -ENOMEM);
677+
if (!name_tmp) {
678+
free(ke);
679+
ret = -ENOMEM;
680+
goto out;
681+
}
673682
snprintf(name_tmp, len, "%s", name);
674683
ke->name = name_tmp;
675684
ke->root = root;
@@ -955,18 +964,25 @@ static void version(void)
955964
fprintf(stderr, "%s\n", version);
956965
}
957966

958-
static void add_keystore_dir(struct sync_context *ctx, const char *dir)
967+
static int add_keystore_dir(struct sync_context *ctx, const char *dir)
959968
{
969+
int ret = 0;
970+
960971
if (!ctx->keystore_dirs) {
961-
ctx->keystore_dirs = calloc(1, sizeof(uintptr_t));
972+
ctx->keystore_dirs = calloc(1, sizeof(char *));
973+
CKNULL(ctx->keystore_dirs, -ENOMEM);
962974
ctx->n_keystore_dirs++;
963975
} else {
964976
ctx->keystore_dirs = realloc(
965977
ctx->keystore_dirs,
966-
++ctx->n_keystore_dirs * sizeof(uintptr_t));
978+
++ctx->n_keystore_dirs * sizeof(char *));
979+
CKNULL(ctx->keystore_dirs, -ENOMEM);
967980
}
968981

969982
ctx->keystore_dirs[ctx->n_keystore_dirs - 1] = strdup(dir);
983+
984+
out:
985+
return ret;
970986
}
971987

972988

@@ -1015,9 +1031,10 @@ static void release_ctx(struct sync_context *ctx)
10151031

10161032
if (ctx->filesystem_keys) {
10171033
for (i = 0; i < ARRAY_SIZE(kdbs); i++ ) {
1018-
struct key *key;
1034+
struct key *key, *tmp_key;
10191035

1020-
list_for_each(key, &kdbs[i].fs_kdb->keys, list) {
1036+
list_for_each_guarded(key, tmp_key,
1037+
&kdbs[i].fs_kdb->keys, list) {
10211038
release_key(key);
10221039
}
10231040
}
@@ -1038,6 +1055,7 @@ int main(int argc, char **argv)
10381055

10391056
use_default_keystore_dirs = true;
10401057
ctx = calloc(1, sizeof(struct sync_context));
1058+
CKNULL(ctx, -ENOMEM);
10411059
LIST_ENTRY_INIT(ctx->new_keys);
10421060

10431061
for (;;) {
@@ -1054,7 +1072,7 @@ int main(int argc, char **argv)
10541072
use_default_keystore_dirs = false;
10551073
break;
10561074
case 'k':
1057-
add_keystore_dir(ctx, optarg);
1075+
CKINT(add_keystore_dir(ctx, optarg));
10581076
break;
10591077
case 'p':
10601078
ctx->set_pk = true;
@@ -1076,7 +1094,8 @@ int main(int argc, char **argv)
10761094

10771095
if (argc != optind) {
10781096
usage();
1079-
return EXIT_FAILURE;
1097+
ret = -EINVAL;
1098+
goto out;
10801099
}
10811100

10821101
ctx->filesystem_keys = init_keyset();
@@ -1098,12 +1117,12 @@ int main(int argc, char **argv)
10981117
add_keystore_dir(ctx, default_keystore_dirs[i]);
10991118
}
11001119

1101-
read_keystore(ctx);
1120+
CKINT(read_keystore(ctx));
11021121

11031122
if (ctx->verbose)
11041123
print_keystore(ctx->fs_keystore);
11051124

1106-
read_keysets(ctx);
1125+
CKINT(read_keysets(ctx));
11071126
if (ctx->verbose) {
11081127
print_keyset(ctx->firmware_keys, "firmware");
11091128
print_keyset(ctx->filesystem_keys, "filesystem");
@@ -1112,7 +1131,7 @@ int main(int argc, char **argv)
11121131
if (check_pk(ctx))
11131132
fprintf(stderr, "WARNING: multiple PKs found in filesystem\n");
11141133

1115-
find_new_keys(ctx);
1134+
CKINT(find_new_keys(ctx));
11161135

11171136
if (ctx->verbose)
11181137
print_new_keys(ctx);

0 commit comments

Comments
 (0)