As pointed by Alex while strl{cat,cpy} take the full length
we need to leave space to ensure a proper mask is always created
so revert the removal of - N from my last change.
if (!at && !excl) {
/* Neither "!" nor "@" found: use string as nickname */
if (!at && !excl) {
/* Neither "!" nor "@" found: use string as nickname */
- strlcpy(mask, Pattern, len);
+ strlcpy(mask, Pattern, len - 5);
strlcat(mask, "!*@*", len);
} else if (!at && excl) {
/* Domain part is missing */
strlcat(mask, "!*@*", len);
} else if (!at && excl) {
/* Domain part is missing */
- strlcpy(mask, Pattern, len);
+ strlcpy(mask, Pattern, len - 3);
strlcat(mask, "@*", len);
} else if (at && !excl) {
/* User name is missing */
*at = '\0'; at++;
strlcat(mask, "@*", len);
} else if (at && !excl) {
/* User name is missing */
*at = '\0'; at++;
- strlcpy(mask, Pattern, len);
+ strlcpy(mask, Pattern, len - 5);
strlcat(mask, "!*@", len);
strlcat(mask, at, len);
} else {
strlcat(mask, "!*@", len);
strlcat(mask, at, len);
} else {