summaryrefslogtreecommitdiff
path: root/src/core/special-vars.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/special-vars.c')
-rw-r--r--src/core/special-vars.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/core/special-vars.c b/src/core/special-vars.c
index 6ca080fc..aaf8da8f 100644
--- a/src/core/special-vars.c
+++ b/src/core/special-vars.c
@@ -275,6 +275,8 @@ static char *get_special_value(char **cmd, SERVER_REC *server, void *item,
static int get_alignment_args(char **data, int *align, int *flags, char *pad)
{
char *str;
+ char *endptr;
+ guint align_;
*align = 0;
*flags = ALIGN_CUT|ALIGN_PAD;
@@ -295,10 +297,11 @@ static int get_alignment_args(char **data, int *align, int *flags, char *pad)
return FALSE; /* expecting number */
/* get the alignment size */
- while (i_isdigit(*str)) {
- *align = (*align) * 10 + (*str-'0');
- str++;
+ if (!parse_uint(str, &endptr, 10, &align_)) {
+ return FALSE;
}
+ str = endptr;
+ *align = align_;
/* get the pad character */
while (*str != '\0' && *str != ']') {