diff options
| author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2026-07-10 17:09:58 +0200 |
|---|---|---|
| committer | Sander Vrijders <sander@ouroboros.rocks> | 2026-07-19 11:44:35 +0200 |
| commit | ad55e2710a020c0dbdd403040ec19c651efbf3e4 (patch) | |
| tree | 2a42a41269f1c2c847f9d2aee631ad2a753276cf /src/irmd | |
| parent | 395c084c54bc57cad618aea430afd06ce24d356b (diff) | |
| download | ouroboros-ad55e2710a020c0dbdd403040ec19c651efbf3e4.tar.gz ouroboros-ad55e2710a020c0dbdd403040ec19c651efbf3e4.zip | |
irmd: Fix strdup error checks in registry
reg_proc_add_name() and reg_prog_add_name() checked the already
validated entry pointer instead of the fresh strdup.
Found by gcc static analyzer.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'src/irmd')
| -rw-r--r-- | src/irmd/reg/name.c | 2 | ||||
| -rw-r--r-- | src/irmd/reg/proc.c | 3 | ||||
| -rw-r--r-- | src/irmd/reg/prog.c | 3 |
3 files changed, 6 insertions, 2 deletions
diff --git a/src/irmd/reg/name.c b/src/irmd/reg/name.c index 61a328ec..a3621fc3 100644 --- a/src/irmd/reg/name.c +++ b/src/irmd/reg/name.c @@ -157,6 +157,8 @@ static struct prog_entry * __reg_name_get_prog(const struct reg_name * name, llist_for_each(p, &name->progs) { struct prog_entry * entry; entry = list_entry(p, struct prog_entry, next); + assert(entry->exec != NULL); + assert(entry->exec[0] != NULL); if (strcmp(entry->exec[0], prog) == 0) return entry; } diff --git a/src/irmd/reg/proc.c b/src/irmd/reg/proc.c index 8a7e24c9..94ac6b8f 100644 --- a/src/irmd/reg/proc.c +++ b/src/irmd/reg/proc.c @@ -119,6 +119,7 @@ static struct name_entry * __reg_proc_get_name(const struct reg_proc * proc, llist_for_each(p, &proc->names) { struct name_entry * entry; entry = list_entry(p, struct name_entry, next); + assert(entry->name != NULL); if (strcmp(entry->name, name) == 0) return entry; } @@ -140,7 +141,7 @@ int reg_proc_add_name(struct reg_proc * proc, } entry->name = strdup(name); - if (entry == NULL) { + if (entry->name == NULL) { log_err("Failed to strdup name."); goto fail_name; } diff --git a/src/irmd/reg/prog.c b/src/irmd/reg/prog.c index 2d7f9f8d..1e977c89 100644 --- a/src/irmd/reg/prog.c +++ b/src/irmd/reg/prog.c @@ -107,6 +107,7 @@ static struct name_entry * __reg_prog_get_name(const struct reg_prog * prog, llist_for_each(p, &prog->names) { struct name_entry * entry; entry = list_entry(p, struct name_entry, next); + assert(entry->name != NULL); if (strcmp(entry->name, name) == 0) return entry; } @@ -128,7 +129,7 @@ int reg_prog_add_name(struct reg_prog * prog, } entry->name = strdup(name); - if (entry == NULL) { + if (entry->name == NULL) { log_err("Failed to strdup name."); goto fail_name; } |
