diff --git a/src/common/node_conf.c b/src/common/node_conf.c
index 89d2a6a77fa63d1a0a612e22cf189ad39456eed8..6c970ece1e9a4d70a66f6b52c59187a0a3b04eda 100644
--- a/src/common/node_conf.c
+++ b/src/common/node_conf.c
@@ -489,9 +489,9 @@ extern int build_all_nodeline_info (bool set_bitmap)
 		config_ptr->real_memory = node->real_memory;
 		config_ptr->tmp_disk = node->tmp_disk;
 		config_ptr->weight = node->weight;
-		if (node->feature)
+		if (node->feature && node->feature[0])
 			config_ptr->feature = xstrdup(node->feature);
-		if (node->gres)
+		if (node->gres && node->gres[0])
 			config_ptr->gres = xstrdup(node->gres);
 
 		rc = _build_single_nodeline_info(node, config_ptr);
diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index bddc00b4f30dc37b6a9fbfa5ec6b83840744d1d4..a083a26af1dbf33758e134feb392c5738652508b 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -1132,7 +1132,8 @@ static int _update_node_features(char *node_names, char *features)
 		} else if (tmp_cnt == config_cnt) {
 			/* all nodes changed, update in situ */
 			xfree(config_ptr->feature);
-			config_ptr->feature = xstrdup(features);
+			if (features && features[0])
+				config_ptr->feature = xstrdup(features);
 			build_config_feature_list(config_ptr);
 		} else {
 			/* partial update, split config_record */
@@ -1140,7 +1141,8 @@ static int _update_node_features(char *node_names, char *features)
 			if (first_new == NULL);
 				first_new = new_config_ptr;
 			xfree(new_config_ptr->feature);
-			new_config_ptr->feature     = xstrdup(features);
+			if (features && features[0])
+				new_config_ptr->feature = xstrdup(features);
 			new_config_ptr->node_bitmap = bit_copy(tmp_bitmap);
 			new_config_ptr->nodes = bitmap2node_name(tmp_bitmap);
 
@@ -1205,7 +1207,8 @@ static int _update_node_gres(char *node_names, char *gres)
 		} else if (tmp_cnt == config_cnt) {
 			/* all nodes changed, update in situ */
 			xfree(config_ptr->gres);
-			config_ptr->gres = xstrdup(gres);
+			if (gres && gres[0])
+				config_ptr->gres = xstrdup(gres);
 //FIXME			build_config_feature_list(config_ptr);
 		} else {
 			/* partial update, split config_record */
@@ -1213,7 +1216,8 @@ static int _update_node_gres(char *node_names, char *gres)
 			if (first_new == NULL);
 				first_new = new_config_ptr;
 			xfree(new_config_ptr->gres);
-			new_config_ptr->gres        = xstrdup(gres);
+			if (gres && gres[0])
+				new_config_ptr->gres = xstrdup(gres);
 			new_config_ptr->node_bitmap = bit_copy(tmp_bitmap);
 			new_config_ptr->nodes = bitmap2node_name(tmp_bitmap);