From: Sean Bright Date: Wed, 18 Dec 2019 15:13:21 +0000 (-0500) Subject: config.c: Skip UTF-8 BOMs if present when reading config files X-Git-Tag: 17.2.0-rc1~41^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c8989f205b24e13c038046d90dff7321b42748b;p=thirdparty%2Fasterisk.git config.c: Skip UTF-8 BOMs if present when reading config files ASTERISK-28667 #close Change-Id: I4767ed365c98f3e1587b7653321048a31d8a53b2 --- 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)) {