diff --git a/lib/init.c b/lib/init.c index b5a98c3f..d0c7a5c2 100644 --- a/lib/init.c +++ b/lib/init.c @@ -53,6 +53,9 @@ static int sensors_parse(void) locale = setlocale(LC_ALL, NULL); if (locale) { locale = strdup(locale); + if (!locale) + sensors_fatal_error(__func__, "Out of memory"); + setlocale(LC_ALL, "C"); } diff --git a/lib/sysfs.c b/lib/sysfs.c index 4c383eb5..0dd0afcc 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -188,9 +188,14 @@ char *get_feature_name(sensors_feature_type ftype, char *sfname) case SENSORS_FEATURE_CURR: underscore = strchr(sfname, '_'); name = strndup(sfname, underscore - sfname); + if (!name) + sensors_fatal_error(__func__, "Out of memory"); + break; default: name = strdup(sfname); + if (!name) + sensors_fatal_error(__func__, "Out of memory"); } return name; @@ -419,6 +424,9 @@ static int sensors_read_dynamic_chip(sensors_chip_features *chip, /* fill in the subfeature members */ all_subfeatures[i].type = sftype; all_subfeatures[i].name = strdup(name); + if (!all_subfeatures[i].name) + sensors_fatal_error(__func__, "Out of memory"); + if (!(sftype & 0x80)) all_subfeatures[i].flags |= SENSORS_COMPUTE_MAPPING; all_subfeatures[i].flags |= sensors_get_attr_mode(dev_path, name);