From e06bb85ad3f8683aa7d83f477167e2f33a85cbfa Mon Sep 17 00:00:00 2001 From: Sean Bright Date: Mon, 5 Jun 2023 10:49:11 -0400 Subject: [PATCH] res_crypto.c: Gracefully handle potential key filename truncation. Partially resolves #143. --- res/res_crypto.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/res/res_crypto.c b/res/res_crypto.c index 838e3a3de3..41ca143331 100644 --- a/res/res_crypto.c +++ b/res/res_crypto.c @@ -196,7 +196,14 @@ static struct ast_key *try_load_key(const char *dir, const char *fname, int ifd, } /* Get actual filename */ - snprintf(ffname, sizeof(ffname), "%s/%s", dir, fname); + n = snprintf(ffname, sizeof(ffname), "%s/%s", dir, fname); + if (n >= sizeof(ffname)) { + ast_log(LOG_WARNING, + "Key filenames can be up to %zu bytes long, but the filename for the" + " key we are currently trying to load (%s/%s) is %d bytes long.", + sizeof(ffname) - 1, dir, fname, n); + return NULL; + } /* Open file */ if (!(f = fopen(ffname, "r"))) {