From 6ceb4c25fbe230674516759e3c6308f12207c8b4 Mon Sep 17 00:00:00 2001 From: Sean Bright 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 8731ebb40d..b325781700 100644 --- a/main/config.c +++ b/main/config.c @@ -2223,6 +2223,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)) {