Index: head/sys/geom/label/g_label.c =================================================================== --- head/sys/geom/label/g_label.c +++ head/sys/geom/label/g_label.c @@ -200,6 +200,7 @@ struct g_provider *pp2; struct g_consumer *cp; char name[64]; + int n; g_topology_assert(); @@ -213,7 +214,12 @@ } gp = NULL; cp = NULL; - snprintf(name, sizeof(name), "%s/%s", dir, label); + n = snprintf(name, sizeof(name), "%s/%s", dir, label); + if (n >= sizeof(name)) { + if (req != NULL) + gctl_error(req, "Label name %s is too long.", label); + return (NULL); + } LIST_FOREACH(gp, &mp->geom, geom) { pp2 = LIST_FIRST(&gp->provider); if (pp2 == NULL)