Skip to content

Commit

Permalink
Fix: query-watchdog: avoid issues on heap allocation failing
Browse files Browse the repository at this point in the history
coverity is moaning either due to slight code rearangement
or new version/settings.
  • Loading branch information
wenningerk committed Jul 21, 2022
1 parent c43276f commit cfcba33
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion src/sbd-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -385,8 +385,17 @@ watchdog_populate_list(void)
struct link_list_item *lli =
calloc(1, sizeof(struct link_list_item));

if (lli == NULL) {
break;
}
lli->dev_node = strdup(buf);
lli->link_name = strdup(entry_name);
if ((lli->dev_node == NULL) || (lli->link_name == NULL)) {
free(lli->dev_node);
free(lli->link_name);
free(lli);
break;
}
lli->next = link_list;
link_list = lli;
}
Expand All @@ -404,18 +413,27 @@ watchdog_populate_list(void)
if(!stat(entry_name, &statbuf) && S_ISCHR(statbuf.st_mode) &&
is_watchdog(statbuf.st_rdev)) {

int wdfd = watchdog_init_fd(entry_name, -1);
int wdfd;
struct watchdog_list_item *wdg =
calloc(1, sizeof(struct watchdog_list_item));
int len;
struct link_list_item *tmp_list = NULL;

if (wdg == NULL) {
break;
}

wdg->dev = statbuf.st_rdev;
wdg->dev_node = strdup(entry_name);
if (wdg->dev_node == NULL) {
free(wdg);
break;
}
wdg->next = watchdog_list;
watchdog_list = wdg;
watchdog_list_items++;

wdfd = watchdog_init_fd(entry_name, -1);
if (wdfd >= 0) {
struct watchdog_info ident;

Expand Down Expand Up @@ -450,11 +468,18 @@ watchdog_populate_list(void)
struct watchdog_list_item *dupe_wdg =
calloc(1, sizeof(struct watchdog_list_item));

if (dupe_wdg == NULL) {
break;
}
/* as long as we never purge watchdog_list
* there is no need to dupe strings
*/
*dupe_wdg = *wdg;
dupe_wdg->dev_node = strdup(tmp_list->link_name);
if (dupe_wdg->dev_node == NULL) {
free(dupe_wdg);
break;
}
dupe_wdg->next = watchdog_list;
watchdog_list = dupe_wdg;
watchdog_list_items++;
Expand Down

0 comments on commit cfcba33

Please sign in to comment.