diff --git a/src/sbbs3/scfg/scfgmsg.c b/src/sbbs3/scfg/scfgmsg.c
index 5a5f5a0c08f6388fa2040f0c9024faed9d91c03f..5682d6327b44990efa00442ecf550bd329166ff6 100644
--- a/src/sbbs3/scfg/scfgmsg.c
+++ b/src/sbbs3/scfg/scfgmsg.c
@@ -132,6 +132,7 @@ static bool new_grp(unsigned new_grpnum)
 
 	grp_t** new_grp_list;
 	if ((new_grp_list = (grp_t **)realloc(cfg.grp, sizeof(grp_t *)*(cfg.total_grps + 1))) == NULL) {
+		free(new_group);
 		errormsg(WHERE, ERR_ALLOC, "group list", cfg.total_grps + 1);
 		return false;
 	}