diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 306f54e7ea..67baaae2e1 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -4016,11 +4016,16 @@ char *sofia_glue_execute_sql2str(sofia_profile_t *profile, switch_mutex_t *mutex while (running < 5000) { int result = switch_core_db_step(stmt); + const unsigned char *txt; if (result == SWITCH_CORE_DB_ROW) { - if ((colcount = switch_core_db_column_count(stmt))) { - switch_copy_string(resbuf, (char *) switch_core_db_column_text(stmt, 0), len); - ret = resbuf; + if ((colcount = switch_core_db_column_count(stmt)) > 0) { + if ((txt = switch_core_db_column_text(stmt, 0))) { + switch_copy_string(resbuf, (char *) txt, len); + ret = resbuf; + } else { + goto fail; + } } break; } else if (result == SWITCH_CORE_DB_BUSY) { diff --git a/src/switch_core_db.c b/src/switch_core_db.c index 863425139e..e675569aa5 100644 --- a/src/switch_core_db.c +++ b/src/switch_core_db.c @@ -57,7 +57,14 @@ SWITCH_DECLARE(int) switch_core_db_close(switch_core_db_t *db) SWITCH_DECLARE(const unsigned char *) switch_core_db_column_text(switch_core_db_stmt_t *stmt, int iCol) { - return sqlite3_column_text(stmt, iCol); + const unsigned char *txt = sqlite3_column_text(stmt, iCol); + + if (txt && !strcasecmp((char *)txt, "(null)")) { + txt = NULL; + } + + return txt; + } SWITCH_DECLARE(const char *) switch_core_db_column_name(switch_core_db_stmt_t *stmt, int N)