Fix sqlite config driver segfault and broken queries
authorWalter Doekes <walter+asterisk@wjd.nu>
Thu, 3 Nov 2011 20:37:50 +0000 (20:37 +0000)
committerWalter Doekes <walter+asterisk@wjd.nu>
Thu, 3 Nov 2011 20:37:50 +0000 (20:37 +0000)
The sqlite realtime handler assumed you had a static config configured
as well. The realtime multientry handler assumed that you weren't using
dynamic realtime.

(closes issue ASTERISK-18354)
(closes issue ASTERISK-18355)

Review: https://reviewboard.asterisk.org/r/1561
........

Merged revisions 343375 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 343393 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@343394 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_config_sqlite.c

index b5b8de4..d43c32b 100644 (file)
@@ -1055,7 +1055,7 @@ static struct ast_variable * realtime_handler(const char *database, const char *
 #define QUERY "SELECT * FROM '%q' WHERE%s %q%s '%q'"
 /* \endcond */
 
-       query = sqlite_mprintf(QUERY, table, !strcmp(config_table, table) ? " commented = 0 AND" : "", params[0], op, vals[0]);
+       query = sqlite_mprintf(QUERY, table, (config_table && !strcmp(config_table, table)) ? " commented = 0 AND" : "", params[0], op, vals[0]);
 
        if (!query) {
                ast_log(LOG_WARNING, "Unable to allocate SQL query\n");
@@ -1216,10 +1216,10 @@ static struct ast_config *realtime_multi_handler(const char *database,
 
 /* \cond DOXYGEN_CAN_PARSE_THIS */
 #undef QUERY
-#define QUERY "SELECT * FROM '%q' WHERE commented = 0 AND %q%s '%q'"
+#define QUERY "SELECT * FROM '%q' WHERE%s %q%s '%q'"
 /* \endcond */
 
-       if (!(query = sqlite_mprintf(QUERY, table, params[0], op, tmp_str))) {
+       if (!(query = sqlite_mprintf(QUERY, table, (config_table && !strcmp(config_table, table)) ? " commented = 0 AND" : "", params[0], op, tmp_str))) {
                ast_log(LOG_WARNING, "Unable to allocate SQL query\n");
                ast_config_destroy(cfg);
                ast_free(params);