Skip to content
Snippets Groups Projects
Commit b1765c93 authored by Naveen Albert's avatar Naveen Albert Committed by Kevin Harwell
Browse files

func_db: Add validity check for key names when writing.

Adds a simple sanity check for key names when users are
writing data to AstDB. This captures four cases indicating
malformed keynames that generally result in bad data going
into the DB that the user didn't intend: an empty key name,
a key name beginning or ending with a slash, and a key name
containing two slashes in a row. Generally, this is the
result of a variable being used in the key name being empty.

If a malformed key name is detected, a warning is emitted
to indicate the bug in the dialplan.

ASTERISK-29925 #close

Change-Id: Ifc08a9fe532a519b1b80caca1aafed7611d573bf
parent 4722c8b7
No related branches found
No related tags found
3 merge requests!138Merge branch asterisk-20.3.0 into devel properly,!123Merge asterisk '20.3.0' into devel,!118Draft: manager: AOC-S support for AOCMessage
......@@ -173,7 +173,13 @@ static int function_db_write(struct ast_channel *chan, const char *cmd, char *pa
ast_log(LOG_WARNING, "DB requires an argument, DB(<family>/<key>)=value\n");
return -1;
}
/*
* When keynames are dynamically created using variables, if the variable is empty, this put bad data into the DB.
* In particular, a few cases: an empty key name, a key starting or ending with a /, and a key containing // two slashes.
* If this happens, allow it to go in, but warn the user of the issue and possible data corruption. */
if (ast_strlen_zero(args.key) || args.key[0] == '/' || args.key[strlen(args.key) - 1] == '/' || strstr(args.key, "//")) {
ast_log(LOG_WARNING, "DB: key '%s' seems malformed\n", args.key);
}
if (ast_db_put(args.family, args.key, value)) {
ast_log(LOG_WARNING, "DB: Error writing value to database.\n");
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment