futility: update: support multi-line quirks

To support loading quirks from external files, we want to skip tab (\t)
and new line characters (\n, \r).

BRANCH=none
BUG=b:169284414
TEST=make runtests

Change-Id: If314d6cf36907837ce9c36b73337976ee0c6fad1
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2467305
Reviewed-by: Karthikeyan Ramasubramanian <kramasub@chromium.org>
Commit-Queue: Karthikeyan Ramasubramanian <kramasub@chromium.org>
diff --git a/futility/updater.c b/futility/updater.c
index 8048a5b..3e3dce2 100644
--- a/futility/updater.c
+++ b/futility/updater.c
@@ -188,14 +188,18 @@
 	int r = 0;
 	char *buf = strdup(quirks);
 	char *token;
+	const char *delimiters = ", \n\r\t";
 
-	token = strtok(buf, ", ");
-	for (; token; token = strtok(NULL, ", ")) {
+	token = strtok(buf, delimiters);
+	for (; token; token = strtok(NULL, delimiters)) {
 		const char *name = token;
 		char *equ = strchr(token, '=');
 		int i, value = 1;
 		struct quirk_entry *entry = cfg->quirks;
 
+		if (!*name)
+			continue;
+
 		if (equ) {
 			*equ = '\0';
 			value = strtol(equ + 1, NULL, 0);
diff --git a/tests/futility/test_update.sh b/tests/futility/test_update.sh
index 57b3f46..655bab4 100755
--- a/tests/futility/test_update.sh
+++ b/tests/futility/test_update.sh
@@ -327,6 +327,11 @@
 	"${FROM_IMAGE}.large" "${TMP}.expected.large" --quirks enlarge_image \
 	-i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1
 
+test_update "Full update (multi-line --quirks enlarge_image)" \
+	"${FROM_IMAGE}.large" "${TMP}.expected.large" --quirks '
+	enlarge_image
+	' -i "${TO_IMAGE}" --wp=0 --sys_props 0,0x10001,1
+
 test_update "Full update (--quirks unlock_me_for_update)" \
 	"${FROM_IMAGE}" "${TMP}.expected.me_unlocked" \
 	--quirks unlock_me_for_update \