From 40b5cf8f522347a75743f4e6a93ec55cbe9494f7 Mon Sep 17 00:00:00 2001
From: Sean Bright <sean.bright@gmail.com>
Date: Wed, 18 Dec 2019 10:13:21 -0500
Subject: [PATCH] config.c: Skip UTF-8 BOMs if present when reading config
 files

ASTERISK-28667 #close

Change-Id: I4767ed365c98f3e1587b7653321048a31d8a53b2
---
 main/config.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/main/config.c b/main/config.c
index 002ae2fc99..d5dd93c4fd 100644
--- a/main/config.c
+++ b/main/config.c
@@ -2219,6 +2219,18 @@ static struct ast_config *config_text_file_load(const char *database, const char
 							continue;
 						}
 
+						/* If there is a UTF-8 BOM, skip over it */
+						if (lineno == 1) {
+#define UTF8_BOM "\xEF\xBB\xBF"
+							size_t line_bytes = strlen(buf);
+							size_t bom_bytes = sizeof(UTF8_BOM) - 1;
+							if (line_bytes >= bom_bytes
+							   && !memcmp(buf, UTF8_BOM, bom_bytes)) {
+								memmove(buf, &buf[bom_bytes], line_bytes - bom_bytes + 1);
+							}
+#undef UTF8_BOM
+						}
+
 						if (ast_test_flag(&flags, CONFIG_FLAG_WITHCOMMENTS)
 							&& lline_buffer
 							&& ast_str_strlen(lline_buffer)) {
-- 
GitLab