Fix issues in config parser relating to lun serial numbers.

Without this fix some serial numbers needed to be quoted
to avoid the config parser bailing out.

Submitted by:	delphij
Sponsored by:	iXsystems
This commit is contained in:
jpaetzel 2014-06-24 19:12:55 +00:00
parent b76205207d
commit 3211f93c4b
2 changed files with 16 additions and 2 deletions

View File

@ -659,6 +659,19 @@ lun_serial: SERIAL STR
} }
lun_set_serial(lun, $2); lun_set_serial(lun, $2);
free($2); free($2);
} | SERIAL NUM
{
char *str = NULL;
if (lun->l_serial != NULL) {
log_warnx("serial for lun %d, target \"%s\" "
"specified more than once",
lun->l_lun, target->t_name);
return (1);
}
asprintf(&str, "%ju", $2);
lun_set_serial(lun, str);
free(str);
} }
; ;

View File

@ -74,8 +74,9 @@ target { return TARGET; }
timeout { return TIMEOUT; } timeout { return TIMEOUT; }
[0-9]+[kKmMgGtTpPeE]? { if (expand_number(yytext, &yylval.num) == 0) [0-9]+[kKmMgGtTpPeE]? { if (expand_number(yytext, &yylval.num) == 0)
return NUM; return NUM;
else else {
return STR; yylval.str = strdup(yytext); return STR;
}
} }
\"[^"]+\" { yylval.str = strndup(yytext + 1, \"[^"]+\" { yylval.str = strndup(yytext + 1,
strlen(yytext) - 2); return STR; } strlen(yytext) - 2); return STR; }