Пишет не больше capacity; проверяйте return на усечение/ошибку.
Разбор
- return ≥ sz → truncate.
- Не sprintf.
- Проверяйте склейку путей.
- Capacity всегда явен.
Пример
int n=snprintf(b,sizeof b,"%s",s);
if(n<0||(size_t)n>=sizeof b){}
Итог
Ограниченный вывод + проверка возврата.