{
char *s;
const char *p;
- int quote;
+ int quote, end = 0;
int escape;
unsigned int x;
const FR_NAME_NUMBER*t;
(*p == '\'') ||
(*p == '`')) {
quote = *p;
+ end = 0;
p++;
}
s = buf;
continue;
}
if (quote && (*p == quote)) {
+ end = 1;
p++;
break;
}
}
*s++ = 0;
+ if (quote && !end) {
+ fr_strerror_printf("Unterminated string");
+ return T_OP_INVALID;
+ }
+
/* Skip whitespace again. */
while (*p && isspace((int) *p))
p++;
case T_OP_SET:
do_set:
t3 = getstring(&ptr, buf3, sizeof(buf3));
+ if (t3 == T_OP_INVALID) {
+ radlog(L_ERR, "%s[%d]: Parse error: %s",
+ filename, *lineno,
+ fr_strerror());
+ return -1;
+ }
/*
* Handle variable substitution via ${foo}